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?
Position der Controls ändern
-
- [ gelöst ]
-
Root -
22. März 2009 um 11:21 -
Geschlossen -
Erledigt
-
-
GUICtrlSetPos
-
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?
-
im Programm für immer
-
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
[/autoit]
$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) -
- Offizieller Beitrag
z.B. so:
[autoit]; Controls erstellen und ID's in Array speichern
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]
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)]; Funktion zum Verschieben der Ctrl
[/autoit]
; $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 -
Danke, hast mich auf die Idee gebracht, jede Postition +20 zu versetzten.