Position der Controls ändern

  • Ich möchte oben ein neues Control-Element einfügen.
    Kann man die Position der bereits erstellten Controls irgendwie ändern, ohne für jedes Contol-Element im Code die Postion neu definieren zu müssen?

    Einmal editiert, zuletzt von Root (22. März 2009 um 13:55)

  • Soweit ich das verstanden habe, muss ich GUICtrlSetPos für jedes Control und Label definieren. Dann kann ich die Position aber auch gleich beim GUICtrlCreateButton oder GUICtrlCreateLabel ändern

    Ich suche was, um alle oder bestimmte Controls um einen bestimmten Betrag verschieben zu können.

  • willst du die position der controls verändern, wähernd das programm läuft, oder generell im programm?

  • also da kann ich dir nur n tipp geben:

    ich mach grad n programm mit hintergrundgrafik und da musste ich die controls (alle) immer mal wieder um n paar pixel verschieben. ich habs dann so gemacht:

    [autoit]

    $g_pos[0]=13
    $g_pos[1]=113
    $g1 = GUICtrlCreateCombo( "", $g_pos[0], $g_pos[1], 190, 21, $CBS_DROPDOWNLIST)
    $g2 = GUICtrlCreateLabel( "_", $g_pos[0], $g_pos[1]+29, 190, 21)
    $g4 = GUICtrlCreateLabel( "_", $g_pos[0], $g_pos[1]+54, 190, 21)
    $g3 = GUICtrlCreateButton( " Aktualisieren ", $g_pos[0]+195, $g_pos[1], 74, 22)
    $g5 = GUICtrlCreateButton( " Aktualisieren ", $g_pos[0]+195, $g_pos[1]+25, 74, 22)
    $g6 = GUICtrlCreateButton( " Bearbeiten ", $g_pos[0]+195, $g_pos[1]+50, 74, 22)

    [/autoit]
    • Offizieller Beitrag

    z.B. so:

    [autoit]

    ; Controls erstellen und ID's in Array speichern
    Global $aCtrl[5] = [ _
    GUICtrlCreateButton('Button1', left, top, width, height),
    GUICtrlCreateLabel('Label1', left, top, width, height),
    GUICtrlCreateInput('Input1', left, top, width, height),
    GUICtrlCreateLabel('Label2', left, top, width, height),
    GUICtrlCreateButton('Button2', left, top, width, height)]

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

    ; Funktion zum Verschieben der Ctrl
    ; $ID=-1 verschiebt alle Ctrls, ansonsten die Indexe im Array angeben, z.B. '0,2,3' verschiebt: Button1, Input1, Label2
    Func _MoveCtrl($GUI_ID, $ID=-1, $diffX=0, $diffY=0)
    Local $aPos
    If $ID = -1 Then
    For $i = 0 To UBound($aCtrl) -1
    $aPos = ControlGetPos($GUI_ID, '', $aCtrl[$i])
    GUICtrlSetPos($aCtrl[$i], $aPos[0]+($diffX), $aPos[1]+($diffY))
    Next
    Else
    Local $arrCtrl = StringSplit($ID)
    For $i = 1 To UBound($arrCtrl) -1
    $aPos = ControlGetPos($GUI_ID, '', $aCtrl[$arrCtrl[$i]])
    GUICtrlSetPos($aCtrl[$arrCtrl[$i]], $aPos[0]+($diffX), $aPos[1]+($diffY))
    Next
    EndIf
    EndFunc

    [/autoit]