![]() |
LabelFelder im QR dynamisch anlegbar?
Hi zusammen! :)
gibt es irgendwie die Möglichkeit beim Quickreport dynamisch Labelfelder generieren zu lassen? Im Detailband sollen die einfach untereinander geschrieben werden. Es gibt keine Datenbank im Hintergrund! Die Felder sollen im Quellcode direkt belegt werden. Ich habe einen Array, der mit bestimmten Werten gefüllt. Der Array an sich hat schon eine feste Länge, aber wieviele Einträge am Ende belegt sind, kann ich im Voraus nicht sagen. Im DetaildBand soll nun jeder Eintrag, der nicht 0 ist dargestellt werden,(die unbelegten werden mit 0 aufgefüllt). Dann können eben mal 2 oder auch mal 5 oder so sein. Wie kann ich das im Quickreport anlegen? Mir sind nur fest reservierte Labelfelder bekannt. Ansicht des Arrays 23 45 49 0 0 0 0 ... 18 53 12 0 0 0 0 ... Hat mir jemand einen Tipp wie ich das machen kann? Ich dachte an eine while schleife, die als Abbruchbedingung eben hat, dass der Wert im Array 0 wird (also der erste nicht belegt Wert) Nur ich weiß halt nicht wie ich die LabelFelder dynamisch in QReport hinbekomme. Irgenwie QrLabel[n].Caption := 'Irgendwas'; und auch n:=n+1; :idea: Ich habe noch keinen Quellcode da ich noch am Ansatzsuchen bin. Aber wenn das jemand schon mal gemacht hat, wäre ich um ein paar Tipps dankbar! :coder: Gruß, Mada :cat: |
nur so als Beispiel...
Hallo,
ich habe ein vorhandenes Beispiel ein bisschen modifiziert, sodass es für dich passen sollte:
Delphi-Quellcode:
Ciao,
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, QuickRpt, QRCtrls, StdCtrls; type TForm1 = class(TForm) btnDrucken: TButton; procedure btnDruckenClick(Sender: TObject); private { Private-Deklarationen } procedure ArrayDrucken(Arr: array of Integer); public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} { TForm1 } procedure TForm1.ArrayDrucken(Arr: array of Integer); var i, aTop:Integer; begin aTop := 0; with TQuickRep.Create(nil) do begin Bands.HasDetail := True; for i := Low(Arr) to High(Arr) do if Arr[i] <> 0 then with TQRLabel(Bands.DetailBand.AddPrintable(TQRLabel)) do begin Left := 0; Top := aTop + Font.Size * 2; aTop := Top; AutoSize := True; Caption := IntToStr(Arr[i]); Font.Style := [fsBold]; end; // End With Font.Size := 8; Bands.HasPageFooter := True; with TQRSysData(Bands.PageFooterBand.AddPrintable(TQRSysData)) do begin Data := qrsDate; AlignToBand := True; Alignment := taRightJustify; Top := 2; end; // end with with TQRSysData(Bands.PageFooterBand.AddPrintable(TQRSysData)) do begin Data := qrsPageNumber; Text := 'Seite '; AlignToBand := True; Alignment := taLeftJustify; Top := 2; end; // end with PreviewModal; Free; end; end; procedure TForm1.btnDruckenClick(Sender: TObject); begin ArrayDrucken([1, 2, 3, 0, 6, 5, 0, 3, 2, 3, 0, 6, 5, 0, 3, 2, 3, 0, 6, 5]); end; end. Garby |
Ok, danke Dir. Das versuche ich mal.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz