أوجه الشكر وتحياتنا الخالصة الى أساتذتنا المشرفين على هذا الموقع وإلى أصدقائنا المشتركين...
لدي سؤال وهو كيفية تحويل الأرقام الى حروف في فاست ريبورت وشكرا جزيلا.
المكونات والوحدات كثيرة ومختلفة ومتنوعة و هذه وحدة تفعل ذلك
كود :
unit Unit2;
interface
uses SysUtils,StrUtils;
Function words(Number : Double; F1 : String = 'دينار'; F2 :String = 'دينارين' ; F3 : String = 'دنانير'
; D1 : String = 'درهم' ; D2 : String = 'درهمين'; D3: String = 'دراهم'; SayJust : Boolean = True) : String;
implementation
Function words(Number : Double; F1 : String = 'دينار'; F2 :String = 'دينارين' ; F3 : String = 'دنانير'
; D1 : String = 'درهم' ; D2 : String = 'درهمين'; D3: String = 'دراهم'; SayJust : Boolean = True) : String;
Var
P,P1,P2,P3,P4,w,w1,w2,w3,N,n1 : String;
SD : Int64;
(*------------------------------------------------------------------------*)
Function Swords(N, U1, U2, U3 : String) : String;
Type
TF = array[0..2,0..9] of String;
Const
FNO : TF = (('','واحد','إثنان','ثلاثة','أربعة','خمسة','ستة','سبعة','ثمانية','تسعة'),
('','عشر','عشرون','ثلاثون','أربعون','خمسون','ستون','سبعون','ثمانون','تسعون'),
('','مائة','مائتين','ثلاثمائة','أربعمائة','خمسمائة','ستمائة','سبعمائة','ثمانمائة','تسعمائة'));
Var
s: array[1..3] of Byte;
PU : array[0..2] of String;
A : Tf;
w1,w2,f : String;
E : integer;
Begin
A := FNO;
Pu[0] := '';
PU[1] := U1 ;
Pu[2] := U2 ;
E := StrToInt(N);
If E < 3 then Swords := pu[E]
Else
Begin
N := leftstr('000',3-length(n)) + N ;
For E := 1 to 3 Do S[E] := StrToInt(n[4-E]);
If (s[2] = 0) or (s[1] = 0) Then W2 := '' Else W2 := ' و ';
If (s[3] = 0) Or (s[1]+S[2] = 0) Then W1 := '' Else W1 := ' و ';
If S[2] = 1 Then
Begin
A[0,1] := 'أحد ';
A[0,2] := 'إثنا ' ;
W2 := ' ';
End;
Case strToInt(n[2]+n[3]) of
0 : Begin
A[2, 2] := 'مائتا ';
F := U1;
End;
3..10 : F := U3;
1,2, 11..99 : F := U1;
end;
swords := A[2, S[3]] + w1 + A[0, S[1]] + w2 + A[1, S[2]] + ' ' + F;
End;
End;
(*------------------------------------------------------------------------*)
Begin
If Number > 0 Then
Begin
Sd := Trunc(Number);
p := Swords(inttostr(round((Number-sd)*100)),D1,D2,D3);
N := leftstr('000000000000',12-length(floattostr(Sd))) + floattostr(Sd) ;
P1 := Swords(Copy(N, 10, 3), F1, F2, F3);
P2 := Swords(Copy(N, 7, 3), 'ألف', 'ألفان', 'آلاف');
P3 := Swords(copy(N, 4, 3), 'مليون', 'مليونان', 'ملايين');
P4 := Swords(copy(N, 1, 3), 'مليار', 'ملياران', 'مليارات');
If (P4 = '') Or (P1 + P2 + P3 = '') Then w3 := '' Else w3 := ' و ';
If (P3 = '') Or (P1 + P2 = '') Then w2 := '' Else w2 := ' و ';
If (P2 = '') Or (P1 = '') Then w1 := '' Else w1 := ' و ';
If P1 = '' Then P1 := ' ' + F1;
If P = '' Then w := '' Else w := ' و ';
if Sd = 0 then
N := P
else
N := P4 + w3 + P3 + w2 + P2 + w1 + P1 + w + P;
If SayJust Then words := 'فقط ' + N + ' لاغير'Else Words := N;
end;
End;
end.
ستحتاج الى اضافة متغير في الفاست ريبورت وتمرر له القيمة المطلوبة بالحروف
اذا لم تكن تعرف كيف تضيف متغير او تمرر له قيمة قل وسوف اوضح لك
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
(16-12-2020, 04:34 PM)Delphi4Us كتب : ستحتاج الى اضافة متغير في الفاست ريبورت وتمرر له القيمة المطلوبة بالحروف
اذا لم تكن تعرف كيف تضيف متغير او تمرر له قيمة قل وسوف اوضح لك
23-12-2020, 03:00 PM (آخر تعديل لهذه المشاركة: 23-12-2020, 03:07 PM بواسطة Delphi4Us.)
بالنسبة الى اضافة متغير وتمرير قيمة اولا وقبل كل شئ هذا درس فيه دالة يمكن استخدامها من داخل الفاست ريبورت نفسه
يعني لا تحتاج الى انشاء متغير وتمرير قيمة له من خارج الفاست ريبورت
وهناك طريقة مشروحة بموقع الشركة عن كيفية اضافة Function موجودة في المشروع الى الفاست ريورت بامكانك استخدامها وتغنيك على استخدام وانشاء متغير وتمرير قيمة له
اما انشاء متغير وتمرير قيمة له راجع حالا ان شاء الله وسوف اضيفها ليس عندي دلفي او فاستريبورت ولا احفظ اماكن الاشياء
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
25-12-2020, 06:51 AM (آخر تعديل لهذه المشاركة: 25-12-2020, 06:52 AM بواسطة Delphi4Us.)
بالنسبة لاضافة متغير من القائمة Preport نختار Variable
ومن النافذة الخاصة بالـ Variable ننشئ مجلد جديد وننشئ فيه متغير جديد
بعدها نعود الى مصمم التقارير ومن التويب Variable نجد المتغير الذي أنشأناه
نقوم باسقاطه بالمكان المطلوب بالتقرير
بعدها نعود الى الدلفي ونحدد مكون التقرير ومن الحدث
وفي الحدث نقوم بالتاكد من اسم المتغير ونضع له القيمة المطلوب فربما يكون لدينا اكثر من متغير
فنكتب لو كان المتغير اسمه كذا اجعل قيمته تساوي كذا
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
كل من 1 user says قال شكرا ل Delphi4Us على المشاركة المفيدة1 user says Thank You to Delphi4Us for this post • samnaj00
27-12-2020, 01:46 PM (آخر تعديل لهذه المشاركة: 27-12-2020, 01:47 PM بواسطة Delphi4Us.)
يمكنك ان تصمم التقارير وتحفظها مع الملف التنفيذي بمجلد
بحيث تستطيع ان تفتحها وتعدل فيها وتحفظها
في مستعرض التقارير تجد ايقونة فتح تقرير وحفظ التقرير
يعني اذا احتجت تعديل تعدله خارجيا وتستبدله بالتقرير الذي مع البرنامج
والطريقة الثانية ان تفتح التقرير برمجيا
في مكون التقارير ومن نافذة الخصائص تجد كل الخصائص التي تريد تركها للمستخدم منها فتح وحفظ التقرير والتعديل عليه او تصديره
وبخصوص تصدير التقرير الى صورة او PDF مثلا يجب ان تضع مكوناتها على النموذج
اسقطها فقط على النموذج وسيظهر خيار تصدير ما اسقطت بمستعرض التقارير
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
كل من 1 user says قال شكرا ل Delphi4Us على المشاركة المفيدة1 user says Thank You to Delphi4Us for this post • samnaj00