![]() |
Druckdialog Einstellungen ohne VCL
So, ich habe einen Druckdialog, der auch wunderbar funktioniert. Nur ist es erforderlich, dass man beim Drucken Querformat auswählt, sonst wird das nichts.
Dazu muß man die DEVMODE-Struktur füllen. Und diese dann an die PRINTDLG-Struktur übergeben:
Delphi-Quellcode:
Weiß jemand, wie ich das richtig machen muß?
var
pd : TPrintDlg; dm : TDevMode; begin ZeroMemory(@pd, sizeof(TPrintDlg)); Zeromemory(@dm, sizeof(TDevMode)); dm.dmOrientation := DMORIENT_LANDSCAPE; pd.lStructSize := sizeof(TPrintDlg); pd.hWndOwner := hWnd; pd.Flags := PD_ALLPAGES or PD_COLLATE or PD_RETURNDC or PD_NOSELECTION; pd.hDevMode := dm; // <- Hier sagt er mir: [Fehler] Inkompatible Typen: 'Cardinal' und '_devicemodeA' pd.nCopies := 1; |
Re: Druckdialog Einstellungen ohne VCL
Zitat:
Zitat:
|
Ja das habe ich auch schon gefunden. Nur wo ein Handle hernehmen, wenn nicht stehlen. :mrgreen:
|
Ich hab gerade mal im SDK bisschen rumgelesen. HeapAlloc
Zitat:
Zitat:
|
Habe leider keinen Drucker zum Testen zur Hand, aber probier´s mal damit:
Delphi-Quellcode:
Verursacht zumindest keinen Fehler. :)
Move(pd.hDevMode,dm,sizeof(TDevMode));
|
Kompilieren tut er, nur wird nicht auf Querformat umgeschaltet im Druckdialog. :cry:
|
Sorry, Luckie, kann ja auch nicht gehen. Rein logisch, meine ich. Ich versuche ja den Inhalt eines Records auf eine Cardinal-Variable zu übertragen. :oops: Als Anregung hätte ich jetzt noch das hier
Delphi-Quellcode:
Er bringt zwar den Dialog zum Vorschein (wenn der Druckername stimmt!), aber stellt auch nicht auf Querformat um. Entweder habe ich was vergessen, oder so funktioniert´s auch nicht. :(
var
hdm : THandle; pdm : PDevMode; begin hdm := GlobalAlloc(GMEM_MOVEABLE or GMEM_ZEROINIT, sizeof(TDevMode)); pdm := GlobalLock(hdm); pdm^.dmDeviceName := 'Druckername'; pdm^.dmSize := sizeof(TDevMode); pdm^.dmOrientation := DMORIENT_LANDSCAPE; { ... } pd.hDevMode := hdm; { ... } GlobalFree(hdm); end; |
Verdammt. Es muß doch eine Möglichkeit geben, das Querformat voreinzustellen. Ich kann ja nicht in der Readme schreiben, dass man Querformat auswählen muß. :cry:
|
Re: Druckdialog Einstellungen ohne VCL
Ich weiß nicht ob Dein Problem schon gelöst ist, ich hab aber noch einen Tip!
Die Devmode-Struktur besitzt noch eine Variable dmFields. Jedes Bit dieser Variable repräsentiert einen Flag zu einer Einstellung. Diese Flags müssen jedoch extra initialisiert werden!!! Den nur initialisierte Einstellungen werden berücksichtigt. In Deinem Fall müsste es heißen: pdm.dmFields := pdm.dmFields OR DM_ORIENTATION; Hoffe geholfen zu haben!! emkay |
Re: Druckdialog Einstellungen ohne VCL
Puh, hast du mal auf das Datum gekuckt? Aber hattest recht, das Problem war noch nicht gelöst. Wird aber demnächst wieder aktuell. :mrgreen:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:25 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