Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi LabelFelder im QR dynamisch anlegbar? (https://www.delphipraxis.net/3549-labelfelder-im-qr-dynamisch-anlegbar.html)

Mada 18. Mär 2003 15:21


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:

Garby 18. Mär 2003 18:23

nur so als Beispiel...
 
Hallo,

ich habe ein vorhandenes Beispiel ein bisschen modifiziert, sodass es für dich passen sollte:

Delphi-Quellcode:
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.
Ciao,
Garby

Mada 19. Mär 2003 10:25

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