15-04-2022, 08:54 PM
16-04-2022, 11:37 PM
و عليكم السلام و رحمة الله
تقبل الله منا منكم
1. إنشاء الدالة
2. نضيف الحدث UserFunction الخاص بـ frxReport المستعمل ( هذا الحدث يعتبر مسير الدوال الخارجية للمكون frxReport )
3. لإضافة الدالة لقائمة دوال الفاستريبورت نضعها في onCreate أو onShow
4. إستدعاء الدالة من داخل التقرير ( وقت التنفيذ)
ضع memo و نصها يكون كمثال [MyFunc(10)]
تقبل الله منا منكم
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)]
17-04-2022, 08:45 PM
الله يرضى عليك لقد فهمتها الآن
جزاك الله خيرا وزادك من علمه
جزاك الله خيرا وزادك من علمه
23-04-2022, 07:10 PM
السلام عليكم
لقد حاولت كثيرا دون فائدة
عندي الفاست ريبورت موظوع في وحده DataModule والدالة في الفورم1 طبقت كل شيء ولكن يعطيني خطأ بأن الدالة غير معرفة مع العلم أني ضمنت الـ unit1 في الداتا موديول والداتا موديول في الفورم 1
هكذا
DataModule
الفورم2
ما المشكلة
زما هي الطريقة الصحيحة هل أضع الدالة في الداتا موديول أي كل الدوال أضعها في الداتا موديول؟
لقد حاولت كثيرا دون فائدة
عندي الفاست ريبورت موظوع في وحده 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.ما المشكلة
زما هي الطريقة الصحيحة هل أضع الدالة في الداتا موديول أي كل الدوال أضعها في الداتا موديول؟
24-04-2022, 07:35 PM
كود :
https://www.youtube.com/watch?v=4OOrB6gSO9M&list=PL1c7L5EsigqIeOVzehGNfdEx_ij9iiMYS&index=17&t=977s24-04-2022, 09:56 PM
تقبل الله صيامكم وقيامكم
الفيديو يشرح طريقة كتابة دالة داخل الفاست ريبورت المشكلة لا يمكن منادتها داخل فاسست ريبورت آخر ويجب كتابنها من جديد
الشرح في الاعلى الذي شرحه Lam.Abdeldjalil يفي بالغرض زطبقته يعمل بشكل جيد ويمكن مناات الدالة في اكثر من فات ريبورت
مشكلتي هي ان الفاست ريبورت موضوع في DataModule فلم استطع منادة الدالة وتأتيني رسالة بأن الدالة غير معرفة لا اعرف ما السبب لقد وضعت الكود الذي به الخطأ في رد سابق
الفيديو يشرح طريقة كتابة دالة داخل الفاست ريبورت المشكلة لا يمكن منادتها داخل فاسست ريبورت آخر ويجب كتابنها من جديد
الشرح في الاعلى الذي شرحه Lam.Abdeldjalil يفي بالغرض زطبقته يعمل بشكل جيد ويمكن مناات الدالة في اكثر من فات ريبورت
مشكلتي هي ان الفاست ريبورت موضوع في DataModule فلم استطع منادة الدالة وتأتيني رسالة بأن الدالة غير معرفة لا اعرف ما السبب لقد وضعت الكود الذي به الخطأ في رد سابق
25-04-2022, 10:29 PM
وعليكم السلام ورحمة الله
حلول :
جرب تعريف الوحدة Unit1 في التبويب Uses العلوي
تأكد ان الدالة public عامة وليست خاصة Private ويمكن رؤيتها من خارج الوحدة
جرب وضع الدالة في الوحدة Unit2 في الـ DataMoudel
حلول :
جرب تعريف الوحدة Unit1 في التبويب Uses العلوي
تأكد ان الدالة public عامة وليست خاصة Private ويمكن رؤيتها من خارج الوحدة
جرب وضع الدالة في الوحدة Unit2 في الـ DataMoudel
26-04-2022, 09:10 PM
نفس الشيء لم تعمل والله تعبتني
بدون داتا موديول تعمل
لما أضع الفات في داتا موديول لا تعمل والرسالة تقول الدالة غير معرفة وضعتها عامه ولم تنفع
بدون داتا موديول تعمل
لما أضع الفات في داتا موديول لا تعمل والرسالة تقول الدالة غير معرفة وضعتها عامه ولم تنفع
27-04-2022, 12:26 AM
الكود شغال لا مشكلة فيه
فقط اضف التالي في الحدث التالي للتقرير بالداتا موديل
اضف الدالة التالية في النموذج في القسم العام
وفي جسم الوحدة اضف الدالة كاملة
في زر استدعاء التقرير
بالتوفيق
فقط اضف التالي في الحدث التالي للتقرير بالداتا موديل
كود :
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()بالتوفيق
27-04-2022, 12:51 AM
لا إله إلا الله محمد رسول الله
الخطأ كان هنا
والصحيح هو ينقص form1 قبل MyFunction
جزاك الله خيرا وزادك من علمه
الخطأ كان هنا
كود :
if MethodName = 'MYFUNC' then
Result := MyFunc(Params[0])والصحيح هو ينقص form1 قبل MyFunction
كود :
if MethodName = 'MYFUNC' then
Result := form1.MyFunc(Params[0])جزاك الله خيرا وزادك من علمه