Problem mit GUI

05/16/2009 16:16 Xereon#1
wie vieleicht einige wissen oder auch nicht wissen arbeite ich zur Zeit an einem Shortkey Configurator.
Nach meinen Vorstellungen soll der Configurator komplett dynamisch werden, also auch das GUI.
Mein Problem ist nun, das wenn ich nun das GUI dynamisch kreire ich keine ControlIDs bekomme.

Also:

SK Arrays:
Code:
Global $sk[6]
		$sk[0] = IniRead($ini,"Shortkeys","hide","INI ERROR")
		$sk[1] = IniRead($ini,"Shortkeys","start","INI ERROR")
		$sk[2] = IniRead($ini,"Shortkeys","exit","INI ERROR")
		$sk[3] = IniRead($ini,"Shortkeys","dumper","INI ERROR")
		$sk[4] = IniRead($ini,"Shortkeys","updater","INI ERROR")
		$sk[5] = 99999999999
GUI Creation(Ausschnitt):
Code:
	;Dynamic Buttons here
	For $i = 0 To (_ArrayMaxIndex($sk,1) -1) Step 1
		Dim $button_def[_ArrayMaxIndex($sk,1)]
		$button_def[$i] = GUICtrlCreateButton("Define new Shortkey", 215,60 + (25 * $i), 115, 20, 0)
	Next
Problem ist jetz folgnes:
Jeder Button außer $button_def[4] (also der letzte) hat keine controlID!
Warum und wie kann ich das beheben?

Edit:

Damit ihr den code verstehen könnt:

Also das ganze ist aufgegliedert in einen input in den der aktuelle Shortkey angezeigt wird und einen Button wp man einen neuen Shortkey definieren kann.
Die Dynamik soll machen das man nurnoch die Variablen(also $SK(aktueller Shortkey)) ändern muss um das gesammte Script zu ändern.
Dafür werden die Arrays benötigt.
$sk[5] = 99999999999 ist eine Art Zähler.
Weil man nicht direkt die Länge eines arrays abfragen kann sondern nur die höchsten Werte und deren Indexe frage ich ich mit (_ArrayMaxIndex($sk,1) -1)
die Länge des Arrays ab. Oder besser gesagt die Länge für eine for Schleife.
Da die For von 0 losgeht und der Index von einen Arrays auch mit 0 anfängt ist dort das -1 also (_ArrayMaxIndex($sk,1)-1).
05/16/2009 18:06 Xereon#2
Problem gelöst!

Für alle die mitgeknobelt haben xD jedoch keine Antwort fanden:

Alter Code:
Code:
	;Dynamic Buttons here
	For $i = 0 To (_ArrayMaxIndex($sk,1) -1) Step 1
		Dim $button_def[_ArrayMaxIndex($sk,1)]
		$button_def[$i] = GUICtrlCreateButton("Define new Shortkey", 215,60 + (25 * $i), 115, 20, 0)
	Next
Neuer Code:
Code:
	;Dynamic Buttons here
	Dim $button_def[_ArrayMaxIndex($sk,1)]
	For $i = 0 To (_ArrayMaxIndex($sk,1) -1) Step 1
		$button_def[$i] = GUICtrlCreateButton("Define new Shortkey", 215,60 + (25 * $i), 115, 20, 0)
	Next

Habe nicht daran gedacht das Dim $button_def[_ArrayMaxIndex($sk,1)] nach draußen muss.
Weil dardurch wird bei jeden Schleifendurchgang der Array neudefiniert was dardurch führt das sich die Variable überschreibt.
Effekt: Gui wird erstellt aber die Variable hat nichtmehr die ControlID