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:
TBlock = class(TPersistent)
private
FImage : TBitmap;
FText : String;
Dann meine Blockliste in einer anderen Klasse
FBlocks : TObjectList;
meine noch unvollständige "Generierungs-Prozedur" wo Ich das Template befüllen möchte:
Delphi-Quellcode:
// 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;
vielen dank im vorraus
Habe noch ein Bild beigefügt an dem man sieht wie das Report Template immoment noch ausshen könnte