AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

RBuilder - Image - Platzhalter

Ein Thema von Jonas Shinaniganz · begonnen am 24. Jul 2012 · letzter Beitrag vom 26. Jul 2012
Antwort Antwort
Benutzerbild von Jonas Shinaniganz
Jonas Shinaniganz

Registriert seit: 30. Aug 2011
249 Beiträge
 
Delphi XE5 Ultimate
 
#1

RBuilder - Image - Platzhalter

  Alt 24. Jul 2012, 11:20
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
Miniaturansicht angehängter Grafiken
unbenannt.jpg  
Die Leiter der Entwicklungsabteilung dreht total am Mausrad!

Geändert von Jonas Shinaniganz (24. Jul 2012 um 11:27 Uhr)
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

AW: RBuilder - Image - Platzhalter

  Alt 26. Jul 2012, 17:01
Hier etwas Code um auf ReportBuilder Controls zuzugreifen:
Delphi-Quellcode:
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);
PS:
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.
Andreas

Geändert von shmia (26. Jul 2012 um 17:06 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz