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;
inşallah anlatabilmişimdi. Çok acil....
Kolay Gelsin....