Delphi Can

Orjinalini görmek için tıklayınız: FastReport Dinamik Sayıya Göre Etiket Bastırma [ÇÖZÜLDÜ]
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Arkadaşlar merhaba delphi ile yazdığım programda  FastReport ile 5'li etiket çıktısı almaya çalışıyorum tasarımım hazır bilgiler ve tasarımın çalışmasında sorun yok ancak ben dbgridde barkod sayısı alanına girdiğim sayı kadar etiket bastırmak istiyorum tekli etikette sorun yok girdiğim sayı kadar copya yapıyorum barkod yazıcıdan sorunsuz çıktıyı alabiliyorum ancak 5'li etiket tasarımımda adedi kaç girersem gireyim ön izlemede çıktı 1 adet olarak görünüyor ve yazıcıdan da yan yana 5 adedi doldurup sonra aşağıya geçmesi gerekirken ilk sıradaki etiketleri alıp alt alta baskı yapıyor. Bu konuda yardımlarınızı bekliyorum. 

[attachment=2858] benim tasarımım adet sayısını kaç girersem gireyim bu şekilde çıkıyor
---------------------------------------------------------------------------------------------------------------------
Yapmak istediğim tasarım

[attachment=2854]
[attachment=2853]
[attachment=2855]
[attachment=2856]
[attachment=2857]
Merhaba
Tek satırın (Kaydın) olduğu için tek etiket basıyor.
Tek alanlık geçici bir tablo oluştur. (Sadece bağlantı ID si olsun) Kaç adet etiket istiyorsan etiket sayısı kadar kayıt ekle ve bağlantı ID si olarak ekrandaki kaydın ID sini ver.
bu tabloyu açarak fast reportun masterdata bandının Datasetine bu geçici tabloyu seç. Yaptığın kayıt kadar etiket basacaktır.
Dizayn için de masterdata bandının genişliğini 5 etiket yan yana sığacak genişlikte (boşluklarla beraber) ayarla. masrerbandın column özelliğini 5 yap ve etiket aralarındaki boşluğu ColumnGap a yaz.
procedure TForm4.Button1Click(Sender: TObject);
var
 i: Integer;
 TEmpList: TClientDataSet;
begin
 if Assigned(TempList) then
 begin
   TempList.EmptyDataSet;
 end
 else
 begin
   TempList := TClientDataSet.Create(nil);
   TempList.FieldDefs.Add('URUN_ADI', ftString, 100);
   TempList.FieldDefs.Add('KAREKOD', ftString, 100);
   TempList.FieldDefs.Add('SATIR1', ftString, 100);
   TempList.FieldDefs.Add('SATIR2', ftString, 100);
   TempList.FieldDefs.Add('SATIR3', ftString, 100);
   TempList.FieldDefs.Add('SATIR4', ftString, 100);
   TempList.FieldDefs.Add('SATIR5', ftString, 100);
   TempList.FieldDefs.Add('BARKOD_SAYISI', ftInteger);
   TempList.CreateDataSet;
 end;

 
 fdquery1.First;
 while not fdquery1.Eof do
 begin
   for i := 1 to fdquery1.FieldByName('BARKOD_SAYISI').AsInteger do
   begin
     TempList.Append;
     TempList.FieldByName('URUN_ADI').AsString := fdquery1.FieldByName('URUN_ADI').AsString;
     TempList.FieldByName('KAREKOD').AsString :=  fdquery1.FieldByName('KAREKOD').AsString;
     TempList.FieldByName('SATIR1').AsString := fdquery1.FieldByName('SATIR1').AsString;
     TempList.FieldByName('SATIR2').AsString := fdquery1.FieldByName('SATIR2').AsString;
     TempList.FieldByName('SATIR3').AsString := fdquery1.FieldByName('SATIR3').AsString;
     TempList.FieldByName('SATIR4').AsString := fdquery1.FieldByName('SATIR4').AsString;
     TempList.FieldByName('SATIR5').AsString := fdquery1.FieldByName('SATIR5').AsString;
     TempList.FieldByName('BARKOD_SAYISI').AsInteger := i;
     TempList.Post;
   end;
  fdquery1.Next;
 end;

FRXREPORT1.ShowReport;
 frxDBDataset1.DataSet := TempList;
end;

Arkadaşlar çok şükür sonunda doğru kodu oluşturabildim. Geçici tablo oluşturarak bu tabloya FDQUERY de bulunan BARKOD_SAYISI alanına girilen adet kadar veriyi çektim sonra fastreportün datasetine bu geçici tabloyu bağladım.Umarım sizlerinde işine yarar konu için çaba gösteren herkese teşekkürler.