Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Werkzeuge (https://www.delphipraxis.net/63-sonstige-werkzeuge/)
-   -   FastReport und Objekte Entscheidungshilfe (https://www.delphipraxis.net/161153-fastreport-und-objekte-entscheidungshilfe.html)

haentschman 19. Jun 2011 16:28

FastReport und Objekte Entscheidungshilfe
 
Hallo alle miteinander... :hi:

Früher hab ich dem FastReport einfach DataSet´s übergeben... und gut. 8-)
Nun habe ich ein komplexes Objekt was aus Properties und Listen anderer Objekte besteht. Dieses Objekt soll nun dargestellt werden. Für die Listen würde man normalerweise je ein DataSet benötigen und für die Properties ein weiteres.
Welchen Weg würdet ihr als "optimal" vorschlagen:
1. Die Daten wegspeichern und die Daten mit Query´s holen... als DataSet übergeben
2. Virtuelle Tabellen anlegen und das Objekt auf die Tabellen aufteilen... als DataSet übergeben.
3. die Daten im OnGetValue des entsprechenden frxUserDataset einlesen

PS: wenn ich die kompletten Reportsachen auf das DataModule schiebe sind die Datasets verfügbar. Beim kompletten dynamischen Erzeugen ist die Data Liste leer. Wo ist der Haken ?

Danke für Info´s

chaosben 19. Jun 2011 20:13

AW: FastReport und Objekte Entscheidungshilfe
 
Möglichkeit 4:
Wir (auf Arbeit) schieben die Klassen & Objekte in den Report. Da kann man in gewohnter Weise drauf zugreifen.

haentschman 19. Jun 2011 20:52

AW: FastReport und Objekte Entscheidungshilfe
 
Hallo...
Zitat:

Wir (auf Arbeit) schieben die Klassen & Objekte in den Report
diese Möglichkeit kenne ich noch nicht. Könntest du das bitte anhand eines Prinzipbeispieles erläutern ?

Danke...:thumb:

Nachtrag:
ich hab auf die schnelle das: http://stackoverflow.com/questions/4...-to-fastreport
gefunden. Ist es das was du meinst ?

stahli 20. Jun 2011 00:27

AW: FastReport und Objekte Entscheidungshilfe
 
Ich will doch nochmal die virtual print engine als Alternative vorschlagen (falls es nicht FastReport sein muss).

Man zeichnet alles wie auf ein Blatt selbst und ist dadurch sehr flexibel. Automatisierte Ausrichtungen sind möglich.
Es ist natürlich auch etwas Schreibarbeit damit verbunden.

Es gibt keine DB-Anbindung. Eigentlich ideal, um Daten aus Objekten auszugeben...

MarcoWarm 20. Jun 2011 06:42

AW: FastReport und Objekte Entscheidungshilfe
 
ein klein wenig zum Prinzip:

du benötigst ein Objekt, welches deine Daten hält. Wir nennen die Klasse mal
Delphi-Quellcode:
TSettings
. Und die Instanz der Klasse
Delphi-Quellcode:
Settings
.
Diese Klasse und deren Instanz registrierst du bei der Script Engine des Reports. Dafür brauchst du eine solche Klasse:
Delphi-Quellcode:
TSettingsFRFunctions = class(TfsRTTIModule)
  public
    constructor Create(AScript: TfsScript); override;
  end;
Delphi-Quellcode:
constructor TSettingsFRFunctions.Create(AScript: TfsScript);
begin
  inherited;
 
  with AScript do
  begin
    AddClass(TSettings, 'TObject');
    AddConst('Settings', 'TSettings', Integer(Settings));
  end;
end;
Diese Klasse
Delphi-Quellcode:
TSettings
braucht natürlich Eigenschaften. Die Properties, die du im Fastreport sehen/nutzen möchtest müssen unbedingt
Delphi-Quellcode:
published
sein.

Falls deine Klasse
Delphi-Quellcode:
TSettings
Eigenschaften enthält, die nicht published sind, musst du sie dem Script händisch mitteilen:

Delphi-Quellcode:
with AScript do
  begin
    with AddClass(TSettings, 'TObject') do
       AddProperty('Database', 'TpFIBDatabase', GetProp, nil);
  end;
Wenn dein Objekt Methoden benötigt, die du aus dem Report aufrufen musst:
Delphi-Quellcode:
with AScript do
  begin
    with AddClass(TSettings, 'TObject') do
      AddMethod('function Items : TStrings', OnCallMethod);
  end;
In OnCallMethod musst du natürlich definieren, was beim Methodenaufruf passiert.

Jetzt solltest du im Report mit deinem Objekt arbeiten können.

mehr dazu hier: http://logeas.socius-informatique.fr...rManual-en.pdf


Gruss
Marco

Neumann 20. Jun 2011 13:02

AW: FastReport und Objekte Entscheidungshilfe
 
@Stahli

Das Programm sieht nicht schlecht aus (habe es aber nicht getestet). Allerdings scheint mir, dass man das gleiche auch mit Fastreport realisieren könnte. Damit kann ich ja auch beliebige Felder auf der Seite platzieren und z.B. über Variablen oder Tabellen füllen.

Werde es mir bei Gelegenheit noch mal genauer ansehen.

Ralf

stahli 20. Jun 2011 13:16

AW: FastReport und Objekte Entscheidungshilfe
 
Liste der Anhänge anzeigen (Anzahl: 1)
Mit der VPE sind halt so hübsche Sachen möglich, wie in der Anlage (und noch viel mehr), incl. der unterschiedlichen Seitenorientierung innerhalb einer PDF.
Die kostenpflichtigen Varianten können auch ein PDF-Inhaltsverzeichnis erstellen usw.

Ist halt leider recht teuer, daher werde ich jetzt bei dem Schnäppchenangebot bis Ende Juni endlich zuschlagen (immer noch 600 Eu :( ).

So leistungsfähig ist aber nix, was ich mir sonst angesehen habe.

mkinzler 20. Jun 2011 16:24

AW: FastReport und Objekte Entscheidungshilfe
 
In Fastreport kann man einen Report auch programmgesteuert erzeugen

haentschman 20. Jun 2011 18:39

AW: FastReport und Objekte Entscheidungshilfe
 
Hallo erst mal... 8-)

Danke für Eure Tipps.
Damit keine Mißverständnisse aufkommen... Es muß FastReport sein.
1. hat´s Geld gekostet
2. arbeite ich schon lange damit
3. liebe ich das Ding :zwinker:

sooo...
@MarcoWarm:
ok soweit. Die Beispiele beziehen sich eher auf visuelle Objekte. Ich kann mir noch nicht vorstellen, daß die Daten, die teilweise in ObjectListen liegen z.B. in einem Detailband dargestellt werden können...

Konkret:
Object Process (TProcess)...
Property Date (Masterband)
Property State (Masterband)
.
.
Property Positions (TObjectList mit Objekten TPosition) (Detailband)
.

kann ich nach der "Registrierung" das Objekt wie ein Dataset behandeln ? :hi:

Neumann 20. Jun 2011 21:06

AW: FastReport und Objekte Entscheidungshilfe
 
Mit den Objekten habe ich noch nie probiert. Ich würde es so aufbereiten:

Tabellenartige Daten in ein oder mehrere Clientdataset(s), kann man dann z.B. für Masterdata nehmen.

Für alle anderen Variablen im Report anlegen und diese entsprechend füllen; z.B. beim OnGetValue Event.

Ist vielleicht etwas Fleißarbeit, dafür vom Prinzip her einfach.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:43 Uhr.
Seite 1 von 2  1 2      

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