![]() |
|
كيفية إستدعاء دالة في الفاست ريبورت؟ - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : كيفية إستدعاء دالة في الفاست ريبورت؟ (/showthread.php?tid=11900) |
كيفية إستدعاء دالة في الفاست ريبورت؟ - ALG2009 - 15-04-2022 السلام عليكم تقبل الله صيامكم هل هناك مثال على كيفية إستدعاء دالة مكتوبة في البرنامج داخل الفاست ريبورت RE: كيفية إستدعاء دالة في الفاست ريبورت؟ - Lam.Abdeldjalil - 16-04-2022 و عليكم السلام و رحمة الله تقبل الله منا منكم 1. إنشاء الدالة كود : function TForm1.MyFunc(i: Integer): String;
begin
if i>0 then
result:='pos +'
else
result:='neg -';
end;2. نضيف الحدث UserFunction الخاص بـ frxReport المستعمل ( هذا الحدث يعتبر مسير الدوال الخارجية للمكون frxReport ) كود : if MethodName = 'MYFUNC' then
Result := MyFunc(Params[0])3. لإضافة الدالة لقائمة دوال الفاستريبورت نضعها في onCreate أو onShow كود : frxReport1.AddFunction('function MyFunc(i: Integer):String');4. إستدعاء الدالة من داخل التقرير ( وقت التنفيذ) ضع memo و نصها يكون كمثال [MyFunc(10)] RE: كيفية إستدعاء دالة في الفاست ريبورت؟ - ALG2009 - 17-04-2022 الله يرضى عليك لقد فهمتها الآن جزاك الله خيرا وزادك من علمه RE: كيفية إستدعاء دالة في الفاست ريبورت؟ - ALG2009 - 23-04-2022 السلام عليكم لقد حاولت كثيرا دون فائدة عندي الفاست ريبورت موظوع في وحده DataModule والدالة في الفورم1 طبقت كل شيء ولكن يعطيني خطأ بأن الدالة غير معرفة مع العلم أني ضمنت الـ unit1 في الداتا موديول والداتا موديول في الفورم 1 هكذا DataModule كود : unit Unit3;
interface
uses
System.SysUtils, System.Classes, frxClass;
type
TDataModule3 = class(TDataModule)
frxReport1: TfrxReport;
function frxReport1UserFunction(const MethodName: string;
var Params: Variant): Variant;
private
{ Private declarations }
public
{ Public declarations }
end;
var
DataModule3: TDataModule3;
implementation
{%CLASSGROUP 'Vcl.Controls.TControl'}
uses Unit2;
{$R *.dfm}
function TDataModule3.frxReport1UserFunction(const MethodName: string;
var Params: Variant): Variant;
begin
if MethodName = 'MYFUNC' then
Result := MyFunc(Params[0])
end;
end.الفورم2 كود : type
TForm2 = class(TForm)
function myfunc(i:integer):string ;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
uses Unit3;
{ TForm2 }
{ TForm2 }
procedure TForm2.FormCreate(Sender: TObject);
begin
DataModule3.frxReport1.AddFunction('function MyFunc(i: integer):string');
DataModule3.frxReport1.ShowReport();
end;
function TForm2.myfunc(i: integer): string;
begin
if i>0 then
result:='pos +'
else
result:='neg -';
end;
end.ما المشكلة زما هي الطريقة الصحيحة هل أضع الدالة في الداتا موديول أي كل الدوال أضعها في الداتا موديول؟ RE: كيفية إستدعاء دالة في الفاست ريبورت؟ - Delphi4Us - 24-04-2022 كود : https://www.youtube.com/watch?v=4OOrB6gSO9M&list=PL1c7L5EsigqIeOVzehGNfdEx_ij9iiMYS&index=17&t=977sRE: كيفية إستدعاء دالة في الفاست ريبورت؟ - ALG2009 - 24-04-2022 تقبل الله صيامكم وقيامكم الفيديو يشرح طريقة كتابة دالة داخل الفاست ريبورت المشكلة لا يمكن منادتها داخل فاسست ريبورت آخر ويجب كتابنها من جديد الشرح في الاعلى الذي شرحه Lam.Abdeldjalil يفي بالغرض زطبقته يعمل بشكل جيد ويمكن مناات الدالة في اكثر من فات ريبورت مشكلتي هي ان الفاست ريبورت موضوع في DataModule فلم استطع منادة الدالة وتأتيني رسالة بأن الدالة غير معرفة لا اعرف ما السبب لقد وضعت الكود الذي به الخطأ في رد سابق RE: كيفية إستدعاء دالة في الفاست ريبورت؟ - Delphi4Us - 25-04-2022 وعليكم السلام ورحمة الله حلول : جرب تعريف الوحدة Unit1 في التبويب Uses العلوي تأكد ان الدالة public عامة وليست خاصة Private ويمكن رؤيتها من خارج الوحدة جرب وضع الدالة في الوحدة Unit2 في الـ DataMoudel RE: كيفية إستدعاء دالة في الفاست ريبورت؟ - ALG2009 - 26-04-2022 نفس الشيء لم تعمل والله تعبتني بدون داتا موديول تعمل لما أضع الفات في داتا موديول لا تعمل والرسالة تقول الدالة غير معرفة وضعتها عامه ولم تنفع RE: كيفية إستدعاء دالة في الفاست ريبورت؟ - Delphi4Us - 27-04-2022 الكود شغال لا مشكلة فيه فقط اضف التالي في الحدث التالي للتقرير بالداتا موديل كود : function TDataModule2.frxReport1UserFunction(const MethodName: string;
var Params: Variant): Variant;
begin
if MethodName = 'MYFUNC' then
Result := form1.MyFunc(Params[0])
end;اضف الدالة التالية في النموذج في القسم العام كود : type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
function MyFunc(i: Integer): String;
end;وفي جسم الوحدة اضف الدالة كاملة كود : function TForm1.MyFunc(i: Integer): String;
begin
if i > 0 then
result:='pos +' + i.ToString
else
result:='neg -';
end;في زر استدعاء التقرير كود : DataModule2.frxReport1.AddFunction('function MyFunc(i: Integer):String');
DataModule2.frxReport1.ShowReport()بالتوفيق RE: كيفية إستدعاء دالة في الفاست ريبورت؟ - ALG2009 - 27-04-2022 لا إله إلا الله محمد رسول الله الخطأ كان هنا كود : if MethodName = 'MYFUNC' then
Result := MyFunc(Params[0])والصحيح هو ينقص form1 قبل MyFunction كود : if MethodName = 'MYFUNC' then
Result := form1.MyFunc(Params[0])جزاك الله خيرا وزادك من علمه |