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?