Français
Forum

Erledigt: Druckerformat ajuster

 

Thomas
Freier
avec einem ici gefundenen Script lieu Je l' Drucker sur Querformat um. Erfolgt qui Aktion aus einem Dialog, wird qui le contenu des Dialogfensters gelöscht. Beim Hauptfenster aucun Probleme.
comment peut sich cela verhindern ou bien giebt es une bessere Solution?
KompilierenMarqueSéparation
 $P+
Set("ErrorLevel", 0)
 $H IncludeWindows.ph
 $H Includemessages.ph
 $H Includecommctrl.ph
 $H IncludeStructs.ph
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Drucker auf quer stellen
DEF @GetProfileString(5) !"kernel32","GetProfileStringA"
DEF @OpenPrinter(3) !"winspool.drv","OpenPrinterA"
DEF @DocumentProperties(6) !"winspool.drv","DocumentPropertiesA"
DEF @ClosePrinter(1) !"winspool.drv","ClosePrinter"
DEF @GetLastError(0) !"kernel32","GetLastError"
DEF @DocumentPropertiesW(6) !"winspool.drv","DocumentPropertiesW"
DEF @RegCREATEKEY(3)!"ADVAPI32","RegCreateKeyA"Schlüssel erstellen
def @RegSetValueEx(6) !"ADVAPI32","RegSetValueExA"
def @RegCloseKey(1) !"ADVAPI32","RegCloseKey"
Struct OSVERSIONINFO = dwOSVersionInfoSize&,dwMajorVersion&,dwMinorVersion&,dwBuildNumber&,dwPlatformId&,szCSDVersion$(128)

Proc Drucker_Orientation_Umstellen

    Parameters Orientation%1=Hochformat, 2=Querformat
    Declare SectionName$,KeyName$,DefautString$,ReturnBuffer#,Printername$,PHANDLE#,Länge2&
    Declare Pdevice$,DevMode#,DevMode2#,Fehler&
    Declare SubKey$
    Declare Handle#
    DIM ReturnBuffer#,256
    SectionName$="Windows"
    KeyName$="device"
    DefautString$=""
    @GetProfileString(@ADDR(SectionName$),@ADDR(KeyName$),@ADDR(DefautString$),ReturnBuffer#,256)
    Printername$=@SubStr$(@STRING$(ReturnBuffer#,0),1,",")
    Dispose ReturnBuffer#
    Pdevice$=""
    DIM PHANDLE#,4
    Fehler&=@OpenPrinter(@ADDR(Printername$),PHANDLE#,0)
    Länge2&=@DocumentPropertiesW(%HWND,@Long(PHANDLE#,0),@ADDR(Pdevice$),0,0,0)
    DIM DevMode#,Länge2&
    FEHLER&=@DocumentPropertiesW(%HWND,@Long(PHANDLE#,0),@ADDR(Pdevice$),DevMode#,0,2)
    Fehler&=@Word(DevMode#,44+32)
    Alte Ausgelesene Ausrichtung:
    old_prnRi&=Fehler&
    DIM DevMode2#,Länge2&
    WORD DEVMODE#,44+32=Orientation%
    Dim Handle#,4
    SubKey$="PrintersDevModePerUser"
    @RegCREATEKEY($80000001,@addr(SubKey$),Handle#)
    @RegSetValueEx(@LONG(Handle#,0),@ADDR(Printername$),0,3,DEVMODE#,Länge2&)
    @RegCloseKey(@LONG(Handle#,0))
    SubKey$="PrintersDevModes2"
    @RegCREATEKEY($80000001,@addr(SubKey$),Handle#)
    @RegSetValueEx(@LONG(Handle#,0),@ADDR(Printername$),0,3,DEVMODE#,Länge2&)
    @RegCloseKey(@LONG(Handle#,0))
    Dispose Handle#
    @Sendmessage($FFFF,$001A,0,0)
    @Sendmessage($FFFF,$001B,0,0)
    Fehler&=@OpenPrinter(@ADDR(Printername$),PHANDLE#,0)
    Fehler&=@GetLastError()
    FEHLER&=@DocumentPropertiesW(%HWND,@Long(PHANDLE#,0),@ADDR(Pdevice$),DevMode2#,0,2)
    Fehler&=@GetLastError()
    Fehler&=@Word(DevMode2#,44+32)
    Fehler&=@ClosePrinter(@Long(PHANDLE#,0))
    Dispose PHANDLE#
    Dispose DevMode2#
    Dispose DevMode#

Endproc

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SetAutoPaint 0

Proc Statistik_Neu

    Declare old_prnRi&  alte Druckerausrichtung
    Declare text$

    If MS_Druck%=1

        Drucker_Orientation_Umstellen 2 Druck auf quer einstellen
        text$= "*Statistik"
        StartPrint text$

        If %Printing = 0

            Return

        EndIf

    EndIf

    case MS_Druck%=0 : startpaint B_dlg&
    UseFont "Arial",18,0,1,0,0
    TextColor @RGB(0,0,0),-1
    DrawText 210,100,"Mitgliederstatistik nach Eintrittsjahren"
    UseFont "Arial",12,0,0,0,0
    TextColor @RGB(0,0,0),-1
    DrawText 870,630,"Stand: "+Date$(0)
    Line 120,520-950,520
    UsePen 0,0,rgb(255,255,255)
    UseBrush 1,rgb(255,0,0)
    Rectangle 100,525,110,535
    UseBrush 1,rgb(0,255,0)
    Rectangle 100,540,110,550
    UseBrush 1,rgb(0,0,255)
    Rectangle 100,555,110,565
    case MS_Druck%=0 : endpaint B_dlg&

    If MS_Druck%=1

        endprint
        Drucker_Orientation_Umstellen old_prnRi&  Drucker auf alte Richtung stellen

    EndIf

EndProc

Proc Statistik

    Parameters MS_art%
    var B_dlg& = @Create("DIALOG",%hwnd,"  Mitglieder-Statistik " ,10,10,1018,720)
    var      MS_Datei$ = "Datei"
    var      MS_Beenden$ = "Beenden"
    var      MS_Druck$ = "Drucken"
    var      hMenu& = ~CreateMenu()
    var      hMenuPopup& = ~CreateMenu()
    ~AppendMenu(hMenuPopup&, ~MF_STRING, 4101, @Addr(MS_Druck$))
    ~AppendMenu(hMenuPopup&, ~MF_STRING, 4102, @Addr(MS_Beenden$))
    ~AppendMenu(hMenu&, ~MF_POPUP, hMenuPopup&, @Addr(MS_Datei$))
    ~SetMenu(B_Dlg&, hMenu&)
    var   MS_Druck%=0
    Statistik_neu
    @SetFocus(b_dlg&)

    While 1

        WaitInput
        case %wmpaint=1:Statistik_neu

        If %key = 2

            BREAK

        ElseIf @Int(@Abs(%MenuItem)) = 4102

            BREAK

        ElseIf @Int(@Abs(%MenuItem)) = 4101

            MS_Druck%=1
            Statistik_neu
            MS_Druck%=0
            @SetFocus(b_dlg&)

        EndIf

    Wend

    @DestroyWindow(B_dlg&)

Endproc

################################## H A U P T T E I L ####################################
Cls
Statistik
WaitInput
@DestroyWindow(a class=s4 href='./../../function-references/XProfan/hwnd/'>hWnd)
Fin
 
Gruß Thomas
Windows XP SP2, XProfan X2
26.11.2009  
 




Dieter
Zornow
chez Dialogen muss on arrêt toujours %wmPaint abfragen et peut-être récente zeichnen.
 
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2
27.11.2009  
 



chez SubKey$="PrintersDevModePerUser" et SubKey$="Printers\DevModes2" manquer Backslashs: SubKey$="Printers\DevModePerUser" SubKey$="Printers\DevModes2" - dass Problem selbst hat mais Dieter déjà beschrieben: seulement cela Hauptfenster (hWnd) zeichnet selbständig récente weil Roland cela extra pour Hauptfenster so incorporé hat.

encore Kleinigkeit: Du verwendest B_DLG& dans statistik_neu, deklariert ist qui Variable mais dans Statistik. qui Variablensichtbarkeit des Interpreter peut ca ("natürlich")/zwar trop, qui lexikalischen Variablensichtbarkeit steht ca mais im Wege.

Hierbei serait sich empfehlen, simple b_dlg& à statistik_neu per paramètre trop transfert ou bien qui ganze Funktion statistik_neu dans qui Funktion statistik (proc dans proc) enlever.
 
27.11.2009  
 




Thomas
Freier
Avec l' %wmPaint c'est moi bien sûr. Stelle maintenant den Drucker avant dem Dialogaufbau um et pour dem Schliessen wieder zurück.
 
Gruß Thomas
Windows XP SP2, XProfan X2
28.11.2009  
 



répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

1.395 Views

Untitledvor 0 min.
rquindt24.04.2020
GDL26.03.2016
Muemmelmann24.09.2014
Andre Rohland04.05.2013
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie