FastReport ta Her bir Kayıt için ayrı bir değer getirme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
kara_kule06
Üye
Mesajlar: 150
Kayıt: 18 Nis 2006 02:15
Konum: ankara/polatlı
İletişim:

FastReport ta Her bir Kayıt için ayrı bir değer getirme

Mesaj gönderen kara_kule06 »

Herkese slm.


Benim acil bi sorunum var ama nasıl olacağını bulamadım. Fastreport kullanıyorum. size yapmak istediğimni bir örnek üzerinden anlatsam daha doğru olur.
Elimizde 2 adet iller ve ilçeler tablosu var. ben illeri yazacam ve illerin altına ise o ilin ilçelerini sıralıyacam. her bit il satırı için bu böyle olacak. yani raporda bir masterdata m var illeri getiren ben bu master datanın içine o ilin ilçelerinin (alt alta veya yanyana farketmez) memo nesnelerine yazdırmak istiyorum.

Aslında frDBDataSet nesnesinin onNext olayında işi çözdüm ama memo nesnelerini dinamik olarak eklemiyor. kod aşağıda

Kod: Tümünü seç


function ReturnFilledMemo(x,y,w,h: integer;FontSize:integer;name,text:String):TFrMemoView;
var
memo:TFrMemoView;
Begin
memo:=TFrMemoView.Create;
memo.Name:=name;
memo.SetBounds(x,y,w,h);
memo.Font.Size:=fontsize;
memo.Memo.Add(text);
memo.FillColor:=clRed;
result:=memo;
End;


procedure TfrmMain.frDBDataSet1Next(Sender: TObject);
begin
   KurumlariYazdir();
end;

procedure TfrmMain.BitBtn1Click(Sender: TObject);
begin
   frf.LoadFromFile(ExtractFileDir(Application.ExeName)+'\frf.frf');
   frf.ShowReport;
end;

procedure TfrmMain.KurumlariYazdir();
var
i: integer;
x,y,w,h: integer;
memo:TFrMemoView;
Begin

if dm.tblIlleril_kodu.AsString<>'28' then exit;
 dm.quIlce.Close;
 dm.quIlce.Sql.Text:='Select * from KopKurumlar where il_kodu='''+dm.tblIlleril_kodu.AsString+'''';
 dm.quIlce.Open;
 dm.quIlce.Refresh;

 w:=96;
 h:=18;
 x:=frf.FindObject('ilcebaslik').x; // İLÇELERİN yazılacağı x koordinatını ilçe headerden alıyor.
 y:=frf.FindObject('ilcebaslik').y+19;

 for i:=1 to dm.quIlce.RecordCount do
 Begin
   dm.quIlce.RecNo:=i;
   memo:=ReturnFilledMemo(x,y,w,h,7,'KRM_'+dm.tblIlleril_kodu.AsString+'_'+inttostr(i), dm.quIlcekurumadi.AsString);
   frf.Pages[0].Objects.Add(memo);
   y:=y+19;
 ENd;


End;

normalde ReturnFilledMemo fonksiyonu ile Memo nesnesi ekliyebilirken. OnNext olayını kullanıdğım zaman eklemiyor.

inşallah anlatabilmişimdi. Çok acil....


Kolay Gelsin....
İlim öğrenmek akıntıya karşı yüzmek gibidir. Ara verildiği zaman gerilenir...
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

bunun için koda gerek yok... kayıtları ile göre sıralayıp listeyi ise ile göre grpladığınızda olur bu iş. report wizard bu iş için oldukca acıklayıcı olur.

daha özel bir şeyse istediğiniz bilemiyorum.
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Kullanıcı avatarı
kara_kule06
Üye
Mesajlar: 150
Kayıt: 18 Nis 2006 02:15
Konum: ankara/polatlı
İletişim:

Mesaj gönderen kara_kule06 »

galiba anlatamadım. Çalışma anında her bir kayda farklı sayıda memo nesnesi eklemem gerekiyor. Senin dediğin de olur ama benim ki bir örnek. Anlattığım şekilde yapmam gerek.
İlim öğrenmek akıntıya karşı yüzmek gibidir. Ara verildiği zaman gerilenir...
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

fast report manuallerinde buna benzer bir örnek vardı sanırım. csunguray ile otomatik rapor oluşturucu yazmaya çalışırken böyle bir örnek bulmuş ve modifiye etmişti. fastreport içine boş bir sayfa açıp form üzerinde her field için ayrı bir memo ekleyip ayarı yapıyordu. tam olarak sizin istediğiniz değil ama işiniz görülür sanırım. fast report manuallerini kurcalarsanız bulursunuz.
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Kullanıcı avatarı
kara_kule06
Üye
Mesajlar: 150
Kayıt: 18 Nis 2006 02:15
Konum: ankara/polatlı
İletişim:

Mesaj gönderen kara_kule06 »

ikutluay teşekkürler.


Kolay gelsin...
İlim öğrenmek akıntıya karşı yüzmek gibidir. Ara verildiği zaman gerilenir...
Cevapla