![]() |
|
تقرير quickreport لقائمة كل شهر - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : تقرير quickreport لقائمة كل شهر (/showthread.php?tid=6808) |
تقرير quickreport لقائمة كل شهر - Bachirsoft - 21-02-2015 السلام عليكم لدي قائمة متكونة من 12 شهر ، ولي الإخيار في تعيير عدد من الشهور بـ(checkbox) أي أختار مثلا (جانفي ، فيفري ومارس) وكل شهر به معلومات ، ويجب أن أطبع الشهور المختارة فقط في شكل قائمة.. وأرفق صورة للتوضيح كود : http://im74.gulfup.com/50Quau.png
http://im74.gulfup.com/0tADyu.pngتقرير quickreport لقائمة كل شهر - الكاسر الآخر - 21-02-2015 السلام عليكم أخي لم تحدد ما إذا كنت تستعمل جدول قاعدة بيانات أم لا .. ولكنني سأفترض أنك تستخدم جدول قاعدة بيانات .. وإذا كنت كذلك فهل حقل الشهر هو من النوع الحرفي أم هو رقمي .. عموما : سأفترض أنك تستخدم حقل الشهر من النوع الحرفي واسمه Month وبعد ذلك ستكون التغييرات بسيطة إذا كان الحقل رقمي الفكرة هنا أنك ستقوم بفلترة الحدول حسب التحديد المطلوب وباعتبار أن الجدول مربوط بالكويك ريبورت فإن السجلات المحددة فقط هي التي ستظهر ... إذا اللعبة هنا في الفلترة وبإعتبار أن الفلترة متغيرة سيكون الشغل كله على CheckBox إذا ماعليك فعله هو : أولا - قم بتعريف متغيرات عامة وهي S , Filter من نوع ٍString و List من نوع TStringList ثانيا في حدث OnCreate الخاص بالفورم أكتب كود : List := TStringList.Create;
List.Delimiter := ',';
s := '';ثالثا - حدد CheckBox الأول وقم بكتابة الكود التالي في حدث OnClick الخاص به كود : if TCheckBox(Sender).Checked then
begin
List.Add(TCheckBox(Sender).Caption);
s := List.DelimitedText;
end
else
begin
List.Delete(List.IndexOf(TCheckBox(Sender).Caption));
s := List.DelimitedText;
end;
Filter := 'Month = '+StringReplace(s, ',',' Or Month = ', [rfReplaceAll]);رابعا : وهو الأهم .. قم بتحديد بقية CheckBox ماعدا الأول ثم إقتح قائمة الحدث وأذهب إلى حدث Onclick ولكن لا تقم بالنقر المزدزج عليه ، بل إضغط على المثلث في اليمين لتظهر لك قائمة إختر منها الحدث السابق لـ CheckBox الأول .. سيتم تنفيذ الكود في حدث Onclick الخاص بـ CheckBox الأول عن طريق بقية الـ CheckBoxes النتيجة أن المتغير الذي أسميناه Filter سيحصل على ChckBox المحددة فقط وبعد ذلك قم بتطبيق نتيجة الاختيارات على الفلتر الخاص بالجدول بهذا الشكل على افتراض أن مكون الجدول اسمه Table1 وأن لديك زر لإظهار الكويك ريبورت قبل إظهار الكويك ريبوت ضع هذا الكود كود : Table1.Close;
Table1.Filtered := False;
Table1.Filter := Filter;
Table1.Filtered := True;
Table1.Open;بإذن الله ستظهر لك نتائج مرضية طبعا ستقوم ببعض التعديلات ليظهر التقرير كما بالصزرة تبقى مسألة حقل الشهر إذا كان من النوع الرقمي .. هنا يمكنك إستخدام CheckBox.tag بدلا من CheckBox.Caption ماعليك فعله هو لإعطاء tag رقم الشهر بدلا من اسمه وسيشتغل بإذن الله تقرير quickreport لقائمة كل شهر - الكاسر الآخر - 21-02-2015 أخي قمت ببعض التعديلات على الكود ضع هذا الكود في حدث OnClick الخاص بـ CheckBox كود : if TCheckBox(Sender).Checked then
List.Add(TCheckBox(Sender).Caption)
else
List.Delete(List.IndexOf(TCheckBox(Sender).Caption));
s := List.DelimitedText;
Filter := 'Month = '''+StringReplace(s, ',',''' Or Month = ''', [rfReplaceAll])+'''';فإذا كنت تستخدم رقم في حقل الشهر بدلا من اسم الشهر فضع هذا الكود في حدث OnClick الخاص بـ CheckBox كود : if TCheckBox(Sender).Checked then
List.Add(IntToStr(TCheckBox(Sender).tag))
else
List.Delete(List.IndexOf(IntToStr(TCheckBox(Sender).tag)));
s := List.DelimitedText;
Filter := 'Month = '+StringReplace(s, ',',' Or Month = ', [rfReplaceAll]);تقرير quickreport لقائمة كل شهر - Bachirsoft - 22-02-2015 أخي بارك الله فيك على الشرح المفصل ولاكن انا لا أستخدم جدول قاعدة بيانات في هذه العملية تقرير quickreport لقائمة كل شهر - الكاسر الآخر - 22-02-2015 حسنا أخي ... لقد عملت لك البرنامج ولكن بإستخدام Rave Reports وليس Quick Report أيضا استخدمت RxSpinEdit في عداد الأيام .... المهم حاول تشغيل الرنامج فإن لم يشتغل معك راجع الكود لأخذ فكرة عن طريقة كتابة الكود تقرير quickreport لقائمة كل شهر - Bachirsoft - 23-02-2015 إن لم يكن شيء من الثقل بالQuick Reportلأني لا أجيد كثيرا Rave Reports تقرير quickreport لقائمة كل شهر - الكاسر الآخر - 24-02-2015 أخي متأسف لأني ليس لدي معلومات عن برمحة الكويك ريبورت لأني قد هجرته من مدة طويلة .. أما الريف ريبورت فيأتي على ماأعتقد مع نسخة الدلفي السابعة فما فوق ... |