delphi4arab منتديات دلفي للعرب
تحويل الأرقام الى حروف في فاست ريبورت - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : تحويل الأرقام الى حروف في فاست ريبورت (/showthread.php?tid=11175)

الصفحات: 1 2


تحويل الأرقام الى حروف في فاست ريبورت - hadir aek - 16-12-2020

أوجه الشكر وتحياتنا الخالصة الى أساتذتنا المشرفين على هذا الموقع وإلى أصدقائنا المشتركين...
لدي سؤال وهو كيفية تحويل الأرقام الى حروف في فاست ريبورت وشكرا جزيلا.


RE: تحويل الأرقام الى حروف في فاست ريبورت - Delphi4Us - 16-12-2020

المكونات والوحدات كثيرة ومختلفة ومتنوعة و هذه وحدة تفعل ذلك


كود :
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.

ستحتاج الى اضافة متغير في الفاست ريبورت وتمرر له القيمة المطلوبة بالحروف
اذا لم تكن تعرف كيف تضيف متغير او تمرر له قيمة قل وسوف اوضح لك


RE: تحويل الأرقام الى حروف في فاست ريبورت - محمد عبد العزيز - 17-12-2020

عنصر التفقيط العربي - الإصدار الرابع


RE: تحويل الأرقام الى حروف في فاست ريبورت - hadir aek - 20-12-2020

جزاك الله خيرا أخي الفاضل...


RE: تحويل الأرقام الى حروف في فاست ريبورت - samnaj00 - 21-12-2020

(16-12-2020, 04:34 PM)Delphi4Us كتب : ستحتاج الى اضافة متغير في الفاست ريبورت وتمرر له القيمة المطلوبة بالحروف
اذا لم تكن تعرف كيف تضيف متغير او تمرر له قيمة قل وسوف اوضح لك

كيف ذلك استاذي الكريم؟


RE: تحويل الأرقام الى حروف في فاست ريبورت - Delphi4Us - 23-12-2020

بالنسبة الى اضافة متغير وتمرير قيمة اولا وقبل كل شئ هذا درس فيه دالة يمكن استخدامها من داخل الفاست ريبورت نفسه
يعني لا تحتاج الى انشاء متغير وتمرير قيمة له من خارج الفاست ريبورت

طريقة للتفقيط داخل fast report

وهناك طريقة مشروحة بموقع الشركة عن كيفية اضافة Function موجودة في المشروع الى الفاست ريورت بامكانك استخدامها وتغنيك على استخدام وانشاء متغير وتمرير قيمة له

Using Custom Functions in a Report

اما انشاء متغير وتمرير قيمة له راجع حالا ان شاء الله وسوف اضيفها ليس عندي دلفي او فاستريبورت ولا احفظ اماكن الاشياء


RE: تحويل الأرقام الى حروف في فاست ريبورت - Delphi4Us - 25-12-2020

بالنسبة لاضافة متغير من القائمة Preport نختار Variable 


[صورة: attachment.php?aid=4412]

ومن النافذة الخاصة بالـ Variable ننشئ مجلد جديد وننشئ فيه متغير جديد
بعدها نعود الى مصمم التقارير ومن التويب Variable نجد المتغير الذي أنشأناه

[صورة: attachment.php?aid=4413]


 نقوم باسقاطه بالمكان المطلوب بالتقرير

[صورة: attachment.php?aid=4414]

بعدها نعود الى الدلفي ونحدد مكون التقرير ومن الحدث 

[صورة: attachment.php?aid=4415]

وفي الحدث نقوم بالتاكد من اسم المتغير ونضع له القيمة المطلوب فربما يكون لدينا اكثر من متغير
فنكتب لو كان المتغير اسمه كذا اجعل قيمته تساوي كذا

[صورة: attachment.php?aid=4416]


RE: تحويل الأرقام الى حروف في فاست ريبورت - samnaj00 - 26-12-2020

كل الشكر لك استاذي الكريم على هذا الشرح

تتمة لموضوع فاست ريبورت

كيف يمكنني التعديل على التقرير من خارج الدلفي بحيث لا اضطر الى فتح دلفي للتعديل عليه


RE: تحويل الأرقام الى حروف في فاست ريبورت - Delphi4Us - 27-12-2020

يمكنك ان تصمم التقارير وتحفظها مع الملف التنفيذي بمجلد
بحيث تستطيع ان تفتحها وتعدل فيها وتحفظها
في مستعرض التقارير تجد ايقونة فتح تقرير وحفظ التقرير
يعني اذا احتجت تعديل تعدله خارجيا وتستبدله بالتقرير الذي مع البرنامج
والطريقة الثانية ان تفتح التقرير برمجيا

كود :
frxReport1.LoadFromFile('c:\1.fr3'); frxReport1.SaveToFile('c:\2.fr3');

في مكون التقارير ومن نافذة الخصائص تجد كل الخصائص التي تريد تركها للمستخدم منها فتح وحفظ التقرير والتعديل عليه او تصديره
وبخصوص تصدير التقرير الى صورة او PDF مثلا يجب ان تضع مكوناتها على النموذج
اسقطها فقط على النموذج وسيظهر خيار تصدير ما اسقطت بمستعرض التقارير


RE: تحويل الأرقام الى حروف في فاست ريبورت - larbiparadox - 27-12-2020

[صورة: 111203126.gif]