![]() |
Re: Folge von Diagrammen in FastReport ?
Zitat:
- 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 |
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: |
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. |
Re: Folge von Diagrammen in FastReport ?
Hallo,
Was bedeuten TfrxChartView().SaveToMetaFile, TfrxChartView().SaveToStream oder TfrxChartView().LoadMetaFile, TfrxChartView().LoadStraem Danke EB |
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 |
Re: Folge von Diagrammen in FastReport ?
Zitat:
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 |
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:
Kann ich diesen Code nicht irgendwo gebrauchen ?
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; Frage nur, wo bringe ich diesen am Besten in meinem Delphiprogramm unter ? Vielen Dank EB. |
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:
3. im onGetValue Deines Reports (Delphi-IDE) schreibst Duif FINALPASS then begin fn:=[DIAGRAMM]; if fn>'' then Picture.Loadfromfile(fn); end;
Delphi-Quellcode:
Mit DB:
if uppercase(ParName)='DIAGRAMM' then begin
ParValue:=''; c:=Format(MainForm.AppDataDir+'Diagramm%d.bmp',[nr]); if FileExists(c) then ParValue:=c; end; 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 |
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 |
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:
Dann kommt der Code in der FastReport-IDE unter dem gewünschten Masterband4:
. . .
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; . . .
Delphi-Quellcode:
Und nun die für mich rätselhafte Stelle im OnGetValue in der Delphi-IDE:
procedure MasterData4OnBeforePrint(Sender: TfrxComponent);
begin if FINALPASS then begin fn:= [DIAGRAMM]; if fn>'' then Picture.LoadFromFile(fn); end; end;
Delphi-Quellcode:
Natürlich läuft der Code nicht bei mir. Der Debugger steht bei OnGetValue.
. . .
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 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; //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ . . . 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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:07 Uhr. |
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