FastReport yazıya çevirme - Baskı Önizleme +- Delphi Can (https://www.delphican.com) +-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3) +--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6) +--- Konu Başlığı: FastReport yazıya çevirme (/showthread.php?tid=1963) |
FastReport yazıya çevirme - adelphiforumz - 13-02-2018 eskileri karıştırırken karşıma çıktı belki birine lazım olur FastReport Code Kısmına yazılan function Basamak(const i:Int):String; begin case i of 1:Result:='Bin'; 2:Result:='Milyon'; 3:Result:='Milyar'; 4:Result:='Trilyon'; 5:Result:='Katrilyon'; 6:Result:='Kentrilyon'; else Result:=''; end; end; function Onlar(const i:Int):String; begin case i of 1:Result:='On'; 2:Result:='Yirmi'; 3:Result:='Otuz'; 4:Result:='Kırk'; 5:Result:='Elli'; 6:Result:='Altmış'; 7:Result:='Yetmiş'; 8:Result:='Seksen'; 9:Result:='Doksan'; else Result:=''; end; end; function Birler(const i:Integer):String; begin case i of 1:Result:='Bir'; 2:Result:='İki'; 3:Result:='Üç'; 4:Result:='Dört'; 5:Result:='Beş'; 6:Result:='Altı'; 7:Result:='Yedi'; 8:Result:='Sekiz'; 9:Result:='Dokuz'; else Result:=''; end; end; function RakamOku(Sayi:Integer):String; const n=9; var i:Byte; UcHane:Word; Yed,UcluHane:String; HangiBasamak:Byte; Negatif,BasamakYaz:Boolean; function Modu(var Sayisi:Word):Byte; begin Result:=Sayisi mod 10; Sayisi:=Sayisi div 10; end; begin if Sayi=0 then Result:='Sıfır' else begin Negatif:=Sayi<0; if Negatif then Sayi:=-Sayi; Result:=''; HangiBasamak:=0; while Sayi>0 do begin UcHane:=Sayi mod 1000; Sayi:=Sayi div 1000; BasamakYaz:=UcHane>0; repeat UcluHane:=''; if ((HangiBasamak=1) and (UcHane=1)) then Break;//sadece bin yazılacaksa i:=Modu(UcHane); UcluHane:=Birler(i); //3 hanenin 1. si i:=Modu(UcHane); UcluHane:=Onlar(i)+UcluHane; //3 hanenin 2. si i:=Modu(UcHane); if i>0 then Yed:='Yüz' else Yed:=''; if i>1 then Yed:=Birler(i)+Yed; UcluHane:=Yed+UcluHane;//3 hanenin 3. sü until True; if BasamakYaz then Result:=UcluHane+Basamak(HangiBasamak)+Result; inc(HangiBasamak); end; if Negatif then Result:='Eksi'+Result else //Delete(Result,1,1); end; end; FastReport'ta Tutarı elde ettiğin nesnenin "OnAfterPrint" kısmı "memoYazdir" yazının görüneceği nesne oluyor var sSayi, sTmp, sYaziTL, sYaziKurus, sTL, sKurus:string; i, iTL, iKurus : Integer; bSwcAyrac : Boolean; begin sKurus := ''; sTL := ''; sSayi := ''; sSayi := Trim(memoGenel.Text); sYaziTL := ''; sYaziKurus := ''; iTL := 0; iKurus := 0; bSwcAyrac := False; i := Length(sSayi); while i > 0 do begin if sSayi[I] in ['0'..'9'] then begin if bSwcAyrac = False then sKurus := sKurus + sSayi[I] else sTL := sTL + sSayi[I]; end else begin if (Length(sSayi) - I) <= 2 then bSwcAyrac := True; end; Dec(I); end; sTmp := ''; if sKurus <> '' then for I := Length(sKurus) downto 1 do sTmp := sTmp + sKurus[I]; sKurus := sTmp; sTmp := ''; if sTL <> '' then for I := Length(sTL) downto 1 do sTmp := sTmp + sTL[I]; sTL := sTmp; if ( (sTL = '') and (sKurus <> '') ) then begin sTL := sKurus; sKurus := ''; end; if sTL <> '' then iTL := StrToInt(sTL); if sKurus <> '' then iKurus := StrToInt(sKurus); sYaziTL := RakamOku(iTL); sYaziKurus := RakamOku(iKurus); memoYazdir.Text:= ' Fatura Genel Toplamı : Yalnız '+sYaziTL+'TL ' +sYaziKurus+'Kuruş '; FastReport yazıya çevirme - akuyumcu63 - 08-02-2020 merhaba; öncelikle paylaşım için teşekkürler, sYaziTL := RakamOku(iTL);<br> sYaziKurus := RakamOku(iKurus);<br> burada hata alıyorum. RakamOku yu bulamadım. Cvp: FastReport yazıya çevirme - adelphiforumz - 08-02-2020 (08-02-2020, Saat: 15:10)akuyumcu63 Adlı Kullanıcıdan Alıntı: merhaba; düzenleme yaptım Cvp: FastReport yazıya çevirme - akuyumcu63 - 11-04-2020 (08-02-2020, Saat: 17:54)adelphiforumz Adlı Kullanıcıdan Alıntı:(08-02-2020, Saat: 15:10)akuyumcu63 Adlı Kullanıcıdan Alıntı: merhaba; merhaba; yaptığınız düzeltme için teşekkür ederim. bir projemde kullanmaya çalışıyorum. bir türlü rakamın yazıyla yazılacağı kutuya yazımını sağlayamadım. çeşitli denemeler yaptım. birTL SıfırKuruş dışında bir sonuç üretemedim. nasıl kullandığımı anlatayım; 1. fonksiyonları raporun kod kısmına kopyalıyorum. 2. toplam tutarın yazılı olduğu ToplamTutar adındaki memo kutusunun onAfterPrint olayına ikinci kodu yazıyorum. sonucu memoYazdir Text kutusuna çağırıyorum. Cvp: FastReport yazıya çevirme - akuyumcu63 - 11-04-2020 ilgli bandın onAfterPrint olayına yazınca kod çalıştı. toplamlar için SysMemo veya Memo nesnesini kullanıyorum. ilgili sütunu toplatıyorum. şöyle bir hata ile karşılaştım, örneğin : 672389,4586 rakamını 6723894586 okuyor. 'is not a valid integer value' hatası veriyor. integer sayının limitlerinin dışına çıktığını söylüyor. sayı limitler içinde kalınca hata vermiyor. sSayi := Trim(ToplamTutar.Text); şeklinde atamayı yapınca memo nun içine yazılan kodu okuyor. rakamsal bir veri gelmiyor. sSayi := FloatToStr(ToplamTutar.Value); şeklinde atamayı yapınca memo nun içindeki rakamsal veriyi okuyor ve yukarıda belirttiğim hata oluşuyor toplam tutarı Queryden hesaplatıp rapora aktarabilirim. tüm işlemi rapor üzerinden yapmak istiyorum. bir çözümünüz varsa paylaşırsanız sevinirim. kolay gelsin. |