![]() |
RBuilder - Image - Platzhalter
Liste der Anhänge anzeigen (Anzahl: 1)
Ich benutze Grade den RBuilder und möchte folgendes:
Der User legt über den Designer ein Template an und speichert es. Auf dem Template legt der User so viele Images und Labels an wie er möchte. Ein Label gehört immer zu einem Image. Die Namen werden nicht verändert, also noch per Default: Image1,Label1,Image2,Label2... etc Die Position kann der User frei bestimmen und das Template dann speichern. Soweit kein Problem. Jetzt möchte Ich aber in einem Event der Reihe nach aus einer ObjectList mit Blöcken welche aus je einem Label+Image bestehen die Platzhalter auf dem Template füllen. Ich bin grade ein bisschen Ratlos wie Ich auf meine Platzhalter zugreifen kann. Das ist mein Block
Delphi-Quellcode:
Dann meine Blockliste in einer anderen KlasseTBlock = class(TPersistent) private FImage : TBitmap; FText : String;
Delphi-Quellcode:
meine noch unvollständige "Generierungs-Prozedur" wo Ich das Template befüllen möchte:
FBlocks : TObjectList;
Delphi-Quellcode:
vielen dank im vorraus ;)
// ReportUnit ist meine Eigene gekapselte Klasse
procedure TReportUnit.Generate; var Template : TppReportTemplate; I: Integer; begin Template := TppReportTemplate.Create(nil); // benutzerdialog für template laden öffnen Template.ShowFileOpenDialog; // wenn noch ein Template geladen ist, dann alte Template Freigeben if Assigned(FReport.Template) then FReport.Template.Free; // neues Template zuweisen FReport.Template := Template; // Template mit Daten füllen wenn entsprechende Platzhalter auf dem Template liegen // Der Reihe nach Image1,2,3,...n // Der Reihe nach Label1,2,3,...n // Wenn noch Daten da sind, aber keine Platzhalten, dann Abbruch // Wenn noch Platzhalter da sind aber keine Daten, dann Abbruch // FBlocks repräsentiert die Daten for I := 0 to FBlocks.Count - 1 do begin // Die Frage ist jetzt Wie Ich die Platzhalter auf FReport anspreche, hab sie mal // ImageI und Text I genannt ImageI := TBlock(FBlocks.Items[I]).FImage; TextI := TBlock(FBlocks.Items[I]).FText; end; end; Habe noch ein Bild beigefügt an dem man sieht wie das Report Template immoment noch ausshen könnte |
AW: RBuilder - Image - Platzhalter
Hier etwas Code um auf ReportBuilder Controls zuzugreifen:
Delphi-Quellcode:
PS:
procedure MachwasMitReportBand(Band: TppCustomBand);
var i: Integer; custom_text: TppCustomText; custom_image : TppCustomImage; begin with Band do begin for i := 0 to ObjectCount - 1 do begin if Objects[i] is TppCustomText then begin custom_text := TppCustomText(Objects[i]); custom_text.Caption := 'Name: '+ custom_text.Name; end else if Objects[i] is TppCustomImage then begin custom_image := TppCustomImage(Objects[i]); custom_image.Picture.Assign(nil); end; end; end; end; MachwasMitReportBand(ppReport1.HeaderBand); Wobei man sich die Frage stellen müsste, ob dein Ansatz überhaupt richtig ist. Man könnte nämlich die Texte, und die Images auch in ein Memory-Dataset schreiben. Anstatt nun zigmal immer wieder einen Text und ein Image auf den Report zu platzieren, bräuchte der Benutzer dies nur einmal zu tun. Ausserdem muss er angeben, wie viele Spalten er haben möchte. Dann wird das Detailband mit dem Memory-Dataset verknüpft und wenn es sein muss können so auch 10000 Bilder gedruckt werden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:24 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