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 :allright: