GUI und Ctrls an Displaygröße anpassen.

  • Hey,
    ich schreibe seit kurzer Zeit an einem Programm welches später innerbetrieblich auf verschiedenen Touchmonitoren laufen wird.
    Die GUI soll immer maximiert sein und daher müssen die Ctrls an die Displaygröße angepasst werden.
    Mit

    [autoit]

    @DesktopHeight

    [/autoit]

    und

    [autoit]

    @DesktopWidth

    [/autoit]

    wird mir da bestimmt ne umständliche Lösung einfallen aber wollt vorher lieber nochmal fragen was ihr da noch für Ideen habt.

    Eins meiner Probleme besteht glaub ich auch darin, dass die Ctrls immer zentriert werden sollen und niocht vom linken Bildschirmrand aus.

    Danke für jegliche Beteiligung.

    Einmal editiert, zuletzt von miks.de (29. Oktober 2012 um 18:12)

  • Nun ja, Zentriert setzen wirst du die Controls nicht auf der GUI. Was du aber machen kannst, die GUI erst zu erstellen und dann auf die Gewünschte größe bringen.
    ggf. Mit der Option: GUIResizeMode

    Code
    Ändert das Standardverhalten bei Größenveränderung für ein Control.
    0 = (Standard) behält das Standardverhalten bei.
    <1024 = jede Art der Größenveränderung, siehe GUICtrlSetResizing.


    ODER du berechnest für jeden größe die Position der Controls neu-

  • dachte halt an sowas

    [autoit]

    $GUI = GUICreate("Main", @Desktopwidth,@Desktopheight, 0, 0, BitOR($GUI_SS_DEFAULT_GUI,$WS_MAXIMIZEBOX,$WS_SIZEBOX,$WS_THICKFRAME,$WS_MAXIMIZE,$WS_TABSTOP))

    [/autoit]

    damit wird die GUI ja immer auf die Displaygröße gesetzt.

    nützt mir dann aber das

    [autoit]

    GUICtrlSetResizing

    [/autoit]

    noch was?

    so wie ich das verstehe ja dann nicht.. dachte dann das ich die Ctrls auch so erstelle also die Position und Größe immer in Verbindung mit
    @Desktopwidth und @Desktopheight.. scheint mir aber ne riesen Arbeit

  • Hier mal ein Beispiel:

    Spoiler anzeigen
    [autoit]

    Opt('GUIResizeMode', 256 + 512) ;~ Höhe und Breite bleiben unverändert.

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

    $GUI = GUICreate('Beispiel-GUI', 800, 600)
    ;~ Button Position:
    ;~ X: 100
    ;~ Y: 100
    $Button = GUICtrlCreateButton('Button Beispiel', 100, 100, 200, 20)
    GUISetState(@SW_SHOW, $GUI)

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

    Sleep(5000)
    WinMove($GUI, '', 0, 0, @DesktopWidth, @DesktopHeight)
    $pos = ControlGetPos($GUI, '', $Button)
    ConsoleWrite('Neue X-Position: ' & $pos[0] & @CRLF)
    ConsoleWrite('Neue Y-Position: ' & $pos[1] & @CRLF)
    Sleep(5000)

    [/autoit]


    ODER

    [autoit]

    Opt('GUIResizeMode', 256 + 512) ;~ Höhe und Breite bleiben unverändert.

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

    $GUI = GUICreate('Beispiel-GUI', 800, 600)
    ;~ Button Position:
    ;~ X: 100
    ;~ Y: 100
    $Button = GUICtrlCreateButton('Button Beispiel', 100, 100, 200, 20)
    WinMove($GUI, '', 0, 0, @DesktopWidth, @DesktopHeight)
    $pos = ControlGetPos($GUI, '', $Button)
    ConsoleWrite('Neue X-Position: ' & $pos[0] & @CRLF)
    ConsoleWrite('Neue Y-Position: ' & $pos[1] & @CRLF)
    GUISetState(@SW_SHOW, $GUI)
    Sleep(5000)

    [/autoit]
  • [autoit]

    Opt('GUIResizeMode', 1)

    [/autoit]

    erzielt das gewünschte Ergebnis

    PS: hätt ich auch selber drauf kommen können :D
    aber Danke

    Einmal editiert, zuletzt von miks.de (2. November 2012 um 11:52)