Ich stopere noch ein wenig über vermutlich banale Anfängerprobleme
Ich möchte Ereignisse mittels CASE-Anweisungen steuern.
In CASE 1 wird im Fenster ein EDIT-CONTROLL aufgerufen ( $Edit1 )
dto in CASE 2, allerdings ein anderes ( $Edit2 )
das klappt im Prinzip auch, allerdings löscht er das $Edit1 nicht, wenn ich CASE 2 aufrufe. Wenn ich den Focus mittels Mauszeiger in das Editfenster mache, verschwinden die eingegebenen Buchstaben kurz, erscheinen wieder und ich kann weitere Buchstaben eingeben. Will ich so natürlich nicht, denn ich will im $Edit2 nicht den Inhalt von $Edit1 fortsetzen.
Gut, als setze ich vor dem $Edit1 = GUICtrlCreateEdit() zum Löschen eines möglicherweise vorhandenen $Edit2 den Befehl GUICtrlDelete($Edit2).
Soweit funktioniert, was ich will ( ob es nun progrmmiertechnisch sauber ist, lass ich mich sehr gern eines besseren belehren )
Das, was ich steuern will, wird vielleicht mal 40 oder mehr Case-Anweisungen beinhalten. Und hier fängt das Problem an. Ich kann ja schlecht in jede CASE-Anweisung vor dem $Edit% = GUICtrlCreateEdit() erst rund 40 GUICtrlDelete($Edit1 - 40) platzieren und das dann bei allen 40 CASE-Anweisungen, was runde 160 -x Zeilen Code beinhalten würde.
ich stelle mal den Beispielcode ein, man möge es sich allerdings mit mehr als die zwei exemplarischen CASE-Anweisungen vorstellen
Spoiler anzeigen
Case $TAB1
$return = _Array2DSearch($TAB_ITEM1,-1,1,0,0,False,True)
if IsArray($return) Then
$ButtonText = GUICtrlRead($Bar_CreateGrandButton_Array[StringTrimRight($return[0],2)][6])
EndIf
GUICtrlDelete($Edit2); <--- löscht den GUI-Inhalt, falls vorher in $TAB2 gewesen
$Edit1 = GUICtrlCreateEdit("", 20, 135, 860, 320, -1); <--- erstellen eines EditControlls #1
GUICtrlSetColor(-1, 0x000000) ; schwarze Schrift
GUICtrlSetData(-1, "")
GUICtrlSetFont(-1, 10, 400, 0, "Calibri")
Case $TAB2
$return = _Array2DSearch($TAB_ITEM2,-1,1,0,0,False,True)
if IsArray($return) Then
$ButtonText = GUICtrlRead($Bar_CreateGrandButton_Array[StringTrimRight($return[0],2)][6])
EndIf
GUICtrlDelete($Edit1); <--- löscht den GUI-Inhalt, falls vorher in $TAB1 gewesen
$Edit2 = GUICtrlCreateEdit("", 20, 135, 860, 320, -1); <--- erstellen eines EditControlls #1
GUICtrlSetColor(-1, 0x99B9E3) ; blaue schrift
GUICtrlSetData(-1, "")
GUICtrlSetFont(-1, 10, 400, 0, "Calibri")
( sorry, irgendwie hat es mir beim C&P die Einrückungen entfernt )
Der Vollständigkeit halber sei gesagt, es kann durchaus sein, das die CASE-Anweisungen nicht unbedingt ausschließlich nur EDIT-CONTROLLS enthalten müssen, es könnte durchaus auch eine Messagebox aufgerufen werden, oder was anderes.
Daher nehme ich an, es müßte kein Löschen vor dem Erstellen erfolgen, sondern ein Löschen beim Verlassen der CASE-Anweisung