delphi4arab منتديات دلفي للعرب
كيف يتم تفقيط مبلغ مالي داخل fast report - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : كيف يتم تفقيط مبلغ مالي داخل fast report (/showthread.php?tid=6963)



كيف يتم تفقيط مبلغ مالي داخل fast report - NOURI - 26-04-2015

كيف يتم تفقيط مبلغ مالي داخل fast report بواسطة دالفي ( بالعربية)
لقد قمت بعملية البحث داخل و خارج المنتدى دون اي جدوى
كنت اعمل سابقا :confused:على كويك رابور


كيف يتم تفقيط مبلغ مالي داخل fast report - henry14 - 28-04-2015

هذه طريقة للتفقيط داخل fast report ادرج هذه الدالة داخل صفحة Code في الصفحة

كود :
Function NoToTxt(TheNo:Double;MyCur:String;MySubCur:String): String; var MyArry1 : Array [0..9] of String; MyArry2 : Array [0..9] of String; MyArry3 : Array [0..9] of String; MyNo :String; GetNo:String; RdNo :String; My100:String; My10 :String; My1 :String; My11 :String; My12 :String; GetTxt :String; Mybillion : String; MyMillion : String; MyThou :String; MyHun : String; MyFraction :String; MyAnd :String; i : Integer; begin if TheNo > 999999999999.99 then Exit; if TheNo = 0 then begin Result := 'صفر'; Exit; end; MyAnd := ' و'; MyArry1[0]:=''; MyArry1[1]:='مائة'; MyArry1[2]:='مائتان'; MyArry1[3]:='ثلاثمائة'; MyArry1[4]:='أربعمائة'; MyArry1[5]:='خمسمائة'; MyArry1[6]:='ستمائة'; MyArry1[7]:='سبعمائة'; MyArry1[8]:='ثمانمائة'; MyArry1[9]:='تسعمائة'; MyArry2[0]:=''; MyArry2[1]:=' عشر'; MyArry2[2]:='عشرون'; MyArry2[3]:='ثلاثون'; MyArry2[4]:='أربعون'; MyArry2[5]:='خمسون'; MyArry2[6]:='ستون'; MyArry2[7]:='سبعون'; MyArry2[8]:='ثمانون'; MyArry2[9]:='تسعون'; MyArry3[0]:=''; MyArry3[1]:='واحد'; MyArry3[2]:='اثنان'; MyArry3[3]:='ثلاثة'; MyArry3[4]:='أربعة'; MyArry3[5]:='خمسة'; MyArry3[6]:='ستة'; MyArry3[7]:='سبعة'; MyArry3[8]:='ثمانية'; MyArry3[9]:='تسعة'; //====================== GetNo := FormatFloat('000000000000.00',TheNo); i := 0; while i < 15 do begin if i < 12 then begin MyNo := Copy(GetNo,i+1,3); end else begin MyNo := '0' +Copy(GetNo,i+2,2); end; if StrToInt(Copy(MyNo,1,3)) > 0 then begin RdNo := Copy(MyNo,1,1); My100 := MyArry1[StrToInt(RdNo)] ; RdNo := Copy(MyNo,3,1); My1 := MyArry3[StrToInt(RdNo)] ; RdNo := Copy(MyNo,2,1); My10 := MyArry2[StrToInt(RdNo)] ; if (StrToInt(Copy(MyNo,2,2)) = 11)then My11 := 'إحدى عشر'; if (StrToInt(Copy(MyNo,2,2)) = 12)then My12 :='إثنى عشر' ; if (StrToInt(Copy(MyNo,2,2)) = 10)then My10 :='عشرة' ; if (StrToInt(Copy(MyNo,1,1)) > 0) and (StrToInt(Copy(MyNo,2,2)) > 0) then My100 :=My100+ MyAnd; if (StrToInt(Copy(MyNo,3,1)) > 0) and (StrToInt(Copy(MyNo,2,1)) > 1) then My1 :=My1+ MyAnd; GetTxt := My100 + My1 + My10; if (StrToInt(Copy(MyNo,3,1)) = 1) and (StrToInt(Copy(MyNo,2,1)) = 1) then begin GetTxt := My100 + My11; if (StrToInt(Copy(MyNo,1,1)) = 0)then GetTxt := My11 ; end; if (StrToInt(Copy(MyNo,3,1)) = 2) and (StrToInt(Copy(MyNo,2,1)) = 1) then begin GetTxt := My100 + My12 ; if (StrToInt(Copy(MyNo,1,1)) = 0)then GetTxt := My12 ; end; if (i = 0) and (GetTxt <> '') then begin if (StrToInt(Copy(MyNo,1,3)) = 1) or (StrToInt(Copy(MyNo,1,3)) > 10 )then begin Mybillion := GetTxt + ' مليار'; end else begin Mybillion := GetTxt + ' مليارات'; if (StrToInt(Copy(MyNo,1,3)) = 2) then Mybillion := ' ملياران'; end; end; if (i = 3) and (GetTxt <> '') then begin if (StrToInt(Copy(MyNo,1,3)) = 1) or (StrToInt(Copy(MyNo,1,3)) > 10 )then begin MyMillion := GetTxt + ' مليون'; end else begin MyMillion := GetTxt + ' ملايين'; if (StrToInt(Copy(MyNo,1,3)) = 2) then MyMillion := ' مليونان'; end; end; if (i = 6) and (GetTxt <> '') then begin if (StrToInt(Copy(MyNo,1,3)) > 10 )then // if (StrToInt(Copy(MyNo,1,3)) = 1) or (StrToInt(Copy(MyNo,1,3)) > 10 )then begin MyThou := GetTxt + ' ألف'; end else begin MyThou := GetTxt + ' آلاف'; if (StrToInt(Copy(MyNo,3,1)) = 2) then MyThou := ' ألفان'; if (StrToInt(Copy(MyNo,3,1)) = 1) then MyThou := ' ألف'; end; end; if (i = 9) and (GetTxt <> '') then MyHun := GetTxt; if (i = 12)and (GetTxt <> '') then MyFraction := GetTxt; end; i :=i + 3; end; if (MyBillion<>'') then begin if (MyMillion <> '') Or (MyThou <> '') Or (MyHun <>'')then MyBillion := MyBillion + MyAnd; end; if (MyMillion<>'') then begin if (MyThou <> '') Or (MyHun <>'') then MyMillion := MyMillion + MyAnd; end; if (MyThou <>'') then begin if (MyHun <>'') then MyThou := MyThou + MyAnd; end; if MyFraction <> '' then begin if (Mybillion <> '') Or(MyMillion <> '') Or (MyThou <> '') Or (MyHun <>'')then begin Result := Mybillion + MyMillion + MyThou + MyHun + ' ' + MyCur + MyAnd + MyFraction + ' ' + MySubCur ; end else begin Result := MyFraction + ' ' + MySubCur; end; end else begin Result := Mybillion + MyMillion + MyThou + MyHun + ' ' + MyCur ; end end; procedure Page1OnBeforePrint(Sender: TfrxComponent); begin Memo1.Text :='مبلغا وقدره / ' + NoToTxt(<frxReceipt."REarnestM">,'دينار','درهم')+' فقط لا غير '; end; begin end.



كيف يتم تفقيط مبلغ مالي داخل fast report - NOURI - 28-04-2015

شكرا اخي hinry14 على الاهتمام
المشكل لا استطيع اضافة code داخل فاست رابور


كيف يتم تفقيط مبلغ مالي داخل fast report - chikh - 01-05-2015

اصنع function في دلفي ومن ثم استعمل addfunction في fastreport . تصبح function في متناول fastreport
إليك رابط
كود :
www.fast-report.com/documentation/DevMan/index.html?custom_functions_connection_to_report.htm



RE: كيف يتم تفقيط مبلغ مالي داخل fast report - NOURREDINE2 - 28-02-2024

(01-05-2015, 02:10 PM)chikh كتب : اصنع function في دلفي ومن ثم استعمل addfunction في fastreport . تصبح function في متناول fastreport
إليك رابط
كود :
www.fast-report.com/documentation/DevMan/index.html?custom_functions_connection_to_report.htm

كيف يتم تنفيذ الدالة بعد كتابتها في الود

(28-04-2015, 05:00 AM)henry14 كتب : هذه طريقة للتفقيط داخل fast report ادرج هذه الدالة داخل صفحة Code في الصفحة

كود :
Function NoToTxt(TheNo:Double;MyCur:String;MySubCur:String): String; var MyArry1 : Array [0..9] of String; MyArry2 : Array [0..9] of String; MyArry3 : Array [0..9] of String; MyNo :String; GetNo:String; RdNo :String; My100:String; My10 :String; My1  :String; My11 :String; My12 :String; GetTxt :String; Mybillion : String; MyMillion : String; MyThou :String; MyHun : String; MyFraction :String; MyAnd :String; i : Integer; begin if TheNo > 999999999999.99 then Exit; if TheNo = 0 then begin Result := 'صفر'; Exit; end; MyAnd := ' و'; MyArry1[0]:=''; MyArry1[1]:='مائة'; MyArry1[2]:='مائتان'; MyArry1[3]:='ثلاثمائة'; MyArry1[4]:='أربعمائة'; MyArry1[5]:='خمسمائة'; MyArry1[6]:='ستمائة'; MyArry1[7]:='سبعمائة'; MyArry1[8]:='ثمانمائة'; MyArry1[9]:='تسعمائة'; MyArry2[0]:=''; MyArry2[1]:=' عشر'; MyArry2[2]:='عشرون'; MyArry2[3]:='ثلاثون'; MyArry2[4]:='أربعون'; MyArry2[5]:='خمسون'; MyArry2[6]:='ستون'; MyArry2[7]:='سبعون'; MyArry2[8]:='ثمانون'; MyArry2[9]:='تسعون'; MyArry3[0]:=''; MyArry3[1]:='واحد'; MyArry3[2]:='اثنان'; MyArry3[3]:='ثلاثة'; MyArry3[4]:='أربعة'; MyArry3[5]:='خمسة'; MyArry3[6]:='ستة'; MyArry3[7]:='سبعة'; MyArry3[8]:='ثمانية'; MyArry3[9]:='تسعة'; //====================== GetNo := FormatFloat('000000000000.00',TheNo); i := 0; while i < 15 do begin if i < 12 then begin   MyNo := Copy(GetNo,i+1,3); end else begin   MyNo := '0' +Copy(GetNo,i+2,2); end; if StrToInt(Copy(MyNo,1,3)) > 0 then begin RdNo := Copy(MyNo,1,1); My100 := MyArry1[StrToInt(RdNo)] ; RdNo := Copy(MyNo,3,1); My1 := MyArry3[StrToInt(RdNo)] ; RdNo := Copy(MyNo,2,1); My10 := MyArry2[StrToInt(RdNo)] ; if (StrToInt(Copy(MyNo,2,2)) = 11)then     My11 :=  'إحدى عشر'; if (StrToInt(Copy(MyNo,2,2)) = 12)then     My12 :='إثنى عشر' ; if (StrToInt(Copy(MyNo,2,2)) = 10)then     My10 :='عشرة' ; if  (StrToInt(Copy(MyNo,1,1)) > 0) and (StrToInt(Copy(MyNo,2,2)) > 0) then       My100 :=My100+ MyAnd;   if  (StrToInt(Copy(MyNo,3,1)) > 0)   and (StrToInt(Copy(MyNo,2,1)) > 1) then       My1 :=My1+ MyAnd;   GetTxt := My100 + My1 +  My10;   if (StrToInt(Copy(MyNo,3,1)) = 1) and (StrToInt(Copy(MyNo,2,1)) = 1) then     begin       GetTxt := My100 + My11;       if (StrToInt(Copy(MyNo,1,1)) = 0)then       GetTxt := My11 ;   end;   if (StrToInt(Copy(MyNo,3,1)) = 2) and (StrToInt(Copy(MyNo,2,1)) = 1) then     begin       GetTxt := My100 + My12 ;       if (StrToInt(Copy(MyNo,1,1)) = 0)then       GetTxt := My12 ;   end; if (i = 0) and (GetTxt <> '') then begin if (StrToInt(Copy(MyNo,1,3)) = 1) or (StrToInt(Copy(MyNo,1,3)) > 10 )then begin   Mybillion := GetTxt + ' مليار'; end else begin   Mybillion := GetTxt + ' مليارات';   if (StrToInt(Copy(MyNo,1,3)) = 2) then Mybillion :=  ' ملياران'; end; end; if (i = 3) and (GetTxt <> '') then begin if (StrToInt(Copy(MyNo,1,3)) = 1) or (StrToInt(Copy(MyNo,1,3)) > 10 )then begin   MyMillion := GetTxt + ' مليون'; end else begin   MyMillion := GetTxt + ' ملايين';   if (StrToInt(Copy(MyNo,1,3)) = 2) then MyMillion :=  ' مليونان'; end; end; if (i = 6) and (GetTxt <> '') then begin if (StrToInt(Copy(MyNo,1,3)) > 10 )then //  if (StrToInt(Copy(MyNo,1,3)) = 1) or (StrToInt(Copy(MyNo,1,3)) > 10 )then   begin   MyThou := GetTxt + ' ألف';   end else begin   MyThou := GetTxt + ' آلاف';   if (StrToInt(Copy(MyNo,3,1)) = 2) then MyThou :=  ' ألفان';   if (StrToInt(Copy(MyNo,3,1)) = 1) then MyThou :=  ' ألف'; end; end; if (i = 9) and (GetTxt <> '') then MyHun := GetTxt; if (i = 12)and (GetTxt <> '') then MyFraction :=  GetTxt; end; i :=i + 3; end; if (MyBillion<>'') then begin if (MyMillion <> '') Or (MyThou <> '') Or (MyHun <>'')then MyBillion := MyBillion + MyAnd; end; if (MyMillion<>'') then begin if (MyThou <> '') Or (MyHun <>'') then MyMillion := MyMillion + MyAnd; end; if (MyThou <>'') then begin if (MyHun <>'') then MyThou := MyThou + MyAnd; end; if MyFraction <> '' then begin   if (Mybillion <> '') Or(MyMillion <> '') Or (MyThou <> '') Or (MyHun <>'')then   begin Result := Mybillion +  MyMillion + MyThou + MyHun + ' ' + MyCur + MyAnd + MyFraction + ' ' + MySubCur ;   end else begin Result :=  MyFraction + ' ' + MySubCur; end; end else begin   Result := Mybillion +  MyMillion + MyThou + MyHun + ' ' + MyCur ; end end;   procedure Page1OnBeforePrint(Sender: TfrxComponent);                                      begin      Memo1.Text :='مبلغا وقدره / ' + NoToTxt(<frxReceipt."REarnestM">,'دينار','درهم')+' فقط لا غير ';            end; begin     end.

كيف يتم تنفيذ هذه الدالة بعد كتابتها في الكود