Seite 1 von 1
Printrequester
Verfasst: 22.01.2006 22:21
von Konne
Hallo ich habe mir mal die PrintLib angeschaut und kam nicht drauf wie ich feststellen kann welche einstellungen im Printrequester gemacht wurden. Wie bekomme ich zB raus dass nur markierung angeklickt wurde???
Verfasst: 23.01.2006 22:58
von Konne
Und wass bringt der Requester dann wenn man er eh nix macht???
Verfasst: 24.01.2006 12:36
von bobobo
Der Printrequester macht schon was.
Den Drucker kann man auswählen (wenn man mehrere Drucker hat).
Die Einstellungen in den Druckertreibern sind
änderbar (werden allerdings nicht permanent übernommen).
Für einen kompletteren Zugriff auf die Druckroutinen musst Du
mutmaßlich etwas Aufwand treiben.
Mit Pb druckt man genauso aus wie in der Hilfe beschrieben.
Verfasst: 24.01.2006 15:37
von Konne
Aber man muss doch irgendwie rausbekommen was in dem requester eingestellt wurde. Was bringt es mir wenn da "Markierter Text drucken2 aktiv ist ich es aber nicht mitbekomme?
Verfasst: 24.01.2006 15:43
von Shardik
So sollte es gehen:
Code: Alles auswählen
Info.S
PrintDlg.PRINTDLG
Result.L
DevMode = GlobalAlloc_(#GMEM_MOVEABLE | #GMEM_ZEROINIT, SizeOf(DEVMODE))
DevModeLocked = GlobalLock_(DevMode)
PrintDlg\lStructSize = SizeOf(PRINTDLG)
PrintDlg\Flags = #PD_ALLPAGES
PrintDlg\hDevMode = DevModeLocked
Result = PrintDlg_(PrintDlg)
If Result <> #False
*DevMode.DEVMODE = PrintDlg\hDevMode
Info = "Anzahl Kopien = " + Str(*DevMode\dmCopies)
If PrintDlg\Flags & #PD_SELECTION
Info = Info + #CR$ + "Nur markierten Text drucken"
ElseIf PrintDlg\Flags & #PD_PAGENUMS
Info = Info + #CR$ + "Nur die Seiten " + Str(PrintDlg\nFromPage) + "-" + Str(PrintDlg\nToPage) + " drucken"
Else
Info = Info + #CR$ + "Alles drucken"
EndIf
MessageRequester("Aktuelle Drucker-Einstellungen", Info, #MB_ICONINFORMATION)
EndIf
GlobalUnlock_(DevMode)
GlobalFree_(DevMode)
Verfasst: 24.01.2006 17:06
von Konne
Danke aber es geht nicht, da die Structure Fehlt
Verfasst: 24.01.2006 17:14
von ts-soft
Konne hat geschrieben:Danke aber es geht nicht, da die Structure Fehlt
Dann solltest Du entweder updaten, weil die fehlt nicht. Oder Du versuchst es
mit PRINTDLG_API, so ungefähr hieß die Strukture in älteren Versionen, oder
Du suchst Dir die Strukture in der MSDN raus und deklarierst sie selber.
Verfasst: 25.01.2006 09:34
von Shardik
In PureBASIC 3.94 ist die Struktur PRINTDLG vordefiniert. Sollte dies in älteren Versionen noch nicht der Fall sein, hier ist sie (aus PBOSL_ExPrinter) zum Einfügen in den Kopf meines obigen Beispiels:
Code: Alles auswählen
Structure PRINTDLG
lStructSize.l
hwndOwner.l
hDevMode.l
hDevNames.l
hDC.l
Flags.l
nFromPage.w
nToPage.w
nMinPage.w
nMaxPage.w
nCopies.w
hInstance.l
lCustData.l
lpfnPrintHook.l
lpfnSetupHook.l
lpPrintTemplateName.s
lpSetupTemplateName.s
hPrintTemplate.l
hSetupTemplate.l
EndStructure
Getestet habe ich mein Beispiel übrigens erfolgreich unter Windows NT 4.0 SP6a und Windows XP SP2.
Verfasst: 25.01.2006 16:48
von Konne
Vielen Dank nochmal
