Autor Beitrag
thommy f
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 114

Windows 2K pro
Delphi 5 Enterprise
BeitragVerfasst: Mo 21.11.11 12:16 
Mal wieder ich. Delphi überrascht mich immer wieder.

Ich habe in einem Programm eine Quickreport, der im Endeffekt nur aus einem QRLabel und einem QRMemo besteht.

Diesen möchte ich an zwei Stellen des Programms mit Daten füttern und jeweils ausdrucken.

Folgendes läuft problemlos:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TF_Haupt.BBTN_KW_druckenClick(Sender: TObject);
  begin

    //Formular erzeugen
    if F_Druck_Termine = nil then F_Druck_Termine := TF_Druck_Termine.Create(Application);
    F_Druck_Termine.QRL_Headline.Caption := 'TERMINE ' + ' KW: ' + inttostr(Kalenderwoche(Now)) + ', ' + FormatDateTime('yyyy',now);
    F_Druck_Termine.QRM_Termine.Lines := F_Haupt.M_Termine.Lines;
    F_Druck_Termine.QR_Termine.print;

    //Formular deaktivieren
    if F_Druck_Termine <> nil then
    begin
      F_Druck_Termine.Release;
      F_Druck_Termine := nil;
    end;
  end;



Wenn ich nun das Selbe aus einer Anderen Stelle des Programms mache (Ich weise übrigens dem QRMemo lediglich den Inhalt eines anderen MemoObjekts zu wie ersichtlich sein dürfte)


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TF_Historie.BBTN_druckenClick(Sender: TObject);
  var
    s_Zeile, Historie_Name : String;
  begin
      //Formular erzeugen
    if F_Druck_Termine = nil then F_Druck_Termine := TF_Druck_Termine.Create(Application);
    Historie_Name := F_Haupt.Programmpfad + '\History\' + DM_Hufbeschlag.T_PferdeName.Value + DM_Hufbeschlag.T_PferdeDienstleistungshistorie.Value;
    F_Historie.M_Historie.Lines.SaveToFile(Historie_Name);
    F_Druck_Termine.QRL_Headline.Caption := 'Dienstleistungshistorie für: ' + DM_Hufbeschlag.T_PferdeName.Value + '  -  Datum: ' + FormatDateTime('dd.mm.yyyy',now);
    F_Druck_Termine.QRM_Termine.Lines.Clear;
    F_Druck_Termine.QRM_Termine.Lines := F_Historie.M_Historie.Lines;
    F_Druck_Termine.QR_Termine.print;
    //Formular deaktivieren
    if F_Druck_Termine <> nil then
    begin
      F_Druck_Termine.Release;
      F_Druck_Termine := nil;
    end;
  end;


Dann kommt eine Fehlermeldung:
List Index out of bounds (3)
Woher denn dieses bitte?

(Ja, ich benutze eine englische Version von Delphi)

DANKE für eure Hilfe. Ich steh auf dem Schauch!

_________________
Der Mensch wächst mit seinen Aufgaben *** Wer kämpft kann verlieren, wer nicht kämpft hat schon verloren
Tilo
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1098
Erhaltene Danke: 13

Win7 geg. WInXP oder sogar Win98
Rad2007
BeitragVerfasst: Mo 21.11.11 12:38 
hallo thommy f,

Ich kenne mich mit Quickreport zwar nicht aus, habe aber trotzdem einige Fragen, die eventuell helfen:
a) gibt F_Druck_Termine.Release wirklich alles frei?
b) wird die Zeile TF_Druck_Termine.Create(Application); in beiden Fällen aufgerufen?
c) ist bei zweiten Versuch etwas in F_Historie.M_Historie.Lines drin? bzw ist etwas in F_Historie.M_Historie.Lines gespeichert?
d) Wie arbeitet F_Druck_Termine.QR_Termine.print?

Ich tippe darauf das F_Druck_Termine.QR_Termine.print versucht auf eine Zeile zuzugreifen die nicht existiert.

Beste Grüße,
Tilo
thommy f Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 114

Windows 2K pro
Delphi 5 Enterprise
BeitragVerfasst: Mo 21.11.11 12:46 
Doch, in M_Historie (Ein MemoFeld) Stehen Mehrere Zeilen drin.

Mit dem Create(Application) Aktiviere ich jeweils das Formular um es nicht ständig "geladen" zu haben. Die Formulare sind im Projekt available und nicht auto created.

Das sollte eigentlich klappen. Wie gesagt, ich mache eigentlich beide Male das gleiche. Einmal geht's einwandfrei, und einmal nicht...???

_________________
Der Mensch wächst mit seinen Aufgaben *** Wer kämpft kann verlieren, wer nicht kämpft hat schon verloren
thommy f Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 114

Windows 2K pro
Delphi 5 Enterprise
BeitragVerfasst: Mo 21.11.11 13:58 
Keine Ahnung, woran es gelegen hat. Habe das Problem jetzt mit einer weiteren QR-Komponente gelöst, die GENAU IDENTISCH ist. Mit der geht's komischerweise jetzt.

DANKE trotzdem!

_________________
Der Mensch wächst mit seinen Aufgaben *** Wer kämpft kann verlieren, wer nicht kämpft hat schon verloren