Resize Control Problem

  • Hallo,

    folgendes Problem krieg ich nicht gelöst...

    Ich probiers mal mit der Erklärung:

    1. Die Form startet in einer bestimmten Größe. OK
    2. Dann kann man Controls erstellen. OK

    so und nun...

    Wird die Form in der Größe verändert, dann werden
    die erstellten Objekte (die bereits existieren) dieser großen Form angepasst. OK

    Aber, existieren die Objekte noch nicht (also der Benutzer vergrößert zuerst die Form)
    und dann werden die Objekte erstellt, dann stimmen die Verhältnisse nicht mehr.

    Beispiel

    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <array.au3>
    $Form1 = GUICreate("Form1", 625, 443, 192, 124, BitOR($WS_MINIMIZEBOX,$WS_SIZEBOX,$WS_THICKFRAME,$WS_SYSMENU,$WS_CAPTION,$WS_POPUP,$WS_POPUPWINDOW,$WS_GROUP,$WS_BORDER,$WS_CLIPSIBLINGS))
    $btnerstellen = GUICtrlCreateButton("erstellen", 72, 16, 75, 25, $WS_GROUP)
    $btndelete = GUICtrlCreateButton("löschen", 160, 16, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)

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

    Global $Checkbox, $i, $Checkbox1, $Checkbox2, $Checkbox3

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $btnerstellen
    _erstellen()

    Case $btndelete
    _delete()
    EndSwitch
    WEnd

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

    func _erstellen()
    $Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 72, 56, 97, 17)
    $Checkbox2 = GUICtrlCreateCheckbox("Checkbox2", 72, 88, 97, 17)
    $Checkbox3 = GUICtrlCreateCheckbox("Checkbox3", 168, 56, 97, 17)
    endfunc

    func _delete()
    GUICtrlDelete($Checkbox1)
    GUICtrlDelete($Checkbox2)
    GUICtrlDelete($Checkbox3)

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

    endfunc

    [/autoit]


    Wie kann man das mit resize lösen?

    EDIT:

    Wie kann ich meine Controls relativ zur Guigröße erstellen?
    Ich glaube, da liegt das Problem.
    Denn sie werden ja immer mit den Ursprungskoordinaten erstellt.
    Ich habe mit diesen Parametern probiert

    [autoit]


    $Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 72, 56, 97, 17)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)

    [/autoit]

    klappt leider nicht so wie es soll!


    Liebe Grüße
    Ilse ;)

    2 Mal editiert, zuletzt von Ilse (1. September 2012 um 11:30)

  • Probiere es mal mit dieser modifizierten Funktion:

    [autoit]


    func _erstellen()
    Local $aPos = ControlGetPos($Form1, "", $btnerstellen)
    If Not @error Then
    $Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", $aPos[0], $aPos[1] + 40, 97, 17)
    $Checkbox2 = GUICtrlCreateCheckbox("Checkbox2", $aPos[0], $aPos[1] + 72, 97, 17)
    $Checkbox3 = GUICtrlCreateCheckbox("Checkbox3", $aPos[0] + 96, $aPos[1] + 40, 97, 17)
    EndIf
    endfunc

    [/autoit]

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯