Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   FastReport - Felder per Script hinzufügen (https://www.delphipraxis.net/179163-fastreport-felder-per-script-hinzufuegen.html)

fillibuster 18. Feb 2014 08:00

FastReport - Felder per Script hinzufügen
 
Hallo,

für einen Report muss ich dynamisch Felder zu einem Databand hinzufügen - per Script. Kann mir jemand sagen, wie dass per Script funktioniert?

Danke und beste Grüße

Union 18. Feb 2014 08:03

AW: FastReport - Felder per Script hinzufügen
 
Während der Report bereits läuft oder vorher?

fillibuster 18. Feb 2014 08:20

AW: FastReport - Felder per Script hinzufügen
 
Hi,

eigentlich während der Report läuft. Derzeit setze ich im Code (Pascalscript) auch Werte, aber da existieren die Felder schon. Nun möchte ich die Felder dynamisch erzeugen oder zumindest dynamisch auf den Bändern verteilen.

Viele Grüße ....

Lemmy 18. Feb 2014 08:28

AW: FastReport - Felder per Script hinzufügen
 
Grundsätzlich kannst Du ja per

memoxx.text := '[[Feldname]]'

den Inhalt eines Textmemos ändern, d.h. auch neue zusätzliche Felder hinzufügen, dann stehen die aber halt nicht zwingend wie bei einer Tabelle untereinander. Wenn Du das erreichen willst, dann ein TfrxMemo anlegen:

Delphi-Quellcode:
var frxMemo: TfrxMemoView;                                                      
begin
  frxMemo := TfrxMemoView.Create(ReportTitle1);
  frxMemo.Text := 'Hallo Welt';
  frxMemo.left := 10;
  frxMemo.top := 40;
  frxMemo.width := 200;
  frxMemo.height := 30;
Die Position musst du halt entsprechend festlegen, ggf. die anderen Memos verkleinern und verschieben.. Im grunde also wie in Delphi....


Edit: Das ganze halt im OnBevorPrint vom Report...

fillibuster 18. Feb 2014 08:42

AW: FastReport - Felder per Script hinzufügen
 
Hi,

wenn ich ein Datenfeld ansprechen will, muss ich dann noch irgendwie das Dataset zuweisen? So will das nicht:
Delphi-Quellcode:
procedure frxReportOnReportPrint(Sender: TfrxComponent);
var
memoBaujahr : TfrxMemoView;  
begin
  memoBaujahr         := TfrxMemoView.Create(Masterdata1); // Masterdata1 ist mit dem entsprechenden Dataset verbunden!                                                                                       
  memoBaujahr.Text    := '[referenceDataset."Baujahr"]';    
  memoBaujahr.left    := 10;
  memoBaujahr.top     := 10;
  memoBaujahr.Width   := 200;
end;
Viele Grüße ...

// edit: habe gerade bemerkt, dass das Feld mit normalem Text auch nicht auf dem Datenband ausgegeben wird :-(

Lemmy 18. Feb 2014 09:14

AW: FastReport - Felder per Script hinzufügen
 
:shock:

ist es echt so schwer 5 Zeilen Code zu kopieren?? (Ok 6 Zeilen ;-))

Delphi-Quellcode:
var
memoBaujahr : TfrxMemoView;
begin
  memoBaujahr := TfrxMemoView.Create(Masterdata1); // Masterdata1 ist mit dem entsprechenden Dataset verbunden!
  memoBaujahr.Text := '[frxUserDataSet1."Name"]';
  memoBaujahr.left := 10;
  memoBaujahr.top := 10;
  memoBaujahr.Width := 200;
  memoBaujahr.Height := 20;                                        
                                 

  memoBaujahr := TfrxMemoView.Create(Masterdata1); // Masterdata1 ist mit dem entsprechenden Dataset verbunden!
  memoBaujahr.DataSet := memo1.Dataset;
  memoBaujahr.DataField := 'Vorname';                                                
  memoBaujahr.left := 210;
  memoBaujahr.top := 10;
  memoBaujahr.Width := 200;
  memoBaujahr.Height := 20;
funktioniert bei mir wunderbar... Den Unterschied zu deinem Code darfst Du selbst suchen ;-)

fillibuster 18. Feb 2014 09:35

AW: FastReport - Felder per Script hinzufügen
 
Hallo Lemmy,

also der folgende Code funktioniert in dem Event ReportOnReport print auch nicht:
Delphi-Quellcode:
procedure frxReportOnReportPrint(Sender: TfrxComponent);
var
memoBaujahr : TfrxMemoView;        
begin
  memoBaujahr := TfrxMemoView.Create(Masterdata1); // Masterdata1 ist mit dem entsprechenden Dataset verbunden!
  memoBaujahr.Text := '[referenceDataset."Baujahr"]';
  memoBaujahr.left := 10;
  memoBaujahr.top := 10;
  memoBaujahr.Width := 200;
  memoBaujahr.Height := 20;
                                 

  memoBaujahr := TfrxMemoView.Create(Masterdata1); // Masterdata1 ist mit dem entsprechenden Dataset verbunden!
  memoBaujahr.DataSet := Masterdata1.Dataset;
  memoBaujahr.DataField := 'Projektnummer';
  memoBaujahr.left := 210;
  memoBaujahr.top := 10;
  memoBaujahr.Width := 200;
  memoBaujahr.Height := 20;
end;
begin
end.
Wenn ich ihn aber direkt zwischen begin und end. setze ist alles gut. Da war der Fehler. Danke :thumb:

Lemmy 18. Feb 2014 09:44

AW: FastReport - Felder per Script hinzufügen
 
sorry vertippt... OnBeforPrint der Page! da sollte das funktionieren!

fillibuster 18. Feb 2014 09:47

AW: FastReport - Felder per Script hinzufügen
 
jau klappt :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:05 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