AGB  ·  Datenschutz  ·  Impressum  







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

Folge von Diagrammen in FastReport ?

Ein Thema von EccoBravo · begonnen am 11. Feb 2010 · letzter Beitrag vom 1. Apr 2010
Antwort Antwort
Seite 2 von 3     12 3      
neo4a

Registriert seit: 22. Jan 2007
Ort: Ingolstadt
362 Beiträge
 
Delphi XE2 Architect
 
#11

Re: Folge von Diagrammen in FastReport ?

  Alt 15. Feb 2010, 18:56
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
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#12

Re: Folge von Diagrammen in FastReport ?

  Alt 15. Feb 2010, 19:50
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
  Mit Zitat antworten Zitat
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#13

Re: Folge von Diagrammen in FastReport ?

  Alt 17. Feb 2010, 15:49
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.
Wahre Aussage :=
Katzen, die bellen sind keine Kaninchen.

Der Kreisverkehr ist eine spezielle Form der Einbahnstraße
  Mit Zitat antworten Zitat
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#14

Re: Folge von Diagrammen in FastReport ?

  Alt 17. Feb 2010, 16:37
Hallo,

Was bedeuten

TfrxChartView().SaveToMetaFile,
TfrxChartView().SaveToStream

oder

TfrxChartView().LoadMetaFile,
TfrxChartView().LoadStraem


Danke

EB
Wahre Aussage :=
Katzen, die bellen sind keine Kaninchen.

Der Kreisverkehr ist eine spezielle Form der Einbahnstraße
  Mit Zitat antworten Zitat
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#15

Re: Folge von Diagrammen in FastReport ?

  Alt 17. Feb 2010, 16:47
ich frage deshalb nochmal wegen des direkten Zugriffs auf FrxChart, da der Transfer über Picture1 Bitmap von der Bildqualität zu schlecht ist.

EB
Wahre Aussage :=
Katzen, die bellen sind keine Kaninchen.

Der Kreisverkehr ist eine spezielle Form der Einbahnstraße
  Mit Zitat antworten Zitat
neo4a

Registriert seit: 22. Jan 2007
Ort: Ingolstadt
362 Beiträge
 
Delphi XE2 Architect
 
#16

Re: Folge von Diagrammen in FastReport ?

  Alt 18. Feb 2010, 10:40
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
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#17

Re: Folge von Diagrammen in FastReport ?

  Alt 18. Feb 2010, 14:18
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.
Miniaturansicht angehängter Grafiken
frxchart_116.jpg  
Wahre Aussage :=
Katzen, die bellen sind keine Kaninchen.

Der Kreisverkehr ist eine spezielle Form der Einbahnstraße
  Mit Zitat antworten Zitat
neo4a

Registriert seit: 22. Jan 2007
Ort: Ingolstadt
362 Beiträge
 
Delphi XE2 Architect
 
#18

Re: Folge von Diagrammen in FastReport ?

  Alt 18. Feb 2010, 19:17
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)='DIAGRAMMthen 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
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#19

Re: Folge von Diagrammen in FastReport ?

  Alt 19. Feb 2010, 09:24
Danke neo4a,

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

Danke

EB
Wahre Aussage :=
Katzen, die bellen sind keine Kaninchen.

Der Kreisverkehr ist eine spezielle Form der Einbahnstraße
  Mit Zitat antworten Zitat
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#20

Re: Folge von Diagrammen in FastReport ?

  Alt 19. Feb 2010, 09:57
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) = 'DIAGRAMMthen
    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.
Wahre Aussage :=
Katzen, die bellen sind keine Kaninchen.

Der Kreisverkehr ist eine spezielle Form der Einbahnstraße
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 22:56 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