Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Folge von Diagrammen in FastReport ? (https://www.delphipraxis.net/147578-folge-von-diagrammen-fastreport.html)

EccoBravo 11. Feb 2010 22:39


Folge von Diagrammen in FastReport ?
 
Hallo,

folgendes Problem:
(Delphi2007, FastReport, W32, no Database)

Ich habe eine 3D Matrix (i,j,k) und will deren k Ebenen (i,j) in k gleichen Diagrammen mit FastReport abbilden.
In den normalen Forms kein Problem,
aber wie bekomme ich diese k x (i,j)-Ebenen in k frxChart´s von frxReport (in einen k-seitigen Bericht) hinein?

Ich will für k Ebenen in einem Bericht k gleichartige Diagramme, auf jede Seite ein Diagramm, bekommen.
Aus den Demos bin ich hier nicht schlau geworden.

Vielen Dank

EB

EccoBravo 14. Feb 2010 22:07

Re: Folge von Diagrammen in FastReport ?
 
Hallo,

Mit einer Folge von Diagrammen meinte ich soetwas wie die Zeilen in einer Tabelle, eine Zeile entspricht bei mir ein Diagramm. Als Diagrammtyp wollte ich ein 2D-Diagramm z=f(x,y) abbilden.


Danke

EB

EccoBravo 15. Feb 2010 14:51

Re: Folge von Diagrammen in FastReport ?
 
Hallo,

damit mein Problem etwas verständlicher wird, werde ich nun etwas Programmcode beifügen.

Delphi-Quellcode:

procedure TF_Haupt.frxUserDataSet1CheckEOF(Sender: TObject; var Eof: Boolean);
begin
    eof := frxUserDataSet1.Tag > Bild.Bildzahl;
end;

procedure TF_Haupt.frxUserDataSet1First(Sender: TObject);
begin
    frxUserDataSet1.Tag := 1;
end;

procedure TF_Haupt.frxUserDataSet1GetValue(const VarName: string;
    var Value: Variant);
var
    i, j, k: integer;
    WertX, WertY: array of integer;
    WertZ: array of array of single;
begin
    setlength(WertZ, DoseMatrix.Xdim + 2, DoseMatrix.Ydim + 2);
    setlength(WertX, DoseMatrix.Xdim + 2);
    setlength(WertY, DoseMatrix.Ydim + 2);
    //    if VarName = 'Bild' then
    //    begin
    //        for j := 1 to Bild.Ydim do
    //        begin
    //            for i := 1 to Bild.Xdim do
    //            begin
    //                Value[i, j, frxUserDataSet1.Tag] := Bild.GrauMatrix[i, j,
    //                    frxUserDataSet1.Tag] * 65793;
    //            end;
    //        end;
    //    end;
    if VarName = 'Dose' then
    begin
        for j := 1 to DoseMatrix.Ydim do
        begin
            for i := 1 to DoseMatrix.Xdim do
            begin
                WertZ[i, j] := DoseMatrix.Matrix[i, j,
                    frxUserDataSet1.Tag].RelWert;
            end;
        end;
        Value := WertZ;
    end;
    if VarName = 'DoseX' then
    begin
        for i := 1 to DoseMatrix.Xdim do
        begin
            WertX[i] := i;
        end;
        Value := WertX;
    end;
    if VarName = 'DoseY' then
    begin
        for j := 1 to DoseMatrix.Ydim do
        begin
            WertY[j] := j;
        end;
        Value := WertY;
    end;
end;

procedure TF_Haupt.frxUserDataSet1Next(Sender: TObject);
begin
    frxUserDataSet1.Tag := frxUserDataSet1.Tag + 1;
end;

procedure TF_Haupt.frxUserDataSet1Prior(Sender: TObject);
begin
    frxUserDataSet1.Tag := frxUserDataSet1.Tag - 1;
end;

Nun einige Fragen dazu:

1. Kann ich für ein 2D-Chart der Form Z=f(x,y) in der Variable Value von frxDserDataSet1.Chart1 nur eindimensionale Arrays übergeben ?

2. Mir ist immer noch nicht klar: muss für eine no Database Anwendung ins Masterband4 von frxReport eine 0 oder 1 hinein ?

3. Wenn ich im FastReport k 2D-Diagramme aus der Matrix A(k,y,k) abbilden möchte, wo bringe ich den frxUserDataSet1.Tag unter ?

ich werde noch 2 jpg´s nachsenden.

Danke

E.B.

EccoBravo 15. Feb 2010 14:52

Re: Folge von Diagrammen in FastReport ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Nachsendung vom jpg Chart:

EB.

EccoBravo 15. Feb 2010 14:54

Re: Folge von Diagrammen in FastReport ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Nachsendung des jpg´s Masterband.

(Beim Senden von zwei jpg´s kommt bei mir TimeOut, deshalb getrennte Sendung)

Danke für Verständnis

EB.

franktron 15. Feb 2010 16:42

Re: Folge von Diagrammen in FastReport ?
 
Also ich habe TfrxChart selten benutzt aber ich glaube das du die Datenquelle von Chart und die vom MasterData trennen musst.

Grund der Chart brauch ein 2 Zweidimensionales Feld zum Anzeigen und eine Tabelle ist Zweidimensionales und du willst ja eine 3. Dimension haben also eine 2 Tabelle.

EccoBravo 15. Feb 2010 16:46

Re: Folge von Diagrammen in FastReport ?
 
Danke für die Antwort,

Hier noch ein kleiner Zusatz:

Beim Compilieren und Laufenlassens des obigen Chaos´ kommt folgende Fehlermeldung:

Im Project P_EB....exe ist eine Exception der Klasse EVariantTypeCastError mit der Meldung 'Varianre des Typs (Array Integer) konnte nicht in Typ (String) konvertiert werden' aufgetreten.

Ich glaube, dass Eure Glaskugel jetzt mehr sagen kann.

Danke

EB.

EccoBravo 15. Feb 2010 16:52

Re: Folge von Diagrammen in FastReport ?
 
Danke Frank,

wie aber trenne ich Datenquelle des Chart von Masterband
und
wie kriege ich elegant die Daten für ein 3D Diagramm z:=f(x,y) in das Chart von frxReport ?

Da muß es doch einen Weg geben, denn sonst macht mein gewünschter Diagrammtyp in frxReport keinen Sinn.

Danke

EB.

neo4a 15. Feb 2010 17:08

Re: Folge von Diagrammen in FastReport ?
 
Zitat:

Zitat von EccoBravo
wie kriege ich elegant die Daten für ein 3D Diagramm z:=f(x,y) in das Chart von frxReport ?

Ein aus meiner Sicht recht konfliktfreier Ansatz ist es, zur Laufzeit des Reports das Diagramm-Bitmap mit der entsprechenden Komponente zu erstellen und lediglich das Ergebnisbild an Fastreport zu übergeben. Falls Du damit noch nicht so viel Erfahrungen hast, dann erstelle halt vor dem Report-Start die notwendigen Diagramme, sichere sie als Dateien und lade sie im Report wieder an die notwendige Stelle. Optimieren kannst Du dann ja immer noch.

--
Andreas

EccoBravo 15. Feb 2010 17:23

Re: Folge von Diagrammen in FastReport ?
 
Hallo Andreas,

Dein Vorschlag mit dem Auslagern in ein bmp ist sehr gut, aus meinem Programm funktioniert das auch komplikationsfrei.
Nur wie bekomme ich die Latte von Bmp#s zur Laufzeit ins frxReport ?
Mein Wunsch wäre es, k Bilder auf k Seiten des Reports zu bekommen, je seite ein Bild.

Vielen Dank

EB.

neo4a 15. Feb 2010 17:56

Re: Folge von Diagrammen in FastReport ?
 
Zitat:

Zitat von EccoBravo
Hallo Andreas,

Dein Vorschlag mit dem Auslagern in ein bmp ist sehr gut, aus meinem Programm funktioniert das auch komplikationsfrei.
Nur wie bekomme ich die Latte von Bmp#s zur Laufzeit ins frxReport ?
Mein Wunsch wäre es, k Bilder auf k Seiten des Reports zu bekommen, je seite ein Bild.

Vielen Dank

EB.

Da gibt es verschiedene Ansätze:

- dateibasierend, wie angedeutet
- direkt auf den Report-Canvas malen
- im onGetValue-Event ein Bitmap/Dateiname übergeben

Das hängt halt von Deinen Bedingungen ab und wieviel Arbeit Du da investieren willst. Schau Dir vielleicht auch einmal die Demos von FR an.

--
Andreas

haentschman 15. Feb 2010 18:50

Re: Folge von Diagrammen in FastReport ?
 
zum Thema Masterband von Chartdaten trennen:

- Chart Daten wie gehabt
- Masterband auf [nicht zugeordnet] und Anzahl Datensätze 1 (Dann gibt´s das Masterband nur 1 mal mit einem Chart)

...ich hoffe, das nicht falsch verstanden zu haben :hi:

EccoBravo 17. Feb 2010 14:49

Re: Folge von Diagrammen in FastReport ?
 
nochmal zu direkter Diagrammbildung in frx (direkte Datenübertragung in TFrxChartView):

wie übertrage ich denn eine 2D Matrix an Werten ins frxChart ?

All meine Versuche endeten in Fehlermeldungen.
(Siehe Code oben).

Muß ich etwa die 2D-Matrix in einen 1D-Vektor übersaetzten und dann wieder im frx zusammensetzen?

Wie gene ich im 2D-Fall (k 2D-Diagramme) mit dem UserDataSet.tag um ?

Danke

EB.

EccoBravo 17. Feb 2010 15:37

Re: Folge von Diagrammen in FastReport ?
 
Hallo,

Was bedeuten

TfrxChartView().SaveToMetaFile,
TfrxChartView().SaveToStream

oder

TfrxChartView().LoadMetaFile,
TfrxChartView().LoadStraem


Danke

EB

EccoBravo 17. Feb 2010 15:47

Re: Folge von Diagrammen in FastReport ?
 
ich frage deshalb nochmal wegen des direkten Zugriffs auf FrxChart, da der Transfer über Picture1 Bitmap von der Bildqualität zu schlecht ist.

EB

neo4a 18. Feb 2010 09:40

Re: Folge von Diagrammen in FastReport ?
 
Zitat:

Zitat von EccoBravo
ich frage deshalb nochmal wegen des direkten Zugriffs auf FrxChart, da der Transfer über Picture1 Bitmap von der Bildqualität zu schlecht ist.

EB

Ich bin mir fast sicher, dass Dir meine Antwort nicht gefällt, aber: Lass FR das machen, was es am besten kann - Drucken. Benutze (D)eine Spezialkomponente für das "Diagrammen". Dort sitzt die gesamte Logik und Ausführung an zentraler Stelle. Exportiere das Ergebnis als Bitmap an die richtige Stelle Deines Reports. Andere Lösungswege sind sicher denkbar, aber wirklich nicht zu empfehlen: Doppelt/mehrfach vorgehaltene Programmlogik ist eine ganz zuverlässige Fehlerquelle.

Wenn also die/das exportierte Bitmap zu schlecht aufgelöst ist, vergrößere vor dem Export z.B. den Diagramm-Canvas und schalte insbesondere in FR stretching und dergleichen aus.

--
Andreas

EccoBravo 18. Feb 2010 13:18

Re: Folge von Diagrammen in FastReport ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Gut und Danke neo4a,

dann machen wir es so!
Wie würdest Du es machen?
Ich habe imFastreport Developer schon eine Seite (Page4) mit einem Masterband (MasterData4) und einem Image (Picture1) eingerichtet.
Nun will ich aus meinem Delphiprogramm in meinem FR Report z.B 104 2D-Diagramme mit jeweils einer TContourSeries erzeugen
(Den DiagrammTyp habe ich unten angehangen)


Dazu habe ich FastReport 4.0 Programmer´s manual auf Seite 9-10 interessanten Code gefunden

Delphi-Quellcode:
frxReport1.Clear

frxReport1.DataSet.Add(frxReport1);

Page := TfrxDataPage.Create(frxReport1);
Page.CreateUniqueName;
Page.SetDefaults;
Page.Orientation := poLandscape;

Band := TfrxReportTitle.Create(Page);
Band.CreateUniqueName;
Band.Top := 0;
Band.Height := 20;

Memo :=TfrxMemoView.Create(Band);
Memo.CreateUniqueName;
Memo.Text := 'Hello';
Memo.Height := 20;
Memo.Align := baWidth;

DataBand := TfrxMasterData.Create(Page);
DataBand.CreateUniqueName;
DataBand.Top :=100;
DataBand.Height := 20;

Memo.DataSet := frxDBDataSet1;
Memo.DataField := 'CustomNo';
Memo.SetBounds(0,0,100,20);
Memo.Align := haRight;

frxReport1.ShowReport;
Kann ich diesen Code nicht irgendwo gebrauchen ?

Frage nur, wo bringe ich diesen am Besten in meinem Delphiprogramm unter ?

Vielen Dank

EB.

neo4a 18. Feb 2010 18:17

Re: Folge von Diagrammen in FastReport ?
 
Mit Dateien:
1. Erzeugst Du Deine 108 Diagramme und speicherst sie in einem Verzeichnis Deines Vertrauens.
2. im OnBeforePrint des Databands (FR-IDE) schreibst Du

Delphi-Quellcode:
 
  if FINALPASS then begin
    fn:=[DIAGRAMM];
    if fn>'' then Picture.Loadfromfile(fn);
  end;
3. im onGetValue Deines Reports (Delphi-IDE) schreibst Du
Delphi-Quellcode:
  if uppercase(ParName)='DIAGRAMM' then begin
    ParValue:='';
    c:=Format(MainForm.AppDataDir+'Diagramm%d.bmp',[nr]);
    if FileExists(c) then
      ParValue:=c;
  end;
Mit DB:
1. Erzeuge Deine 108 Diagramme und speichere Sie in einem Blob-Feld der passenden Tabelle
2. Verknüpfe die Tabelle mittels Master-Detail-Beziehungen
3. Referenziere Tabelle und Feld im tfrxPictureview

Mit Code:
1. Erstelle alle Seiten aus Delphi heraus ohne visuelles Design.


--
Andreas

EccoBravo 19. Feb 2010 08:24

Re: Folge von Diagrammen in FastReport ?
 
Danke neo4a,

was ist die Variable c in Deinem ersten Beispiel, und was bedeutet die Funktion Format und was steht in nr ?

Danke

EB

EccoBravo 19. Feb 2010 08:57

Re: Folge von Diagrammen in FastReport ?
 
Hallo heo4a,

hast Du Dir den Code so vorgestellt ?

Hier irgendwo werden die 104 Diagramm im Hauptprogramm erzeugt und abgespeichert:

Delphi-Quellcode:
. . .

    for k := 1 to Bild.Bildzahl do
    begin

        CH_Bild1.Refresh;
        CH_Bild1.SaveToBitmapFile('G:\Daten_XP\Eigene RAD\EB_PDF_Arc\Daten\Pat\Test' + IntToStr(k) + '.bmp');
       
    end;

. . .
Dann kommt der Code in der FastReport-IDE unter dem gewünschten Masterband4:

Delphi-Quellcode:
procedure MasterData4OnBeforePrint(Sender: TfrxComponent);
begin
     if FINALPASS then
     begin
         fn:= [DIAGRAMM];
         if fn>'' then  
             Picture.LoadFromFile(fn);                                                                                        
     end;              
end;
Und nun die für mich rätselhafte Stelle im OnGetValue in der Delphi-IDE:

Delphi-Quellcode:
. . .

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

procedure TF_Haupt.frxUserDataSet1CheckEOF(Sender: TObject; var Eof: Boolean);
begin
    eof := frxUserDataSet1.Tag > Bild.Bildzahl - 1;
end;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

procedure TF_Haupt.frxUserDataSet1First(Sender: TObject);
begin
    frxUserDataSet1.Tag := 1;
end;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

procedure TF_Haupt.frxUserDataSet1GetValue(const VarName: string;
    var Value: Variant);
var
    i, j, k: integer;
    c: string;
begin
    if UPPERCASE(VarName) = 'DIAGRAMM' then
    begin
        Value := '';
        c := format('G:\Daten_XP\Eigene RAD\EB_PDF_Arc\Daten\Pat\Test' +
            IntToStr(frxUserDataSet1.tag) + '.bmp',[frxUserDataSet1.tag]);
        if FileExists(c) then
            Value := c;
    end;
end;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

procedure TF_Haupt.frxUserDataSet1Next(Sender: TObject);
begin
    frxUserDataSet1.Tag := frxUserDataSet1.Tag + 1;
end;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

procedure TF_Haupt.frxUserDataSet1Prior(Sender: TObject);
begin
    frxUserDataSet1.Tag := frxUserDataSet1.Tag - 1;
end;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

. . .
Natürlich läuft der Code nicht bei mir. Der Debugger steht bei OnGetValue.

Variable c habe ich einfach als String deklariert. ?

Habe ich das mit frxUserDataSet1.Tag richtig gemacht ?

Wieso muß ich fn nicht deklarieren, was bedeuten DIAGRAMM und FINALPASS ?

Vielen Dank für weitere Hilfe

EB.

neo4a 19. Feb 2010 09:44

Re: Folge von Diagrammen in FastReport ?
 
Zitat:

Variable c habe ich einfach als String deklariert. ?
Gut erkannt.
Zitat:

Habe ich das mit frxUserDataSet1.Tag richtig gemacht ?
Das ist überflüssig. Du kannst im onGetValue frxUserDataSet1.RecNo auswerten. Damit übergibst Du den passenden Dateinamen zu aktuellen Datensatz. Ersetze also in meinem Beispiel die Variable nr entsprechend.
Zitat:

Wieso muß ich fn nicht deklarieren, was bedeuten DIAGRAMM und FINALPASS ?
Das musste man in FR2 noch nicht tun, in FR4 schon, also tu es.

DIAGRAMM ist der Variablennamen, der zur Laufzeit im onGetValue belegt wird. Wenn Du ihn in der FR-IDE nicht vorher irgendwie mit einem Dummy-Wert belegst, wird die Druckvorschau in der IDE nicht funktionieren. Überhaupt funktioniert das alles nur zur Laufzeit Deiner App. Willst Du das auch zur Designzeit haben, sehe ich einen Weg über FR-UDF, aber ich denke, da Du derzeit noch nicht die Bedeutung von FINALPASS kennst ( FR-Systemvariable, die anzeigt, dass bei einem 2-Phasen-Report der 2. Lauf läuft), kommt dieser Weg noch etwas früh für Dich.

Vielleicht noch einmal zum Prinzip: FR löst im Script die Variablennamen auf. Das können Datenfelder oder lokale oder globale Variablen sein. Solange alles im FR-Report passiert, müssen alle Varibalen dort deklariert und belegt sein, ansonsten gibt's Meldungen.

onGetValue stellt nun dem Programmierer einen Mechanismus zur Verfügung, bei dem zur Laufzeit des Programmes der Wert außerhalb des FR-Reports belegt, verändert, gesetzt werden kann. Damit kann man Dinge machen, die man innerhalb FR nicht kann, weil man z.B. keinen Zugriff auf andere Delphi-Komponenten usw. hat.

--
Andreas

EccoBravo 19. Feb 2010 10:09

Re: Folge von Diagrammen in FastReport ?
 
Hallo Andreas,

vielen Dank für Deine ausführliche Antwort,

Ich will nicht nerven, bin aber ein absoluter FR-Anfänger.
Daher meine weitere Fragerei:

Also kann ich die Procedures ...frxUserDataSet1First, ...frxUserDataSet1Next ... usw wegschmeissen?

Wie werte ich dann die RecNo / nr in OnGetValue aus, wenn ich irgendwann im Delphiptogramm eine Liste von Bmp+s derart

Bild1
Bild2
...
Bild104

erzeugt habe.

Vielen Dank

EB.

neo4a 19. Feb 2010 10:38

Re: Folge von Diagrammen in FastReport ?
 
Wenn Du den frxUserDataSet1 an Dein FR-Databand hängst, übernimmt FR die Steuerung für Dich und dann geht es so:

Delphi-Quellcode:
if uppercase(ParName)='DIAGRAMM' then begin
    ParValue:='';
    c:=Format(MainForm.AppDataDir+'Diagramm%d.bmp',[frxUserDataSet1.RecNo]);
    if FileExists(c) then
      ParValue:=c;
  end;

--
Andreas

EccoBravo 19. Feb 2010 11:07

Re: Folge von Diagrammen in FastReport ?
 
Hallo Andreas,
nimm es mir nicht übel, es läuft so noch nicht bei mir.

Entsprechend meines ProgrammCodes:

Delphi-Quellcode:
procedure TF_Haupt.frxUserDataSet1GetValue(const VarName: string;
    var Value: Variant);
var
    i, j, k: integer;
    c: string;
begin
    if UPPERCASE(VarName) = 'DIAGRAMM' then
    begin
        Value := '';
        c := format('G:\Daten_XP\Eigene RAD\EB_PDF_Arc\Daten\Pat\Diagramm%d.bmp',[frxUserDataSet1.RecNo]);
        if FileExists(c) then
            Value := c;
    end;
end;
kennt mein Compiler nicht die Worte ParName und ParValue.
Entsprechend meines Codes habe ich dafür VarName und Value genommen.

Nun kennt mein Compiler auch nicht MainForm.AppDataDir.
Unter F_Haupt. kennt er auch nicht AppDataDir
Also habe ich da mit
Delphi-Quellcode:
'G:\Daten_XP\Eigene RAD\EB_PDF_Arc\Daten\Pat\'
versucht = Negativ.

Dann heißen meine abgespeicherten Bilder

Test1
Test2
. . .
Test104

Anstelle
Delphi-Quellcode:
'G:\Daten_XP\Eigene RAD\EB_PDF_Arc\Daten\Pat\Diagramm%d.bmp'
habe ich
Delphi-Quellcode:
'G:\Daten_XP\Eigene RAD\EB_PDF_Arc\Daten\Pat\Test%d.bmp'
genommen = Negativ.

Trotz Deiner ausführlichen Hilfe bei mir noch wildes probieren.

Und dann noch ein Hinweis, in der FR-IDE habe ich im Masterband4 ein Bild Picture1 platziert, das ich nutzen wollte.

Letzte Frage, Wo werden denn die Bilder im FR geladen ?

Ich häre Dir für weitere geduldige Hilfe dankbar

EB.

neo4a 19. Feb 2010 11:21

Re: Folge von Diagrammen in FastReport ?
 
Wahrscheinlich findet er die Datei nicht. Das kann man leicht debuggen.

Ansonsten stammt der Code-Auszug aus (m)einer App, die ich vor Jahren mit FR2 entwickelt habe. Die offensichtlichen Anpassungen wollte ich Dir überlassen. Ich kann Dir sagen, dass das, was Du willst, mit FR4 umzusetzen ist, weil etwas ähnliches seit langem bei mir läuft. Erwarte aber bitte nicht meinen Ehrgeiz, Dir eine ready-to-go-Lösung zu liefern. Dafür denke ich leider zu kommerziell ;)

--
Andreas

EccoBravo 26. Feb 2010 17:09

Re: Folge von Diagrammen in FastReport ?
 
nur noch eine kurze Frage:

Zitat:

procedure MasterData4OnBeforePrint(Sender: TfrxComponent);
begin
if FINALPASS then
begin
fn:= [DIAGRAMM]; { <--- ??? }
if fn>'' then
Picture.LoadFromFile(fn);
end;
end;
stolpert mein Compiler über [DIAGRAMM].
Er kann dieses folgendermaßen zur Laufzeit nicht auflösen

..kann typ Array nicht als String auflösen...

Irgendwie muß ich aus DIAGRAMM das DataField, das ich im unstehendem Code als c übergeben habe, herausholen.
Zitat:

procedure TF_Haupt.frxUserDataSet1GetValue(const VarName: string;
var Value: Variant);
var
i, j, k: integer;
c: string;
begin
if UPPERCASE(VarName) = 'DIAGRAMM' then
begin
Value := '';
c := format('G:\Daten_XP\Eigene RAD\EB_PDF_Arc\Daten\Pat\Test' +
IntToStr(frxUserDataSet1.tag) + '.bmp',[frxUserDataSet1.tag]);
if FileExists(c) then
Value := c; { <--- !!! }
end;
end;
Hiernach werde ich im Interesse der Nichtumgehung kommerzieller Interessen auch nicht mehr weiterfragen.
Andreas war mir bei aller vorher geleisteter Unterstützung nur noch die Erklärung des Klammerausdrucks [...] schuldig.
Meine Bankdaten werde ich nicht preisgeben, dafür aber Lob und Wertschätzung.

EB

EccoBravo 1. Apr 2010 13:00

Re: Folge von Diagrammen in FastReport ?
 
Hallo,

nach langen Mühen habe ich es endlich geschafft, eine Reihe von Bildern in einem FR4 Report auszugeben.
Bin mit der Lösung auch ganz zufrieden.

Ich habe festgestellt, dass man dazu alles aus der Delphi IDE steuern kann, also keinerlei Code in der FR4 IDE benötigt.

Den benutzten Code habe ich unten angehangen.

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
   sl := TStringList.Create;

   sl.Add('G:\Path\Test1.bmp');
   sl.Add('G:\Path\Test2.bmp');
   sl.Add('G:\Path\Test3.bmp');
   sl.Add('G:\Path\Test4.bmp');
   sl.Add('G:\Path\Test5.bmp');
   sl.Add('G:\Path\Test6.bmp');
   sl.Add('G:\Path\Test7.bmp');
   sl.Add('G:\Path\Test8.bmp');
   sl.Add('G:\Path\Test9.bmp');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   FrxReport1.PrintOptions.Printer := 'Acrobat PDFWriter';
   FrxReport1.FileName := 'G:\Path\TargetDoc.pdf';
   StringDS.RangeEnd := reCount;
   StringDS.RangeEndCount := sl.Count;
   frxReport1.ShowReport;
end;

procedure TForm1.frxReport1BeforePrint(c: TfrxReportComponent);
var
   Pict: TfrxPictureView;
   Name: string;
begin
   if c is TfrxPictureView then
   begin
      Name := TfrxPictureView(c).Name;
      if Name = 'Picture1' then
      begin
         Pict := TfrxPictureView(c);
         Pict.Picture.LoadFromFile(sl[StringDS.RecNo]);
      end;
   end;
end;
Dazu fiel mir nur eine alte Frage aus Studienzeiten ein:
Wieviel Versuche benötigt ein Affe, um "Romeo und Julia" auf einer Schreibmaschine zu tippen.

Vielen Dank an Euch alle,
neo4a darf diesen Code auch unentgeldlich benutzen.

Eine Frage habe ich trotzdem noch:
Zur Laufzeit in der Reportvorschau.
Wenn ich den Printdialog zum Speichern der 'TargetDOC.pdf' aus der Druckvorschau heraus öffne, wird im Speicherdialog schon der richtige Dateiname 'TargetDOC.pdf' angezeigt, jedoch nicht der richtige Pfadname 'G:\Pfad'.
Stattdessen steht dort 'C:\Dokumente und Einstellungen\Benutzer\Eigene Dateien'.

Wie bekomme ich dem Speicherdialog unter der Reportvorschau den richtigen Pfadnamen beigebogen ?


Viel Spass beim Knobeln und
Frohe Ostern

EB

DSCHUCH 1. Apr 2010 14:01

Re: Folge von Diagrammen in FastReport ?
 
kannst du mal ein bsp posten wie der chart am ende aussehen soll?


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