Einzelnen Beitrag anzeigen

barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#1

Problem mit dem Ausführen eines Threads

  Alt 29. Okt 2004, 10:57
Hallo,

ich habe die Reporterzeugung in einen Thread ausgelagert:
Delphi-Quellcode:
procedure TForm_Main.PrintReport(Sender: TObject);
var
  ReportThread: TReportThread;
begin
  ReportThread:= TReportThread.create(true,'Packauftrag',FocusedGrid,0);
...

constructor TReportThread.create(CreateSuspended: Boolean;ReportName: String;
        Grid: TDBGrid; PrinterIndex: Integer);
begin
   // Thread erzeugen und suspendieren
    inherited Create(CreateSuspended);
    // Initialisieren
    FGrid:= Grid;
    FPrinterIndex:= PrinterIndex;
    FReportName:=ReportName;
    // Thread starten
    self.Suspended:= false;
end;

{- TReportThread.Execute }
procedure TReportThread.Execute;
begin
  // Diese Funktion habe ich vorher direkt aus der Anwendung aufgerufen
  // Jetzt ist sie in diesem Thread gekapselt
  DM_Report.PrintReport(FReportName, FGrid,FPrinterIndex);
end;
Mein Problem: Beim Drucken und des eigentlichen Aufrufs 'ExecuteReport' in der Klasse DMReport kommt es öfter zu der Fehlermeldung:
EInvalidOperation with message 'Canvas does not allow drawing'

Diese Meldung tritt aber nicht immer auf. Setze ich beim Aufruf von 'ExecuteReport' einen BreakPoint und lasse die Anwendung von dort weiterlaufen, gibt es keine Fehlermeldung. Auch der direkte Aufruf bevor ich Threads benutzte klappte...?!

Kann mir jemand helfen?
Gruß,

Barnti
  Mit Zitat antworten Zitat