Steuerelemente verrutschen...

  • Hallöchen ^^

    Habe derzeit folgendes Problem:

    Auf meinem PC mit Auflösung 1024x768 habe ich Labels erstellt. Diese habe ich auch alle schön mit GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP) auf Tabs pixelgenau festgeheftet.
    Meine Gui mit den Tabs ist auch mit festen Werten versehen.


    Doch sobald ich mit meinem anderen PC (Auflösung: 1024x600) das Programm starte, verrutschen alle Labels auf den Tabs. Die y Position stimmt, doch die x-Position ist nach links verrutscht.

    Weiß jemand, wie ich die Steuerelemente wirklich fest kriege? Es verrutschen mir nämlich auch Comboboxen und Buttons :(


    Mit freundlichen Grüßen
    Elodie

  • Hallo
    Es könnte ev. daran liegen das Du $GUI_DOCKALL verwendet hast. Wenn Du das Programm auf beiden Pc's startest und mit dem Autoit Windo Info Tool die Werte der Labels und Buttons überprüfst, siehst du unter Control welche Werte die Labels zugewiesen bekommen haben. Wenn es nicht weiterhilft dann poste mal den Code für das Fenster und die Labels dann kann ich mal einige Werte durchprobieren.
    Gruß Ralf

  • Hallöchen :)

    Danke für den Tipp mit dem Tool. Allerdings brachte das Tool bei beiden PCs fast die komplett gleichen Werte (Einzige wichtige Ausnahme: Das Gui-Fenster war in der Höhe um 3 Pixel größer 8| (Aber wie gesagt, die Labels stimmen ja in der Höhe überein))

    Hier mal der Code zum Herumprobieren:

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #include <StaticConstants.au3>
    #include <GuiConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt('MustDeclareVars', 1)
    Opt("GUIOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    Global $exit, $gui, $main_tab, $Beispiel1, $Beispiel1_2, $Tralalala1, $Tralalala2, $noch_eins1, $Noch_eins2, $Letztes1, $Letztes2

    [/autoit] [autoit][/autoit] [autoit]

    Example()

    [/autoit] [autoit][/autoit] [autoit]

    Func Example()

    [/autoit] [autoit][/autoit] [autoit]

    ; GUI
    $gui = GuiCreate("Steuerelemente verrutschen", 300, 50)
    GUISetFont(11, "", "", "Arial")
    GUISetOnEvent($GUI_EVENT_CLOSE, "OnExit")

    [/autoit] [autoit][/autoit] [autoit]

    Guiswitch($Gui)
    $Main_tab = GUICtrlCreateTab(0, 0, 620, 400)
    guictrlsetstate(-1, $Gui_disable)

    [/autoit] [autoit][/autoit] [autoit]

    $Beispiel1 = guictrlcreatetabitem("Beispiel1")

    [/autoit] [autoit][/autoit] [autoit]

    $Tralalala1 = GuiCtrlCreateTabITEM("Tralalala")

    [/autoit] [autoit][/autoit] [autoit]

    $Noch_eins1 = Guictrlcreatetabitem("Noch eins")

    [/autoit] [autoit][/autoit] [autoit]

    $Letztes1 = GuiCtrlCreateTabITEM("Letztes...")

    [/autoit] [autoit][/autoit] [autoit]

    guictrlcreatetabitem("")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $Tralalala2 = guictrlcreatelabel("Tralalala", 77, 5, 56, 18, $SS_center)
    Guictrlsetstate(-1, $GUI_ONTOP+$gui_show+$gui_disable)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)

    [/autoit] [autoit][/autoit] [autoit]

    $Noch_eins2= guictrlcreatelabel("Noch eins", 142, 5, 66, 18, $SS_center)
    guictrlsetstate(-1, $GUI_ONTOP+$gui_show+$gui_disable)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)

    [/autoit] [autoit][/autoit] [autoit]

    $Letztes2= guictrlcreatelabel("Letztes...", 215, 5, 63, 18, $SS_center)
    guictrlsetstate(-1, $GUI_ONTOP+$gui_show+$gui_disable)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    while(1)
    Sleep(1000)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func OnExit()
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    Auch die Funktion mit dem Docken habe ich mal herausgelöscht und das Programm auf beiden PCs gestartet, doch die Labels blieben verrutscht. ;(

    Hoffentlich findet jemand eine Lösung :S

    Liebe Grüße
    Elodie

  • Und so?

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    AutoIt Version: 3.3.1.0 (beta)
    Author: myName

    [/autoit] [autoit][/autoit] [autoit]

    Script Function:
    Template AutoIt script.

    [/autoit] [autoit][/autoit] [autoit]

    #ce ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    ; Script Start - Add your code below here

    [/autoit] [autoit][/autoit] [autoit]

    #include <StaticConstants.au3>
    #include <GuiConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt('MustDeclareVars', 1)
    Opt("GUIOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    Global $exit, $gui, $main_tab, $Beispiel1, $Beispiel1_2, $Tralalala1, $Tralalala2, $noch_eins1, $Noch_eins2, $Letztes1, $Letztes2

    [/autoit] [autoit][/autoit] [autoit]

    Example()

    [/autoit] [autoit][/autoit] [autoit]

    Func Example()

    [/autoit] [autoit][/autoit] [autoit]

    ; GUI
    $gui = GuiCreate("Steuerelemente verrutschen", 300, 50)
    GUISetFont(11, "", "", "Arial")
    GUISetOnEvent($GUI_EVENT_CLOSE, "OnExit")

    [/autoit] [autoit][/autoit] [autoit]

    Guiswitch($Gui)
    $Main_tab = GUICtrlCreateTab(0, 0, 620, 400)
    guictrlsetstate(-1, $Gui_disable)

    [/autoit] [autoit][/autoit] [autoit]

    $Beispiel1 = guictrlcreatetabitem("Beispiel1")

    [/autoit] [autoit][/autoit] [autoit]

    $Tralalala1 = GuiCtrlCreateTabITEM("Tralalala")

    [/autoit] [autoit][/autoit] [autoit]

    $Noch_eins1 = Guictrlcreatetabitem("Noch eins")

    [/autoit] [autoit][/autoit] [autoit]

    $Letztes1 = GuiCtrlCreateTabITEM("Letztes...")

    [/autoit] [autoit][/autoit] [autoit]

    guictrlcreatetabitem("")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $Tralalala2 = guictrlcreatelabel("Tralalala", 77, 5, 56, 18, $SS_center)
    ;~ Guictrlsetstate(-1, $GUI_ONTOP+$gui_show+$gui_disable)
    ;~ GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)

    [/autoit] [autoit][/autoit] [autoit]

    $Noch_eins2= guictrlcreatelabel("Noch eins", 142, 5, 66, 18, $SS_center)
    ;~ guictrlsetstate(-1, $GUI_ONTOP+$gui_show+$gui_disable)
    ;~ GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)

    [/autoit] [autoit][/autoit] [autoit]

    $Letztes2= guictrlcreatelabel("Letztes...", 215, 5, 63, 18, $SS_center)
    ;~ guictrlsetstate(-1, $GUI_ONTOP+$gui_show+$gui_disable)
    ;~ GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    while(1)
    Sleep(1000)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func OnExit()
    Exit
    EndFunc

    [/autoit]
  • Und so?:

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    AutoIt Version: 3.3.1.0 (beta)
    Author: myName

    [/autoit] [autoit][/autoit] [autoit]

    Script Function:
    Template AutoIt script.

    [/autoit] [autoit][/autoit] [autoit]

    #ce ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    ; Script Start - Add your code below here

    [/autoit] [autoit][/autoit] [autoit]

    #include <StaticConstants.au3>
    #include <GuiConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt('MustDeclareVars', 1)
    Opt("GUIOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    Global $exit, $gui, $main_tab, $Beispiel1, $Beispiel1_2, $Tralalala1, $Tralalala2, $noch_eins1, $Noch_eins2, $Letztes1, $Letztes2

    [/autoit] [autoit][/autoit] [autoit]

    Example()

    [/autoit] [autoit][/autoit] [autoit]

    Func Example()

    [/autoit] [autoit][/autoit] [autoit]

    ; GUI
    $gui = GuiCreate("Steuerelemente verrutschen", 300, 50)
    GUISetFont(11, "", "", "Arial")
    GUISetOnEvent($GUI_EVENT_CLOSE, "OnExit")

    [/autoit] [autoit][/autoit] [autoit]

    Guiswitch($Gui)
    $Main_tab = GUICtrlCreateTab(0, 0, 620, 400)
    guictrlsetstate(-1, $Gui_disable)

    [/autoit] [autoit][/autoit] [autoit]

    $Beispiel1 = guictrlcreatetabitem("Beispiel1")

    [/autoit] [autoit][/autoit] [autoit]

    $Tralalala1 = GuiCtrlCreateTabITEM("Tralalala")

    [/autoit] [autoit][/autoit] [autoit]

    $Noch_eins1 = Guictrlcreatetabitem("Noch eins")

    [/autoit] [autoit][/autoit] [autoit]

    $Letztes1 = GuiCtrlCreateTabITEM("Letztes...")

    [/autoit] [autoit][/autoit] [autoit]

    guictrlcreatetabitem("")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $Tralalala2 = guictrlcreatelabel("Tralalala", 77, 5, 56, 18)
    ;~ Guictrlsetstate(-1, $GUI_ONTOP+$gui_show+$gui_disable)
    ;~ GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)

    [/autoit] [autoit][/autoit] [autoit]

    $Noch_eins2= guictrlcreatelabel("Noch eins", 142, 5, 66, 18)
    ;~ guictrlsetstate(-1, $GUI_ONTOP+$gui_show+$gui_disable)
    ;~ GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)

    [/autoit] [autoit][/autoit] [autoit]

    $Letztes2= guictrlcreatelabel("Letztes...", 215, 5, 63, 18)
    ;~ guictrlsetstate(-1, $GUI_ONTOP+$gui_show+$gui_disable)
    ;~ GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    while(1)
    Sleep(1000)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func OnExit()
    Exit
    EndFunc

    [/autoit]
  • Entschuldige, selbstverständlich.

    1024x768:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    1024x600:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

  • ja, stimmt ^^ ganz vergessen, danke =)
    Gibt es allerdings dafür keine Lösung, dass es unabhängig von der DPI richtig angezeigt wird?

    Edit: Herzlichen Glückwunsch für den Übertritt über die 1000 Beiträge Grenze ^^

  • Hallo Elodie
    Aufgrund der Hinweise mit der DPI-Einstellung konnte ich Dein Problem nachvollziehen. Unter Regread("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics","AppliesDPI") kannst Du die aktuelle DPI-Einstellung des Monitors auslesen. Je höher der Wert ist, desto größer dann auch die dargestellte Schrift.
    Auf der Homepage http://www.eggheadcafe.com/conversation.aspx?messageid=32357478&threadid=32357456 findest Du einen Thread der das gleiche Problem unter VB behandelt. Ich hoffe der Link hilft Dir weiter.

    Gruß Ralf

  • Hallo Elodie
    habe mich jetzt mal um die Formel gekümmert.
    Schrifthöhe in Pixel = Schriftgröße in Punkten* DPI \ 72
    Woraus folgt
    Schriftgröße in Punkten = Schrifthöhe in Pixel* 72 \ DPI


    $DPI = Regread("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics", "AppliedDPI")
    $Schrifthoehe = 14.666666 (bei einer Fonthoehe von 11 und einer Auflösung von 72 DPI)
    $Schriftgroesse = $Schrifthoehe* 72 / $DPI

    GUISetFont($Schriftgroesse, "", "", "Arial",$gui)
    Da Windows die $Schriftgroesse rundet müßtest du die Formel bei verschiedenen DPI-Einstellungen überprüfen. Bei 96 oder 120 DPI scheint es jedenfalls zu funktionieren.

    Gruß Ralf

  • Hallo Elodie,

    versuch es einmal mit _GUICtrlTab_SetItemSize. Du müsstest m.E. nach etwas in der Breite zugeben, damit sich die Beschriftung auch garantiert hinein passt,

    mfg (Auto)Bert