Español
Foro

Hecho: Druckerformat ajustar

 

Thomas
Freier
Mit una hier gefundenen Script lugar Yo, el Drucker en Querformat en. Erfolgt el Aktion de una Diálogo, se el Inhalt des Dialogfensters gelöscht. Beim Ventana principal no Problemas.
Como lässt se el verhindern oder giebt lo una bessere Solución?
KompilierenMarcaSeparación
 $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)
End
 
Gruß Thomas
Windows XP SP2, XProfan X2
26.11.2009  
 




Dieter
Zornow
En Dialogen muss uno sólo siempre %wmPaint abfragen y quizás neu dibujar.
 
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  
 



En SubKey$="PrintersDevModePerUser" y SubKey$="Printers\DevModes2" fehlen Backslashs: SubKey$="Printers\DevModePerUser" SubKey$="Printers\DevModes2" - dass Problema incluso ha aber Dieter ya beschrieben: Nur la ventana principal (hWnd) características selbständig neu porque Roland el extra fürs Ventana principal así instalado ha.

Noch Kleinigkeit: Usted verwendest B_DLG& en statistik_neu, deklariert Es el Variable aber en Statistik. El Variablensichtbarkeit des Interpreter lässt dies ("natürlich")/zwar a, el lexikalischen Variablensichtbarkeit es dies aber en el Wege.

Hierbei sería se empfehlen, simplemente b_dlg& a statistik_neu por Parámetro a transferencia o todo Función statistik_neu en el Función statistik (proc en proc) ablegen.
 
27.11.2009  
 




Thomas
Freier
Con el %wmPaint me está klar. Punto ahora el Drucker antes el Dialogaufbau en y después de el Schliessen otra vez zurück.
 
Gruß Thomas
Windows XP SP2, XProfan X2
28.11.2009  
 



Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

1.391 Views

Untitledvor 0 min.
rquindt24.04.2020
GDL26.03.2016
Muemmelmann24.09.2014
Andre Rohland04.05.2013
Más...

Themeninformationen

Dieses Thema ha 3 subscriber:

Thomas Freier (2x)
iF (1x)
Dieter Zornow (1x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie