السلام عليكم ورحمة الله
لكثرة السؤال عن هذا انشاءت هذا المثال ورفعته على المنتدى تجنبا للضياع وهو يشرح كل شئ
![[صورة: attachment.php?aid=4434]](https://delphi4arab.net/forum/attachment.php?aid=4434)
بداية المجموع SumByFastRepot يتم عن طريق الفاست ريبورت ستجد في الحقل
ناتج ضرب الكمية في السعر لتعطي المجموع
ثانيا SumByAdodb يتم التجميع في الحقل Calculate لمكون الجدول خارج الفاست ريبورت
حيث تم انشاء حقل Calculate تم وضع فيه ناتج حقل الكمية في السعر
بعدها يتم تفقيط اجمالي المجموع من داخل الفاست ريبورت بواسطة Function يمكن وضعها في التقرير
مع ملاحظة اننا استخدمنا الحدث AfterData اي بعد ان يتم احتساب الاجمالي واكتمال النتيجة
وايضا ستجدون دالة انشأناها خارج الفاست ريبورت وقمنا باضافتها للفاست ريبورت واستخدمناها
والتي ترسل كلمة FastRepot فنضيف لها Well Come ويمكن استخدام هذه الطريقة في التفقيط او احتساب اي عمليات معقدة تستخدم وحدات او مكونات لا يمكن برمجتها او الاعلان عنها داخل الفاست ريبورت
في الحدث GreatForm نضيف الدالة او الاجراء المطلوب
ثم في الحدث frxReport1UserFunction نقوم باصطياد الدالة المطلوبة
وفي الدالة نضع اي برمجة نريد ونقتنص اي بارمترات مرسلة من الفاست ريبورت بحال كان هناك بارمترات
ومن داخل الفاست ريبورت نستخدم الدالة بشكل طبيعي
المثال بالمرفقات ويمكن تحميله
لكثرة السؤال عن هذا انشاءت هذا المثال ورفعته على المنتدى تجنبا للضياع وهو يشرح كل شئ
بداية المجموع 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');المثال بالمرفقات ويمكن تحميله
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم


![[-]](https://delphi4arab.net/forum/D4A2020/collapse.png)