Einzelnen Beitrag anzeigen

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