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 3 von 3     123   
neo4a

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

Re: Folge von Diagrammen in FastReport ?

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

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

Re: Folge von Diagrammen in FastReport ?

  Alt 19. Feb 2010, 11:09
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.
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
 
#23

Re: Folge von Diagrammen in FastReport ?

  Alt 19. Feb 2010, 11:38
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)='DIAGRAMMthen begin
    ParValue:='';
    c:=Format(MainForm.AppDataDir+'Diagramm%d.bmp',[frxUserDataSet1.RecNo]);
    if FileExists(c) then
      ParValue:=c;
  end;

--
Andreas
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von EccoBravo
EccoBravo

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

Re: Folge von Diagrammen in FastReport ?

  Alt 19. Feb 2010, 12:07
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) = 'DIAGRAMMthen
    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
'G:\Daten_XP\Eigene RAD\EB_PDF_Arc\Daten\Pat\' versucht = Negativ.

Dann heißen meine abgespeicherten Bilder

Test1
Test2
. . .
Test104

Anstelle
'G:\Daten_XP\Eigene RAD\EB_PDF_Arc\Daten\Pat\Diagramm%d.bmp' habe ich
'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.
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
 
#25

Re: Folge von Diagrammen in FastReport ?

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

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

Re: Folge von Diagrammen in FastReport ?

  Alt 26. Feb 2010, 18:09
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
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
 
#27

Re: Folge von Diagrammen in FastReport ?

  Alt 1. Apr 2010, 14:00
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 = 'Picture1then
      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
Wahre Aussage :=
Katzen, die bellen sind keine Kaninchen.

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

Registriert seit: 6. Jun 2007
Ort: Dresden
185 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#28

Re: Folge von Diagrammen in FastReport ?

  Alt 1. Apr 2010, 15:01
kannst du mal ein bsp posten wie der chart am ende aussehen soll?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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:16 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