![]() |
Bitte Druck-Routine testen
Hallo,
könntet ihr mir mal einen Gefallen tun und mal diese Druck-Routine testen? Mein Drucker spinnt irgendwie. Das Dokument kommt beim Druck-Manager an, aber als Status wird immer "in Warteschleife - wird gedruckt" angezeigt und es geht nicht weiter. Die Messagebox "fertig!" wird auch nicht angezeigt. Und wenn ich über Notepad drucke steht in der Status-Spalte gar nichts und es wird nichts gedruckt. Hier der Code:
Delphi-Quellcode:
Nachtrag: Das mit Notepad hat sich erledigt. Irgendwas hat den Status des Druckers auf "Angehalten" gesetzt, jetzt geht es wieder.
procedure TForm1.Button1Click(Sender: TObject);
var di : DOCINFO; pd : TPrintDlg; iTotalLines, yChar, iCharsPerLine, iLinesPerPage, iTotalPages, iPage, iLine, iLineNum, iColCopy : Integer; tm : TTEXTMETRIC; begin ZeroMemory(@pd, sizeof(TPrintDlg)); pd.lStructSize := sizeof(TPrintDlg); pd.hWndOwner := Handle; pd.Flags := PD_ALLPAGES or PD_COLLATE or PD_RETURNDC or PD_NOSELECTION; pd.nCopies := 1; if PrintDlg(pd) = TRUE then begin iTotalLines := Memo1.Lines.Count; GetTextMetrics(pd.hDC, tm); yChar := tm.tmHeight + tm.tmExternalLeading; iCharsPerLine := GetDeviceCaps(pd.hDC, HORZRES) div tm.tmAveCharWidth; iLinesPerPage := GetDeviceCaps(pd.hDC, VERTRES) div yChar; iTotalPages := (iTotalLines + iLinesPerPage - 1) div iLinesPerPage; StaticText1.Caption := 'Zeichen pro Zeile: '+IntToStr(iCharsPerLine)+' | Zeilen pro Seite: '+IntToStr(iLinesperpage)+ ' | Seiten: '+IntToStr(iTotalPages); ZeroMemory(@di, sizeof(DOCINFO)); di.cbSize := sizeof(DOCINFO); di.lpszDocName := 'Test'; if StartDoc(pd.hDC, di) > 0 then begin for iColCopy := 0 to pd.nCopies do begin for iPage := 0 to iTotalPages-1 do begin for iLine := 0 to iLinesPerpage-1 do begin iLineNum := iLinesPerpage*iPage+iLine; if iLineNum > iTotalLines then exit; TextOut(pd.hDC, 0, yChar*iLine, pointer(Memo1.Lines.Strings[iLine]), length(Memo1.Lines.Strings[iLine])); Caption := 'Zeilennummer: '+IntToStr(iLine+1)+' - '+'Seite: '+IntToStr(iPage+1); Application.ProcessMessages; end; if EndPage(pd.hDC) < 0 then exit; end; end; end; ShowMessage('Fertig!'); EndDoc(pd.hDC); end; end; Nachtrag 2: Ich werde irre, wenn ich die Anwendung schließe, legt der Drucker los. :shock: |
OK, hat sich alles erledigt. Es lag wohl am Drucker.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz