Program : Etiket Basma Programı
Veritabanı : Firebird
Raporlama Aracı : Fastreport
Arkadaşlar etiket dizaynını runtimede kullanıcının belirlediği seçeneklere göre bir veritabanına kaydediyor ve raporlama esnasında create ediyorum. Yani etiketin sayısı, boyu , sayfa bilgileri önceden belli değil..
Şimdi sorun şu; diyelim ki bir sayfada 14 etiket var ve daha önceden bunun 5 tanesi yazıdırılmış. Kullanıcı 6. etiketten yazdırmaya başlaması lazım bunun seçimini etiket sayfasının küçük bir örneğini ekranda gösterip seçtiriyorum. Eğer yazıdırılacak etiket (kayıt) sayısı 1 den fazlaysa sorun yok ancak 1 kayıt yazıdırılacaksa aşağıda yazdığım script iş görmüyor.
Ekleme yapabilecek veya başka önerileri olan arkadaşlar varsa sevinirim..
Aynı sorun fastreportun kendi forumunda sorulmuş ve aşağıdaki script önerilmiş (biraz farklı idi orada kopya sayısı felanda vardı bu şekilde sadeleştirdim). Ancak oradada 1 kayıtta problem olduğu anlatılmış ve çözüm bulunamamış.. (Yada çözülmüş ama ingilizcem ve google translate göre çözüm bulunmamış

http://www.fast-report.com/en/forum/ind ... 7&hl=label
Kod: Tümünü seç
var
nbtoskip, skipcount: Integer;
skip: Boolean;
ds: TfrxDataSet;
procedure MasterData1OnAfterPrint(Sender: TfrxComponent);
var
i: Integer;
obj: TObject;
begin
if skip then
begin
ds.first;
Inc(skipcount);
if skipcount = nbtoskip then
begin
for i := 0 to Sender.Objects.Count - 1 do
begin
obj := Sender.Objects[i];
if obj is TfrxMemoView then
Begin
TfrxMemoView(obj).Visible := True;
end;
end;
skip := False;
end;
end;
end;
procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
var
i: Integer;
obj: TObject;
begin
if skip then
begin
for i := 0 to Sender.Objects.Count - 1 do
begin
obj := Sender.Objects[i];
if obj is TfrxMemoView then
TfrxMemoView(obj).Visible := False;
end;
ds.First;
end
else
begin
if (<Line#>-1 = skipcount) then
begin
ds.First;
end;
end;
end;
procedure frxReport1OnStartReport(Sender: TfrxComponent);
begin
nbtoskip := <BOS>;
if nbtoskip > 0 then skip := True;
ds := Report.GetDataset('EtiketKart');
ds.first;
end;
begin
nbtoskip := 0;
skip := False;
skipcount := 0;
end.