FastReport yazıya çevirme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
KoPilot
Üye
Mesajlar: 185
Kayıt: 05 Eki 2007 08:02

FastReport yazıya çevirme

Mesaj gönderen KoPilot »

Herkese Merhaba;

Fast reporta fastreport diyalog kutusundan parasal değer gönderiyorum. Bu değeri nasıl yazıya çavirebilirim.
(Parasal değeri delphiden göndermiyorum. Fastreportun kendi diyalog penceresinden gönderiyorum)

İyi günler.
Dosyalarınızı kendi bulutunuza yedekleyin. Yandex Disk
Eyvallah..
orhancc
Üye
Mesajlar: 585
Kayıt: 24 Ağu 2010 02:14
Konum: İstanbul / Kadıköy
İletişim:

Re: FastReport yazıya çevirme

Mesaj gönderen orhancc »

FastScript ile bir procedure yazıp gösterebilirsin ya da Delphiden Fastreport içine parametre ile yazı şeklinde gönderebilirsin.
Kullanıcı avatarı
KoPilot
Üye
Mesajlar: 185
Kayıt: 05 Eki 2007 08:02

Re: FastReport yazıya çevirme

Mesaj gönderen KoPilot »

orhancc yazdı:FastScript ile bir procedure yazıp gösterebilirsin ya da Delphiden Fastreport içine parametre ile yazı şeklinde gönderebilirsin.
Hocam script yazmayı bilmiyorum. Delphi içinden gönderebilirim ama iş baya uzuyor. Çünkü fastreport diyalogdan gönderdiğim epey bi veri var.
Dosyalarınızı kendi bulutunuza yedekleyin. Yandex Disk
Eyvallah..
Kullanıcı avatarı
KoPilot
Üye
Mesajlar: 185
Kayıt: 05 Eki 2007 08:02

Re: FastReport yazıya çevirme

Mesaj gönderen KoPilot »

Sorum hala güncel.

Bir yöntemini bulamadım. Valla kırk çeşidini denedim, fastreportun kendi diyalog kutusundan gönderdiğim rakamı yazıya çeviremiyorum.
Dosyalarınızı kendi bulutunuza yedekleyin. Yandex Disk
Eyvallah..
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: FastReport yazıya çevirme

Mesaj gönderen sabanakman »

Fast Report üzerinde kullanılacak Bileşen - Fonksiyon eklemeyi araştırın veya Fast Script üzerinde çalışın. Bu noktadan sonrası, çalışma gerektirdiği için bu araştırmayı ve çalışmayı sizin yerine başkasının yapmasını beklemek biraz abes olacaktır. Belli ki sorunuz üzerinde çalışan birisi henüz ya olmamış veya sorunuzu okumamış olabilir. Soru uzun süredir güncel olduğu için iş artık kolları sıvamanıza bakıyor.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: FastReport yazıya çevirme

Mesaj gönderen sabanakman »

Yine de dayanamadım, balığı kendim tutarak sunayım :mrgreen: . FastReport kod bloğunda verdiğim fonksiyonları yazarsanız mesele hallolacaktır.

Kod: Tümünü seç

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;
{Sayi yi Türkçe okunacak şekilde yazı üretir...................................}
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;

begin

end.
Bu fonksiyonu bizzat bir raporda denedim ve frxMemo içerisine "[RakamOku(125)]" yazarak çalıştırdım, sonuç YüzYirmiBeş şeklinde geldi. İyi çalışmalar.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
KoPilot
Üye
Mesajlar: 185
Kayıt: 05 Eki 2007 08:02

Re: FastReport yazıya çevirme

Mesaj gönderen KoPilot »

Hocam ilginiz için teşekkür ederim.

Ama isteğim hazır kod değil (balık tutmayı sevmem ama bilmem gerektiğini düşünüyorum :mrgreen: ), istediğimi tam anlatamadım galiba.

Fastreport un kendi diyalog penceresinden aldığım bilgiyi yazdırmak istiyorum.
Bir rapor hazırladım birde diyalog formu bu formda bir adet frxedit var (ikisinide fastreportta yaptım) rapor göster dediğimde bu diyalog geliyor. Ben bu edite yazdığım rakamın yazılmasını istiyorum ama bir türlü beceremedim. Daha doğrusu editteki rakamı almayı beceremedim.

Mesela sizin kodunuz üzerinden

Kod: Tümünü seç

[rakamyaz(edit1.text)]
yapınca geçersiz işlem gösteriyor.

Kod: Tümünü seç

[rakamyaz(125)]
yazınca sorun yok ama diyalog kutusundan parametre gönderemiyorum.

Fastreport diyalogda ki butonun kliğine

Kod: Tümünü seç

memo26.text:=edit1.text;
yazdım yine olmadı.
Dosyalarınızı kendi bulutunuza yedekleyin. Yandex Disk
Eyvallah..
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: FastReport yazıya çevirme

Mesaj gönderen sabanakman »

Tip yüzünden veya nesne ismi ve özelliklerinde hatalı değer yüzünden sorun çıkıyor olabilir . Zaten gelen hata mesajı bunu size söylüyor olmalı. Hata mesajları genel olarak üstünde durulması gereken en önemli noktanın altını çizer. (Hata mesajı yoksa bile) Sorunun ne olduğu belirtilmediği için bir fikir beyan etmek imkansız.
Buyrun size balık :mrgreen: ..:

Kod: Tümünü seç

[RakamOku(StrToInt(Edit1.Text))]
Konu ile alakalı yapmış olduğum örnek çalışma dosya olarak ekte var.
Dosya ekleri
Deneme.rar
Deneme.fr3 isimli raporda uygulamalı örneği
(1.46 KiB) 251 kere indirildi
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
KoPilot
Üye
Mesajlar: 185
Kayıt: 05 Eki 2007 08:02

Re: FastReport yazıya çevirme

Mesaj gönderen KoPilot »

Hocam ilginiz için teşekkür ederim.

Bazen insan kör olabiliyor demek ki

[RakamOku(StrToInt([Edit1.Text]))]

Yaptığım denemelerin tamamında yukarıdaki hatayı yapmışım (hemde kaç gündür) :oops: :oops: ...

Tekrar teşekkür ederim.
Dosyalarınızı kendi bulutunuza yedekleyin. Yandex Disk
Eyvallah..
erkanoz07
Üye
Mesajlar: 9
Kayıt: 11 Mar 2008 01:46

Re: FastReport yazıya çevirme

Mesaj gönderen erkanoz07 »

Merhaba biraz eski bir konu fakat benim de bir sorum olacak;

data dan çağırdığım bedeli yazıya dökmeye çalışıyorum fakat hata alıyorum.
[RakamOku(StrToInt([frxDBDataset1."bedel"]))]

Sürekli söz dizimi hatası alıyorum.

hatayı nerede yapıyorum bulamadım. Teşekkür ederim.
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: FastReport yazıya çevirme

Mesaj gönderen denizfatihi »

Kod: Tümünü seç

Function SayiYaziKurus(Rakam: Extended; ParaBirimi: String; KurusBirimi: String;Ondalik:Integer): string;
var
        Asil, Kurus: Extended;
        Say, Onda: Integer;
Function SayiYazi(Sayi: Extended): String;
Const
Yuzler: Array[1..3,0..9] of String=(
        ('','Yüz','İkiYüz','ÜçYüz','DörtYüz','BeşYüz','AltıYüz','YediYüz','SekizYüz','DokuzYüz'),
        ('','On','Yirmi','Otuz','Kırk','Elli','Altmış','Yetmiş','Seksen','Doksan'),
        ('','Bir','İki','Üç','Dört','Beş','Altı','Yedi','Sekiz','Dokuz'));
Binler: Array[1..8] of String=
        ('KatTrilyar','Trilyar','KatTrilyon','Trilyon','Milyar','Milyon','Bin','');
Var
        FloR: TFloatRec;
        FloV: TFloatValue;
        i, y, z: Integer;
        Parca : String;
        ASt: String[24];
        EkSt: String[26];
        AraSonuc, Sonuc: String;
        n, hane: Integer;
Begin
        Sonuc:='';
        FloV:= fvExtended;
        FloatToDecimal(FloR,Sayi,FloV,18,0);
        ASt:=FloR.Digits;
        n:=length(ASt);
        if FloR.Exponent<>Length(ASt) then
        begin
        EkSt:='';
        FillChar(EkSt,FloR.Exponent-n+1,'0');
        EkSt[0]:=Chr(FloR.Exponent-n);
        ASt:=ASt+EkSt;
        end;
        n:=Length(ASt);
        if n<24 then
        begin
        EkSt:='';
        FillChar(EkSt,24-n+1,'0');
        EkSt[0]:=Chr(24-n);
        ASt:=EkSt+ASt;
        end;
        n:=Length(ASt);
        i:=1;
        hane:=1;
        while i<n do
        begin
        Parca:=Copy(ASt,i,3);
        AraSonuc:='';
        for y:=1 to 3 do
        begin
        z:=StrToInt(Copy(Parca,y,1));
        AraSonuc:=AraSonuc+Yuzler[y,z];
        end;
        if AraSonuc<>'' then AraSonuc:=AraSonuc+Binler[hane];
        if AraSonuc='BirBin' then AraSonuc:='Bin';
        i:=i+3;
        Inc(hane);
        Sonuc:=Sonuc+AraSonuc;
        end;
        SayiYazi:=Sonuc;
end;
begin
        if Ondalik > 0 then
        begin
        Onda := 1;
        for say := 1 to Ondalik do
        begin
        Onda := 10*Onda;
        end;
        end;
        Asil:= int(Rakam);
        Kurus:= frac(Rakam);
        if Asil > 0 then
        begin
        if Kurus = 0 then
        begin
        Result := SayiYazi(asil)+Parabirimi;
        end else
        begin
        Result := SayiYazi(asil)+Parabirimi+' '+SayiYazi(Kurus)+ KurusBirimi;
        end;
        end else
        begin
        if Asil = 0 then
        begin
        Result := 'Sıfır'+ParaBirimi;
        end;
        if kurus > 0 then
        begin
        Result := SayiYazi(Kurus)+ Kurusbirimi;
        end else
        begin
        if Kurus < 0 then
        begin
        Result := 'Eksi'+SayiYazi(Kurus)+ Kurusbirimi;
        end;
        end;
        if Asil < 0 then
        begin
        if Kurus = 0 then
        begin
        Result := 'Eksi'+SayiYazi(asil)+Parabirimi;
        end else
        begin
        Result := 'Eksi'+SayiYazi(asil)+Parabirimi+' '+SayiYazi(Kurus)+ KurusBirimi;
        end;
        end;
        end;
        end;
Kullanımı

Kod: Tümünü seç

Edit3.Text := SayiYaziKurus(StrtoCurr(Sozlesme.fieldbyname('MAAS').AsVariant),' TL',' Kr.',2);
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Re: FastReport yazıya çevirme

Mesaj gönderen adelphiforumz »

Çok önceden yazılmış bir kod
şimdiye kadar sorun çıkarmadı

FastReport Code Kısmına yazılan

Kod: Tümünü seç

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;          


FastReport'ta Tutarı elde ettiğin nesnenin "OnAfterPrint" kısmı "memoYazdir" yazının görüneceği nesne oluyor

Kod: Tümünü seç

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ş ';
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
serdarbala
Üye
Mesajlar: 1
Kayıt: 10 Şub 2018 11:27

Re: FastReport yazıya çevirme

Mesaj gönderen serdarbala »

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;
{Sayi yi Türkçe okunacak şekilde yazı üretir...................................}
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;
// ÖRNEK [RakamOku(10000000001)] METİN KUTUSUNA BUNU YAZARSAN SONUCU METİN OLARAK DÖNECEK

function RakamOkuKurus (para:Extended):String;
var
tamkismi:string;
kuruskismi:string;
begin
tamkismi:='';
kuruskismi:='';

tamkismi:= RakamOku(trunc(para))+' TL ';

// Round round(para*100)/100

//showmessage(floattostr(para));

// showmessage(floattostr( round(para*100)));


//kuruskismi:=RakamOku( round(para*100) );

// kuruskismi:=RakamOku(trunc(Frac(round(para*100)/100)*100))+' KR';

kuruskismi:=RakamOku(round(Frac(para)*100))+' KR';


result:=tamkismi+kuruskismi;

end;


// örnek kullanım text objesinde [RakamOkuKurus(<Kasa."GELIR">)]
begin

end.
Cevapla