Delphi-PRAXiS
Seite 2 von 2     12   

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/)
-   -   Zugriff auf dynamisch erstellte Komponente (https://www.delphipraxis.net/161746-zugriff-auf-dynamisch-erstellte-komponente.html)

wendelin 20. Jul 2011 19:52

AW: Zugriff auf dynamisch erstellte Komponente
 
Hallo FredlFesl,

Danke für Deine schnelle Antwort, aber es liegt NICHT an der
alternierenden Farbauswahl, sondern daran,das der Compiler die Komponente "Band".Property nicht erkennt. Ist ja auch logisch, da diese erst zur Laufzeit erzeugt wird und im interface NICHT deklariert ist.

If Odd (MyDataset.Recno) Then
Band.Color := clWhite
else
Band.Color := clGray;

FredlFesl 21. Jul 2011 06:33

AW: Zugriff auf dynamisch erstellte Komponente
 
Na dann pack sie doch da rein, wo sie sichtbar ist. Mach z.B. ein Feld daraus, also...

Delphi-Quellcode:
Type
  TMyReport = Class (TForm)
  ...
  private
     fBand : TQrDetailBand; // Oder wie auch immer die Klasse heißt
  ...
Kann es sein, das Dir gewisse Grundlagen fehlen?

bcvs 21. Jul 2011 08:31

AW: Zugriff auf dynamisch erstellte Komponente
 
Zitat:

Zitat von wendelin (Beitrag 1112456)

Nun möchte ich wegen der besseren Lesbarkeit mit Hilfe von Procedure "BeforePrint" (s.u.) Tabellierpapier simulieren.
Beim Entwurf von QReport (zur Designzeit) gibt es keine Probleme.
In meinem Testprogramm jedoch gibt es zur Designzeit noch keine Komponente "DetailBandXXX". Ein weiteres Problem ist, dass mit jedem
neuen Aufruf von "GridRepPreview(Grid : TDBGrid)" wieder ein neues
Detailband erzeugt wird (und später freigegeben) wird.
Ich habe es schon mit TComponentList bzw. mit TObjectList probiert.
Kein Erfolg. Da ich ein reiner Hobbyprogrammierer bin wäre ich für
ein paar Anregungen oder Lösungsansätze sehr dankbar.

Wendelin

Wenn ich dich richtig verstehe, hast du schon eine funktionierende BeforePrint-Methode, die das Tabellierpapier simuliert. Die must du nur dem dynamisch erzeugten DetailBand zur Laufzeit zuweisen.

Delphi-Quellcode:
  GridRep.Bands.DetailBand.Height := Abs(Grid.Font.Height) + 10;
  GridRep.Bands.DetailBand.BeforePrint:=GridRepBeforePrint;


// Für Tabellierpapier
procedure TGridReport.GridRepBeforePrint(Sender: TCustomQuickRep;
  var PrintReport: Boolean);
begin
  If GridRep.Bands.DetailBand.Color = clWhite THEN
    GridRep.Bands.DetailBand.Color := clMoneyGreen ELSE
    GridRep.Bands.DetailBand.Color := clWhite;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:02 Uhr.
Seite 2 von 2     12   

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