Hallo bwolf,
ich glaube nicht das man das mit einem Thread lösen kann, ich vermute vielmehr das, dass Problem an MSWord liegt. Mit PrintOut wird kein Ausdruck im Hintergrund ausgeführt. Wenn man also drucken will, so muss der Ausdruck im Vordergrund gestartet werden, was bedeutet das Word während dieser Zeit blockiert ist. Normaler Weise wird mit FALSE der Hintergrunddruck verhindert, sodass der Ausdruck auch erfolgt.
Es gibt eine alternative zur PrintOut-Methode und zwar die Execute – Methode des Drucken – Dialogfeldes.
Ich habe mal ein kleiner Code – Schnipsel als Beispiel. Er müsste natürlich noch an Deine Bedürfnisse angepasst werden. Für Serienbriefe habe ich die Exceute – Methode zwar noch nicht verwendet, aber vielleicht funktioniertes.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const
coDoc= 'c:\Test.dot';
var
Word: _Application;
Doc: _Document;
Para: Paragraph;
aRange: Range;
oleParam: OleVariant;
begin
Word:= CoWordApplication.Create;
Word.Visible:= TRUE;
oleParam:= coDoc;
Word.Documents.OpenOld(oleParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam, EmptyParam, EmptyParam,EmptyParam,
EmptyParam);
Word.Dialogs.Item(wdDialogFilePrint).Execute;
ShowMessage('Alles Klar');
oleParam:= FALSE;
Word.Quit(oleParam,EmptyParam,EmptyParam);
end;
Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.