Hallo BugFix
Ich denke das ist ein sehr wertvolles Snippet für alle, die sich nicht so recht mit den Editoren anfreunden können. Ich mache bspw. alles im Code, weil ich das Gefühl habe, insgesamt länger zu brauchen, wenn ich Koda benutze und später alles für mich anpasse, was Koda als Code ausspuckt. Wenn ich das dann noch einmal ändern will...
Da sind solche Ansätze Gold wert! Ich habe häufiger (einfache) Programme mit (dennoch vielen) Einstellungen, die über Controls wie Checkboxen oder Combos gesetzt werden. Gerade wenn man viele Checkboxen hat und sich später im Workflow etwas ändert und man mehr braucht, möchte man gerne die ganze Gruppe verschieben können, statt in jedes Control zu gehen und Änderungen vorzunehmen..
Daher gehe ich da etwas anders vor, als du es hier im Snippet zeigst. Leider habe ich mir selbst noch keine UDF daraus gebaut, sondern mache das mal so mal so.
Der plumpeste Weg ist
Local $hGUI = GUICreate("")
Local $idStart = GUICtrlCreateButton("Start", 150, 370, 85, 25)
Local $apos = ControlGetPos($hGUI, "", $idStart)
Local $idOK = GUICtrlCreateButton("OK", 10, 370, 85, 25)
Local $idCancel = GUICtrlCreateButton("Cancel", $apos[0] -140, 370, 85, 25)
Man ermittelt die Position von einem Startelement und positioniert dann alle anderen Controls in Abhängigkeit.
Das Prinzip kann man dann noch in eine Funktion auslagern, in der man mehrere "Fixpunkte" verwaltet und alle Controls die zur Gruppe eines Fixpunktes gehören mit verschiebt.
Den zweiten Weg benutze ich oft bei bereits vorhandenen Skripten, die ich nachträglich dynamischer machen will.
Da wird dann etwa aus Local $idOK = GUICtrlCreateButton("OK", 10, 370, 85, 25) folgendes Local $idOK = _CtrlPos(GUICtrlCreateButton("OK", 10, 370, 85, 25), $idStart, 10, 50). $idStart ist dann der Bezugspunkt und die Funktion 10 x-Punkte zum Bezugspunkt und 50y-Punkte zum Bezugspunkt und die Rückgabe der Funktion isr die ID.
Ich füge dann einfach die Funktion in ein bestehendes Skript ein und umschließe die Controlerstellung und kann dann Änderungen recht leicht vornehmen.