Einzelnen Beitrag anzeigen

mmvisual

Registriert seit: 31. Dez 2006
7 Beiträge
 
#3

AW: TPrinter - Etikettlänge einstellen

  Alt 13. Aug 2012, 00:27
Vielen Dank für die Info.

Ich habe nun schon seit einigen Stunden alle möglichen Routinen und Reihenfolgen ausprobiert. Irgendwie klappt das nicht.

Hier ein Stück Code, ich denke der sollte klappen:

Delphi-Quellcode:
procedure TWinPrinter.SetPageLength(iLen, iWidth: Integer);
var
  PDev: TPrinterDevice;
  DevMode: PDeviceMode;
begin
  if Printers.Count>0 then
  begin
    PDev:=TPrinterDevice(Printers.Objects[PrinterIndex]);
    DocumentProperties(0, FPrinterHandle, pchar(PDev.Name), Pdev.DevMode, Nil, DM_OUT_BUFFER);
    DevMode := GlobalLock(THandle(Pdev.DevMode));
    If (iLen > 0) Or (iWidth > 0) Then
    Begin
      DevMode^.dmFields := DevMode^.dmFields Or DM_PAPERSIZE;
      DevMode^.dmPaperSize := 256; // DMPAPER_USER;
    end;
    If iLen > 0 Then
    Begin
      DevMode^.dmPaperLength := iLen;
      DevMode^.dmFields := DevMode^.dmFields Or DM_PAPERLENGTH;
    End;
    If iWidth > 0 Then
    Begin
      DevMode^.dmPaperWidth := iWidth;
      DevMode^.dmFields := DevMode^.dmFields Or DM_PAPERWIDTH;
    end;
    GlobalUnlock(THandle(Pdev.DevMode));
    DocumentProperties(0, FPrinterHandle, pchar(PDev.Name), Pdev.DevMode, Pdev.DevMode, DM_OUT_BUFFER or DM_IN_BUFFER);
  end;
end;
Ich nutze zwar FPC/Lazarus aber die Windows-Aufrufe sollten dennoch gleich sein.

Wenn ich DocumentProperties() mit "DM_IN_PROMPT" aufrufe, so erscheint auch der P-Touch Duckerdialog mit meinen geänderten Werten, dennoch druckt er nicht so wie eingestellt.

Hat noch jemand einen Tipp für mich was ich ändern könnte?

Geändert von mmvisual (13. Aug 2012 um 00:31 Uhr)
  Mit Zitat antworten Zitat