السلام عليكم
الفاست ريبورت يعمل عادي ولكن عندما حاولت إنشاؤه برمجيا لا يشتغل ولا يظهر مع العلم أنه يتم إنشاؤه في المجلد المحدد بإسم Myreport.fr3
كود :
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 وستتركها فارغة طبعا وتربطها بمصدر البيانات
وسوف تنشئ ترويسة التقرير حيث التوقيع والصور ومن انشاء التقرير وما الى ذلك
وتحدد الهوامش وحجم الورق وهكذا امور
فقط ان اعداد هذه الامور بالكود سيأخذ وقت لاول مرة مع انني لا ارى مشكلة في تصميم كل شئ بالكود فقط مجرد خيار تم طرحه فقط