![]() |
|
التفقيط في الفاست ريبورت والمجاميع - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي التقنية (https://delphi4arab.net/forum/forumdisplay.php?fid=6) +--- قسم : دلفي و التعامل مع مولدات التقارير (https://delphi4arab.net/forum/forumdisplay.php?fid=39) +--- الموضوع : التفقيط في الفاست ريبورت والمجاميع (/showthread.php?tid=11206) الصفحات:
1
2
|
التفقيط في الفاست ريبورت والمجاميع - Delphi4Us - 13-01-2021 السلام عليكم ورحمة الله لكثرة السؤال عن هذا انشاءت هذا المثال ورفعته على المنتدى تجنبا للضياع وهو يشرح كل شئ بداية المجموع SumByFastRepot يتم عن طريق الفاست ريبورت ستجد في الحقل كود : [<frxDBDataset2."cnt"> * <frxDBDataset2."price">]ناتج ضرب الكمية في السعر لتعطي المجموع ثانيا SumByAdodb يتم التجميع في الحقل Calculate لمكون الجدول خارج الفاست ريبورت كود : ADOTable2Total.Value:=ADOTable2cnt.Value * ADOTable2price.Value;حيث تم انشاء حقل Calculate تم وضع فيه ناتج حقل الكمية في السعر بعدها يتم تفقيط اجمالي المجموع من داخل الفاست ريبورت بواسطة Function يمكن وضعها في التقرير كود : procedure Memo9OnAfterData(Sender: TfrxComponent);
begin
Memo13.text:=NoToTxt(Memo9.value,'دينار','درهم');
end;مع ملاحظة اننا استخدمنا الحدث AfterData اي بعد ان يتم احتساب الاجمالي واكتمال النتيجة وايضا ستجدون دالة انشأناها خارج الفاست ريبورت وقمنا باضافتها للفاست ريبورت واستخدمناها كود : function MyFunc(s: String): String;والتي ترسل كلمة FastRepot فنضيف لها Well Come ويمكن استخدام هذه الطريقة في التفقيط او احتساب اي عمليات معقدة تستخدم وحدات او مكونات لا يمكن برمجتها او الاعلان عنها داخل الفاست ريبورت في الحدث GreatForm نضيف الدالة او الاجراء المطلوب كود : frxReport1.AddFunction('function MyFunc(s: String):string');ثم في الحدث frxReport1UserFunction نقوم باصطياد الدالة المطلوبة كود : if MethodName = 'MYFUNC' then
Result := MyFunc(Params[0])وفي الدالة نضع اي برمجة نريد ونقتنص اي بارمترات مرسلة من الفاست ريبورت بحال كان هناك بارمترات كود : function TForm1.MyFunc(s: String): string;
begin
Result:='Well Come : ' + s;
end;ومن داخل الفاست ريبورت نستخدم الدالة بشكل طبيعي كود : Memo14.text := MyFunc('FastReport');المثال بالمرفقات ويمكن تحميله RE: التفقيط في الفاست ريبورت والمجاميع - bouh25 - 14-01-2021 لك تحية خاصة الاخ Delphi4Us ولكن عندي سؤال و هو الاحظ علامة مثلث صغير على الحقول Memo9 , Memo13 و Memo14 في الفاست ريبورت . ما معنها و كيف تظهر على هذه الحقول فقط الصورة RE: التفقيط في الفاست ريبورت والمجاميع - Delphi4Us - 14-01-2021 شكرا وبارك الله فيك ولاتظن اننا نقدم شيئا بالمجان فكل ما نقدمه وما نبدله ولو كان بسيطا ومتواضعا نقبض ثمنه بالنسبة للعلامة اذا كان للحقل حدث تظهر هذه العلامة في اشارة لذلك RE: التفقيط في الفاست ريبورت والمجاميع - Delphi4Us - 14-01-2021 تعديلات اضافية على المشروع تم انشاء وحدة تقوم بالتفقيط داخل الدلفي بحيث يتم استدعاءها من الفاست ريبورت بدل من الدالة السابقة حتى يكون المثال اكثر عملية كود : Memo14.text := MyFunc(Memo9.value);ويتم ارسال قيمة الاجمالي لاستعادته كنص في الدالة التي عرفناها على الفاست ريبورت يتم استدعاء دالة التفقيط كود : function TForm1.MyFunc(s: Double): string;
begin
Result:=NumToTxt(s,'دينار','درهم');
end;طبعا بالامكان استبدال هذه الدالة التي عرفناها بدالة التفقيط مباشرة فقط لان المثال كان هكذا لم اشاء ان اغيره لاظهار التفقيط في الـ Title لابد ان تختار من القائمة Report ثم Option ومنها تؤشر الخيار Double Pass فهنا يظهر تفقيط سفلي واخر علوي السفلي بواسطة دالة بداخل الفاست ريبورت والعلوي باستخدام دالة في الدلفي حقيقة كنت اريد ان اضيف الدالة مباشرة بداخل الفاست ريبورت بحيث تستخدمها بزمن التصميم وليس التشغيل فقط ولكن هذا لا يمكن كما تشير مستندات الشركة هنا بالرابط التالي كود : https://fast-report.com/documentation/DevMan/index.html?custom_functions_connection_to_report.htmولكن يمكن بزمن التشغيل مع استخدام الـ Designer وتظهر الدالة بلا اي مشكلة ويمكن استخدامها ومعاينة النتيجة فوريا استخدم الكود الذي بالمشروع لان هناك مشكلة بالكود الذي تعرضه الشركة كود : constructor TFunctions.Create;
begin
inherited Create(AScript);
with AScript do
AddMethod('function MyFunc(s: String; i: Integer): Boolean', CallMethod,
'My functions', ' MyFunc function always returns True');
AddMethod('procedure MyProc(s: String)', CallMethod,
'My functions', ' MyProc procedure does not do anything'');
end;
end;حيث نسيت بعض العبارات والصحيح كالتالي : كود : constructor TFunctions.Create;
begin
inherited Create(AScript);
with AScript do
begin
AddMethod('function MyFunc(s: String; i: Integer): Boolean', CallMethod,
'My functions', ' MyFunc function always returns True');
AddMethod('procedure MyProc(s: String)', CallMethod,
'My functions', ' MyProc procedure does not do anything');
end;
end;يمكنكم معاينة المشروع بالمرفقات RE: التفقيط في الفاست ريبورت والمجاميع - bouh25 - 17-01-2021 الاخ Delphi4Us عملت عدة محاولات و لكن فشت في الدالة الاخير لو سمحت قليل من التفاصيل و اجرك على الله RE: التفقيط في الفاست ريبورت والمجاميع - Delphi4Us - 17-01-2021 ما الذي لم ينجح خاصة وانني حملت المثال بالمرفقات ويعمل عندي RE: التفقيط في الفاست ريبورت والمجاميع - bouh25 - 18-01-2021 لم تظهر الدالة MyFonct في قائمة الدوال في الفاست ربورت RE: التفقيط في الفاست ريبورت والمجاميع - larbiparadox - 18-01-2021 (18-01-2021, 07:32 AM)bouh25 كتب : لم تظهر الدالة MyFonct في قائمة الدوال في الفاست ربورت لقد أجابك الأستاذ Delphi4Us في هذا الجزء ولكن يمكن بزمن التشغيل مع استخدام الـ Designer وتظهر الدالة بلا اي مشكلة ويمكن استخدامها ومعاينة النتيجة فوريا ـ تظهر معك في حالة فتحه بـ Designer RE: التفقيط في الفاست ريبورت والمجاميع - bouh25 - 18-01-2021 شكرا وصلت للنتيجة لم افهم هذه المرحلة لاظهار التفقيط في الـ Title لابد ان تختار من القائمة Report ثم Option ومنها تؤشر الخيار Double Pass RE: التفقيط في الفاست ريبورت والمجاميع - Delphi4Us - 18-01-2021 |