![]() |
|
طباعة محتوى المكون StringGrid - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : طباعة محتوى المكون StringGrid (/showthread.php?tid=11162) |
طباعة محتوى المكون StringGrid - Ibn Battuta - 02-12-2020 السلام عليكم ورحمة الله وبركاته
تم تصميم برنامج صغير بالإعتماد على المساعدات بالموضوع الذي طرحته سابقا https://delphi4arab.net/forum/showthread.php?tid=11127 لم اجد طريقة لطباعة محتوى المكون StringGrid بالـ QuickReport ![]() RE: طباعة محتوى المكون StringGrid - larbiparadox - 05-12-2020 وعليك السلام ورحمة الله وبركاته * بما أنك في البداية ، هذه فرصة لتعلم FastReport ، قبل أن نبدأ حمله و ثبته * لا يختلف كثيرا عن Quickreport نفس المبدأ * في هذا الموضوع أحاول الرد بإختصار على الاهم الامور قبل الدخول صلب الموضوع * توجد عدة دروس على الانترنت من بينها دروس للأستاذ أسامة غزال من الأردن كود : https://www.youtube.com/channel/UC0BnwAyiFtNaJVdZ28zJ70w/playlists← نظرة سريعة عن التقرير : ⇐ من القائمة ندرج frxReport1 ![]() ↤ نضغط مرتين على المكون لفتحه : ![]() ـ رقم 01 عندما نربط المكون بقاعدة البيانات تظهر لنا الجداول مع الحقول ، سنصل إليها لاحقا لشرحها ـ رقم 02 خصائص و أحدات مكون التقرير الموضوع في الصفحة ـ رقم 03 لإدراج المكونات ـ رقم 04 خصائص المكون من نصوص و الأشكال فيها المحذات و تغيير النص و التلوين ...... ـ توجد عدة خصائص هذه الاهم ↤ أول شئ مهم وهو إعداد الصفحة : ![]() ⨞ إعداد الصفحة يخص المبرمج لتغييرها نتبع الخطوات التالية _ 1 _ ضغط باليمين على صفحة التقرير [b]_ 2 _ نضغط على Edit لتظهر الإعدادات [/b][b]_ 3 _ نختار حجم الصفحة حسب القائمة أو تخصيص الحجم [/b][b]_ 4 _ وضعية الصفحة على الطول أو العرض [/b][b]_ 5 _ مسافة الهامش [/b][b]_ 6 _ خصائص أخرى [/b][b]_ 7 _ تقسيم الصفحة لعدة أعمدة ، يمكن إعطاء عرض العمود ، هنا عند طباعة قائمة عند نهاية العمود الاول تنتقل إلى العمود الثاني و عند الانتهاء من الصفحة ينتقل الى الصفحة الموالية [/b][b]_ 8 _ هنا عدة إعدادات من بينها هذه الخاصية التي فيها × مثال صفحة عرضها 10 سنتم و طولها 1 متر ، عند التأشير على هذه العلامة ، طول الورقة يحدد حسب البيانات المعروضة في الصفحة ، مثال كالتي في المتاجر[/b] ↤ مما يتكون التقرير : ![]() ـ 01 هنا لادراج أشرطة التقرير و التي بدورها تتكون من عدة أنواع : * الشريط هو مساحة أو اطار لوضع فيها النصوص و الاشكال و الجداول و يمكننا التحكم في طولها معدا شريط data حسب حجم البيانات ـ 02 هذا الشريط يظهر فقط في بداية الصفحة الاولى كمثال يكتب فيه عنوان التقرير ـ 03 هنا يمكن إستعمال هذا الشريط لفهرس ـ 04 هذا الشريط يظهر في بداية الصفحة ـ 05 هذا الشريط يظهر في نهاية الصفحة ـ 06 هذا الشريط يستعمل في البداية مع شريط data أو أشرطة اخرى و يمكن إستعماله عدة مرات ـ 07 هذا الشريط يستعمل في النهاية مع شريط data أو أشرطة اخرى و يمكن إستعماله عدة مرات ـ 08 هذا الشريط يستعمل مع قواعد البيانات لطباعة جدول لإظهاره على شكل سطور ـ 09 هذا الشريط يستعمل مع قواعد البيانات لطباعة جدول الابن التابع لجدول الاب كل سطر يأتي ورائه عدة خاصة بالإبن لإظهاره على شكل سطور ـ 10 هذا الشريط يستعمل مع قواعد البيانات لطباعة قبل data لتقسيم التقرير الى مجموعات بواسطة الفلترة ـ 11 هذا الشريط يستعمل مع الشريط رقم 10 بعد data يعتبر ذيل المجموعة ـ 12 يساعد هذا الشريط كتابع لأي شريط كمثال لـ data في خصائصه يظهر مع كل سطر أو في النهاية أو يكرر وفق عدد معين ـ 13 نفس الأمور السابقة التي طباعتها من الاعلى إلى الأسفل ، أما الطباعة تكون من اليسار إلى اليمين * ملاحظة الأمور التي ذكرتها هي أمور مختصرة فلكل شريط عدة مهام ← إذا كانت لدينا قاعدة بيانات كيف نظهرها في FastReport : * كل جدول يربط على حدى مثال لدينا DataSource1 التي مربوطة مع ADOTable1 ـ أولا ندرج frxDBDataset1 ونربطه مع DataSource1 التي بدورها مربوطة مع ADOTable1 ![]() ـ رقم 02 لإعادة تسمية الجدول الذي سيظهر في frxReport ، تسمية مساعدة ↤ الأن نضغط مرتين على مكون frxReport لفتحه : ![]() ـ 01 _ نذهب إلى Report ـ 02 _ وبعدها إلى Data ـ 03 _ نأشر على الجداول المراد إظهارها ، مباشرة ستظهر على الشريط العمودي على اليمين ⇐الان إلى الجواب : طباعة StringGrid في [b]frxReport [/b] ـ بما أن StringGrid عبارة جدول لوضع البيانات ، سحتاج إلى مكون لإدراج فية البيانات ندرج frxUserDataSet ، يعتبر مكون من مكونات frxReport غدا سأكمل الموضوع RE: طباعة محتوى المكون StringGrid - Ibn Battuta - 06-12-2020 شكرا جزيلا لك اخي الكريم لعربي تحياتي لك متابع معك ان شاء الله..جزاك الله كل الخير ، لقد توصلت الى كيفية انشاء قاعدة بيانات بالاعتماد على المكون StringGrid بعد عناء طويل امس لغاية الواحدة ليلا ( تم ذلك عن طريق تعبئة مكون clientdataset وربطه مع المكون datasource هكذا يسهل عرض البيانات المراد طباعتها على المكون quickreport بقي لدي مشكل واحد فقط هو دالة formatfloat لم تنجح معي عند سطر المبلغ في قاعدة البيانات اقصد عند طباعة البيانات تظهر المبلغ هكذا 10000 بدلا من 000.00 10 لقد ارفقت لك ما قمت بعمله تفضل البرنامج بالدلفي 7 https://www.sendspace.com/file/0cdvhv RE: طباعة محتوى المكون StringGrid - larbiparadox - 06-12-2020 تابع : ⇐الان إلى الجواب : طباعة StringGrid في [b]frxReport [/b] ـ بما أن StringGrid عبارة جدول لوضع البيانات ، سنحتاج إلى مكون لإدراج فية البيانات ندرج frxUserDataSet ، يعتبر مكون من مكونات frxReport * نقوم بالاعدادات التالية ![]() ـ رقم 01 ندخل أسماء الحقول الافتراضية التي سننقل لها البيانات فبما بعد ـ رقم 02 بعد إدخال أسماء الحقول نضغط على ok ـ رقم 03 تغيير إسم قاعدة البيانات الذي سيظهر في frxReport ، التغيير إختياري * الان إلى إعداد frxReport و ذلك بضغط عليه مرتين لفتحه : ![]() الان frxUserDataSet1 يعتبر قاعدة بيانات لإدراجه نتبع نفس الخطوات التي ذكرتها سابقا * الان ندرج شريط لوضع بيانات رأس الصفحة PageHeader1 نضع فيه عنوان التقرير و أسماء الجداول ![]() ـ رقم 01 من هنا ندرج الشريط الذي إسمه محدد في شكل رقم 2 * الان ندرج شريط data لاظهار سطور الموجودة في grid أو البيانات الموجودة في قاعدة البيانات ![]() ـ رقم 01 من هنا ندرج الشريط الذي إسمه محدد في شكل رقم 2 و رقم 03 إسم قاعدة البيانات التي يجلب منها السطور الان نسحب الحقول من قاعدة البيانات الحقول المراد إظهارها كما هو مبين في الصورة التالية ![]() أو طريقة أخرى لإدراج الحقول ![]() ـ رقم 01 من هنا ندرج مربع النص ، رقم 2 من هنا تظهر لنا عدة خيارات الخاصة بقاعدة البيانات و أخرى ، رقم 3 نضغط مرتين لإختيار الحقل و 4 نضغط ok للتأكيد * رقم 1 من هنا ندرج شريط ذيل الصفحة كما هو مبين إسمه في التوضيح رقم 2 ![]() في الصورة الموالية في للتوضيح ـ رقم 01 من هنا ندرج مربع النص ، رقم 2 نكتب نص و نظيف له الامر الذي يعطينا رقم الصفحة نختار كما هو مبين في توضيح رقم 3 توجد عدة خيارات نختار كما هو موضح في رقم 4 و بعدها ok ![]() هذا مثال بسيط على إعداد صفحة الطباعة ملاحظة : المسافة التي تظهر بين الاشرط لا تظهر أثناء طباعة ، نراها فقط أثناء التصميم فقط ، وهذا لتنظيم التصميم أثناء البرمجة فقط ![]() الان إلى عملية جلب البيانات من StringGrid1 إلى frxUserDataSet1 ![]() في خصائص الأحداث للمكون frxUserDataSet1 نضغط مرتين في الحدث onGetValue نضع الكود البرمجي التالي كود : procedure TForm1.frxUserDataSet1GetValue(const VarName: string;
var Value: Variant);
var
i: Integer;
begin
i := frxUserDataSet1.RecNo ;
if VarName = 'N' then
Value := StringGrid1.Cells[1,i+1]
else if VarName = 'NOM' then
Value := StringGrid1.Cells[2,i+1]
else if VarName = 'PRENOM' then
Value := StringGrid1.Cells[3,i+1]
end;في هذا الكود البرمجي عند قراءة السطر إذا كان إسم الحقل يساوي اسم معين أحضر له القيمة من الخلية المعينة الان إلى برمجة قفل الطباعة نضع فيه الكود البرمجي التالي كود : procedure TForm1.Button1Click(Sender: TObject);
begin
if StringGrid1.RowCount > 2 then begin
frxUserDataSet1.RangeEnd := reCount;
frxUserDataSet1.RangeEndCount := StringGrid1.RowCount -1 ;
frxReport1.ShowReport;
end;
end;هنا في هذا الكود البرمجي : إذا كا عدد سطور StringGrid1 أكثر من 2 ينفذ ، السطر 1 الاول خاص بعناوين الحقول و رقم 2 تبدأ البيانات نقوم بإعداد frxUserDataSet1 الخاصية الولى RangeEnd نعطيها قيمة reCount و RangeEndCount نعطيها StringGrid1.RowCount -1 وبعدها ننفذ الطباعة frxReport1.ShowReport تحميل المثال من المرفقات
exmp Print StringGrid.rar (الحجم : 28.71 ك ب / التحميلات : 49)
(06-12-2020, 04:45 PM)Ibn Battuta كتب : شكرا جزيلا لك اخي الكريم لعربي
RE: طباعة محتوى المكون StringGrid - Ibn Battuta - 06-12-2020 جاري التجربة الله يجعلها في ميزان حسناتك خويا لعزيز لعربي
RE: طباعة محتوى المكون StringGrid - onexite - 08-12-2020 هذه اضافة صغيرة يمكن التجميع وحساب المجاميع باستخدام هذه الطريقة ![]() وبعدها ![]() وبعدها
RE: طباعة محتوى المكون StringGrid - سامي-دالفي - 21-03-2024 بالنسبة لنقل الصور من خارج قاعدة البيانات ومربوطة بها عنطريق رقم تسلسلي الى الفاست روبورت عن طريق نفس المكون frxuserdataset كيف تتم |