delphi4arab منتديات دلفي للعرب

نسخة كاملة : الفاست ريبورت لاي يعمل برمجيا؟
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم

الفاست ريبورت يعمل عادي ولكن عندما حاولت إنشاؤه برمجيا لا يشتغل ولا يظهر مع العلم أنه يتم إنشاؤه في المجلد المحدد بإسم  Myreport.fr3  Huh

كود :
uses frxclass,frxDBset; procedure TForm4.Button4Click(Sender: TObject); var rep:TfrxReport; page:TfrxReportPage; Band:TfrxBand; Mem:TfrxMemoView; DBset:TfrxDBDataset; const repName='C:\Users\HAT\Desktop\New folder\New folder\Myreport.fr3'; begin rep:=TfrxReport.Create(self); rep.SaveToFile(repName); page:= TfrxReportPage.Create(rep); with page do begin createuniquename; setdefaults; end; band:=TfrxReportTitle.Create(page); with Band do begin   Height:=150;   frame.Typ:=[ftRight,ftLeft,ftTop,ftBottom];   Frame.Width:=1;   Frame.Style:=fsSolid;   Frame.Color:=clGreen; end;


مشكلة مع العلم أني أستخدم دلفي 10.3
المثال

هل ممكن أحد يجرب البرنامج ويخبرني هل إشتغل عنده أما لا لأعرف أن المشكل من الدلفي أو من ماذا

الضغط على زر الطباعة هل يظهر عندكم الفاست ريبورت أما لا
وعليكم السلام ورحمة الله


بدون ان نجرب الكود هذا لازال ينقصه الكثير على سبيل المثال
لا يوجد ShowReport المسؤول عن اظهار التقرير

وايضا انت انشأت ReportTitle ولكن لم تضيفه للتقرير والذي هو هنا عندك بأسم rep

هناك طريقتان وعليك ان تتبع احدهما
اولى اما ان تصنع كامل التقرير بالكود ولا تنسى ان تضيف كل شئ في النهاية الى التقرير كما تضيف اي كنترول الى النموذج في دلفي عن طريق

كود :
Form.Controls.add(yourCountrol)

والطريقة الثانية ان تصمم التقرير يديويا يعني مثل العنوان والجسم الذي سيتم وضع الحقول فيه ونهاية التقرير حيث التوقيع وما الى ذلك
ويتبقى فقط ان تضيف الحقول التي تريد ويمكنك الوصول الى اي شئ فيه كالتالي:

كود :
MasterData := frxReport1.FindComponent('MasterData1') as TfrxMasterData;

حيث ان  MasterData هي :

كود :
MasterData: TfrxMasterData;

اما الحقول فتعريفها

كود :
var   Memo: TfrxMemoView;

وبعدها انشاءها

كود :
Memo := TfrxMemoView.Create(MasterData);

وبعدها اضافة الحقول للمكان الذي تريد

كود :
Memo.Parent := MasterData;

وايضا تحديد مكانه

كود :
Memo.SetBounds(0, 0, 0, 21);


وبالنهاية اظهار التقرير Rep.ShowReport
الله يرضى عليك
بالفعل لم أقم بعرض التقرير بـ Rep.ShowReport
مع العلم أني أتابع فيديو للأستاذ أسامة غزال فلم أنتبه لهذا الأمر فتوقفت على الأمر
جزاكم الله خير
شكرا بقى فقط ملاحظة بسيطة يمكنك الاستغناء عن تصميم الصفحة بالكود من الصفر وحفظها بمسار على لاقرص الصلب كما يظهر في الكود عندك فوق
وذلك بان تصمم التقرير مرئيا وتضع فيه كل ما تريد من الامور الاساسية ويتبقى فقط ترتيب الحقول داخله
وطبعا عند حفظ المشروع سيتم حفظ التصميم بترويسة النموذج للمشروع
وهذا سيوفر عليك الكثير من الجهد في اعداد التقرير بالكود
(04-10-2023, 06:17 PM)Delphi4Us كتب : [ -> ]وذلك بان تصمم التقرير مرئيا وتضع فيه كل ما تريد من الامور الاساسية ويتبقى فقط ترتيب الحقول داخله


ولكن إذا أردت السماح للمستخدم تغيير ترتيب الأعمد وقت التشغيل ليتم طباعتها حسب رغبته كيف يتم ذلك؟هنا المشكل وهنا يجب تصميمه برمجيا أليس كذلك؟
أجل اذا كان التقرير معقد وفيه احتمالات كثيرة لايمكن تصميمها مرئيا يمكن اللجؤ الى الكود لمن لا يريد ان يصمم كل شئ بالكود
اما الاعمدة فلم افهم لانها تشير الى عدة احتمالات ولو كانت تقسيم التقرير الى اعمدة فلست بحاجة الى استخدام الكود يمكن ببساطة اسناد قيمة الاعمدة في التقرير هل هم 2 او 3 او 4 وهكذا من الخاصية الخاصة للـ MasterData او اي كانت الحاوية
يعني تقريبا لا يوجد مالا يمكن الوصول اليه وتغيير خصائصه بالتقرير .
فانت ستصمم عنوان التقرير بالشعار والتاريخ وكل ما يحويه بالجزء العلوي
وسوف تنشئ حاوية البيانات MasterData وستتركها فارغة طبعا وتربطها بمصدر البيانات
وسوف تنشئ ترويسة التقرير حيث التوقيع والصور ومن انشاء التقرير وما الى ذلك
وتحدد الهوامش وحجم الورق وهكذا امور
فقط ان اعداد هذه الامور بالكود سيأخذ وقت لاول مرة مع انني لا ارى مشكلة في تصميم كل شئ بالكود فقط مجرد خيار تم طرحه فقط