Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Druckerbreite einstellen (https://www.delphipraxis.net/34555-druckerbreite-einstellen.html)

dagegen 24. Nov 2004 16:23


Druckerbreite einstellen
 
Hallo,
ich habe einen Brother 9200DX (Labeldrucker für Schriftbänder) und möchte von Delphi aus den Druckerdialog aufrufen.

Unter Windows habe ich Default-Druckereigenschaften gesetzt, diese werden aber von Delphi mit dem Standard DIN A4-Format überschrieben, was andere Programme wie CorelDraw nicht machen.

Mit folgendem Code möchte ich meine Werte für Breite und Höhe wieder setzen:
Delphi-Quellcode:
var
  Device : array[0..255] of char;
  Driver : array[0..255] of char;
  Port  : array[0..255] of char;
  hDMode : THandle;
  pDMode : PDEVMODE;

begin
  ...
  Printer.GetPrinter(Device, Driver, Port, hDMode);

  if hDMode <> 0 then
  begin
    pDMode := GlobalLock(hDMode);
    if pDMode <> nil then
    begin
      pDMode^.dmFields := pDMode^.dmFields or
                          DM_PAPERSIZE or
                          DM_PAPERWIDTH or
                          DM_PAPERLENGTH;

      pDMode^.dmPaperSize    := DMPAPER_USER;
      pDMode^.dmPaperWidth   := 240; // 24mm {SomeValueInTenthsOfAMillimeter};
      pDMode^.dmPaperLength  := 650; // 65mm {SomeValueInTenthsOfAMillimeter};

      GlobalUnlock(hDMode);
    end;
  end;
  ...
end;
Für die Breite Funktioniert dies, allerdings funktioniert das Setzen von dmPaperWidth nicht.
Statt der gewünschten 24mm steht im Drucker-Eigenschaftsdialog immer 36mm und ich weiß nicht wie die dahin kommen und wie ich sie ändern kann.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz