GuiControl

Führt eine Vielzahl von Änderungen an einem Steuerelement innerhalb eines GUI-Fensters durch.

GuiControl, Unterbefehl, SteuerelementID , Wert

Parameter

Unterbefehl, Wert
Diese Parameter sind voneinander abhängig und können wie unten gezeigt genutzt werden.
SteuerelementID

Wenn das Ziel-Steuerelement eine zugeordnete Variable hat, kann der Name der Variable als SteuerelementID angegeben werden (diese Methode hat Vorrang vor der nächsten Methode). Aus diesem Grund empfiehlt es sich, jedes Steuerelement mit einer Variable zu verbinden, so dass es später via GuiControl oder GuiControlGet zugreifbar ist, selbst wenn es nicht eingabefähig ist (z. B. GroupBox oder Text).

Ansonsten kann SteuerelementID entweder ClassNN (Klassenname und Instanznummer des Steuerelements) oder der Text des Steuerelements sein, die beide mit Windows Spy ermittelt werden können. Verwendet man Text, ist das Übereinstimmungsverhalten abhängig von SetTitleMatchMode.

Hinweis: Der Dateiname eines Picture-Steuerelements (der zum Zeitpunkt seiner Erstellung angegeben wurde) kann auch als SteuerelementID verwendet werden.

[v1.1.04+]: SteuerelementID kann das HWND eines Steuerelements sein.

Befindet sich das Steuerelement nicht auf dem Standard-GUI, muss der Name oder das HWND des GUI auch angegeben werden -- außer in [v1.1.20+], wenn SteuerelementID ein HWND ist, da jedes HWND einzigartig ist. Siehe Bemerkungen, um mehr darüber zu erfahren.

Unterbefehle

Geben Sie für Unterbefehl Folgendes an:

(Leer)

Fügt neue Inhalte in das Steuerelement ein.

GuiControl,, SteuerelementID , Wert

Lassen Sie Unterbefehl leer, um neue Inhalte via Wert in das Steuerelement einzufügen. Im Einzelnen:

Picture: Wert muss der Dateiname (oder Handle) des neuen Bildes sein, das geladen werden soll (siehe Gui Picture, welche Dateitypen unterstützt werden). Direkt vor dem Dateinamen können Null oder mehrere der folgenden Optionen angegeben werden: *wN (Breite N), *hN (Höhe N) und *IconN (Symbolgruppennummer N in einer DLL- oder EXE-Datei). Im folgenden Beispiel wird das Standardsymbol aus der zweiten Symbolgruppe geladen - mit einer Breite von 100 Pixel und einer automatischen Höhe via "Seitenverhältnis beibehalten": GuiControl,, MeinBild, *icon2 *w100 *h-1 C:\Meine Anwendung.exe. Geben Sie *w0 *h0 an, um die aktuelle Breite und Höhe des Bildes zu nutzen. Fehlt sowohl *w als auch *h, passt sich das Bild an die Steuerelementgröße an. Lädt man ein Symbol aus einer ICO-Datei mit mehreren Symbolen, bestimmt die Angabe einer Breite und Höhe zudem, welches Symbol geladen werden soll.

Hinweis: Zwischen der letzten Option und dem Dateinamen selbst sollte nur ein einziges Leer- oder Tabulatorzeichen verwendet werden; weitere Leer- und Tabulatorzeichen werden als Teil des Dateinamens angesehen.

Text/Button/GroupBox/StatusBar/Link: Geben Sie für Wert den neuen Text des Steuerelements an. Da sich das Steuerelement nicht automatisch erweitert, sollte man GuiControl, Move, MeinText, W300 verwenden, wenn das Steuerelement breiter gemacht werden muss. Beim StatusBar-Steuerelement wird dieser Parameter nur den Text des ersten Bereiches setzen (verwende SB_SetText() für eine höhere Flexibilität).

Edit: Jedes LF-Zeichen (`n) in Wert, das kein CR-Zeichen (`r) davor hat, wird automatisch in CR+LF (`r`n) umgewandelt, um es richtig darzustellen. Normalerweise muss man sich darum nicht kümmern, weil Gui Submit und GuiControlGet AusgabeVar diese Umwandlung automatisch rückgängig machen werden, indem sie CR+LF mit LF (`n) ersetzen.

Hotkey: Wert kann leer sein, um den Inhalt des Steuerelements zu löschen, oder eine Reihe von Modifikatortasten mit einem Tastennamen enthalten. Beispiele: ^!c, ^Numpad1, +Home. Es werden nur die Modifikatortasten ^ (Strg), ! (Alt) und + (Umschalt) unterstützt. In der Tastenliste finden Sie alle verfügbaren Tastennamen.

Checkbox: Wert kann eine 0 sein, um das Steuerelement zu demarkieren, eine 1, um es zu markieren, oder -1, um eine graue Markierung zu setzen. Ansonsten wird Wert als neue Bezeichnung/neuer Text des Steuerelements vermutet. Siehe den Text-Unterbefehl weiter unten, wie dieses Verhalten überschrieben werden kann.

Radio: Das Gleiche wie Checkbox. Wenn der Radio-Button markiert (aktiviert) wird, und gehört er zu einer Gruppe von mehreren Radio-Buttons, werden die anderen Radio-Buttons in seiner Gruppe automatisch demarkiert. Um einen neuen Button innerhalb einer Radio-Gruppe zu markieren, die nur eine Variable hat, übergibt man als SteuerelementID den Namen/Text eines Buttons, dem keine Variable zugeordnet wurde.

DateTime/MonthCal: Geben Sie für Wert einen Zeitstempel im YYYYMMDDHH24MISS-Format an. Geben Sie %A_Now% an, um den Zeitstempel des heutigen Datums zu setzen. Bei DateTime-Steuerelementen kann Wert weggelassen werden, um das Steuerelement ohne vorausgewähltem Datum bzw. Uhrzeit anzuzeigen (wenn es mit dieser Option erstellt wurde). Bei MonthCal-Steuerelementen kann ein Bereich angegeben werden, wenn das Steuerelement fähig zur Mehrfachauswahl ist.

UpDown/Slider/Progress: Wert muss die neue Position des Steuerelements sein. Wenn das erste Zeichen von Wert ein Pluszeichen ist, wird die Zahl als Offset von der aktuellen Position vermutet. Zum Beispiel würde +10 die Position um 10 Pixel erhöhen und +-10 (plus minus zehn) sie um 10 Pixel verringern. Liegt die neue Position außerhalb des Steuerelementbereichs, wird das Steuerelement auf den nächsten gültigen Wert gesetzt.

Tab/DropDownList/ComboBox/ListBox: Wert muss eine mit senkrechten Strichen getrennte Liste von Elementen sein, die an die Liste des Steuerelements angefügt werden sollen. Um die Liste stattdessen zu ersetzen (zu überschreiben), setzt man vor der Liste einen senkrechten Strich (z. B. |Rot|Grün|Blau). Um das Steuerelement zu leeren, schreibt man nur einen einzelnen senkrechten Strich (|). Damit eines der Elemente vorab ausgewählt ist, müssen zwei senkrechte Striche nach diesem Element erfolgen (z. B. Rot|Grün||Blau). Das Trennzeichen zwischen den Feldern muss nicht zwingend ein senkrechter Strich sein. Zum Beispiel würde Gui +Delimiter`n dieses Trennzeichen in ein Zeilenumbruchszeichen ändern, und Gui +DelimiterTab in ein Tabulatorzeichen (`t).

Tab-Steuerelemente: Zusätzlich zum oben genannten Verhalten bleiben Untersteuerelemente eines Tabs mit ihren ursprünglichen Tab-Nummern verbunden. Das heißt, dass sie nie dem tatsächlichen Anzeigenamen des Tabs zugeordnet sind. Aus diesem Grund wird sich die Tab-Nummer, zu der die Unterelemente gehören, nicht ändern, wenn ein Tab umbenannt oder entfernt wird. Würde man beispielsweise den zweiten Tab von den drei Tabs "Rot|Grün|Blau" mithilfe von GuiControl,, MeinTab, |Rot|Blau entfernen, wären die Untersteuerelemente, die ursprünglich zu "Grün" gehörten, nun mit "Blau" verbunden. Aufgrund dieses Verhaltens sollte generell nur Tabs entfernt werden, die am Ende der Liste vorkommen. Tabs, die auf diese Weise entfernt werden, können später wieder hinzugefügt werden, so dass sie ihre ursprünglichen Steuerelemente zurückbekommen können.

ListView und TreeView: Diese Steuerelemente werden nicht unterstützt, wenn Unterbefehl leer ist. Verwenden Sie stattdessen die internen ListView- und TreeView-Funktionen.

Text

Ändert den Text/die Beschriftung des Steuerelements.

GuiControl, Text, SteuerelementID , Wert

Verhält sich genauso wie der leere Unterbefehl, außer bei:

Checkbox/Radio: Wert wird als neue(r) Text/Bezeichnung angesehen, selbst wenn es -1, 0 oder 1 ist.

DateTime: Wert wird als neues Datum/Zeit-Format angesehen, das vom Steuerelement angezeigt werden soll. Fehlt Wert, werden alle benutzerdefinierten Formate entfernt und das kurze Datumsformat in Kraft gesetzt.

ComboBox: Wert wird als Text angesehen, der direkt in das Eingabefeld der ComboBox eingefügt werden soll.

Move

Verschiebt das Steuerelement und/oder ändert dessen Größe.

GuiControl, Move, SteuerelementID, Optionen

Geben Sie einen oder mehrere der folgenden Optionsbuchstaben in Optionen an: X (die X-Koordinate relativ zum Client-Bereich des GUI-Fensters, das der Bereich ohne Titelleiste, Menüleiste und Rahmen ist); Y (die Y-Koordinate), W (Breite), H (Höhe). Geben Sie dezimale Zahlen an, nicht hexadezimale. Zum Beispiel:

GuiControl, Move, MeinEdit, x10 y20 w200 h100
GuiControl, Move, MeinEdit, % "x" VarX+10 "y" VarY+5 "w" VarW*2 "h" VarH*1.5 ; Verwendet ein Ausdruck mithilfe des Präfixes "% ".

MoveDraw

Verschiebt das Steuerelement und/oder ändert dessen Größe, und zeichnet den vom Steuerelement beanspruchten Bereich neu.

GuiControl, MoveDraw, SteuerelementID , Optionen

Schauen Sie sich den Move-Unterbefehl oben an, um mehr zu erfahren. Zwar kann dieser Unterbefehl ein ungewolltes Flackern erzeugen, wenn er schnell und mehrmals hintereinander aufgerufen wird, allerdings verhindert er Artefakte beim Zeichnen von bestimmten Steuerelementarten wie GroupBox. [v1.0.48.04+]: Der letzte Parameter kann weggelassen werden, um das Steuerelement neu zu zeichnen, ohne es zu verschieben oder dessen Größe zu ändern.

Focus

Setzt den Tastaturfokus auf das Steuerelement.

GuiControl, Focus, SteuerelementID

Dieser Unterbefehl funktioniert nur, wenn das Fenster weder minimiert noch versteckt ist.

Disable

Deaktiviert die Interaktion mit dem Steuerelement.

GuiControl, Disable, SteuerelementID

Bei Tab-Steuerelementen wird auch die Interaktion mit allen Untersteuerelementen im Tab deaktiviert. Direkt nach dem Wort Disable kann optional eine 0 oder 1 erfolgen. Eine 0 bewirkt, dass die Wirkung umgekehrt wird. Zum Beispiel würden Disable und Disable%VarMitEins% die Interaktion mit dem Steuerelement deaktivieren, und Disable%VarMitNull% würde sie aktivieren.

Enable

Aktiviert die Interaktion mit dem Steuerelement.

GuiControl, Enable, SteuerelementID

Bei Tab-Steuerelementen wird auch die Interaktion mit allen Untersteuerelementen im Tab aktiviert. Beachten Sie aber, jedes Untersteuerelement, das explizit via Disable-Unterbefehl deaktiviert wurde, diese Einstellung beibehält, selbst wenn sein Tab-Steuerelement wieder aktiviert werden sollte. Direkt nach dem Wort Enable kann optional eine 0 oder 1 erfolgen. Eine 0 bewirkt, dass die Wirkung umgekehrt wird. Zum Beispiel würden Enable und Enable%VarMitEins% die Interaktion mit dem Steuerelement aktivieren, und Enable%VarMitNull% würde sie deaktivieren.

Hide

Versteckt das Steuerelement.

GuiControl, Hide, SteuerelementID

Bei Tab-Steuerelementen werden auch alle Untersteuerelemente der Tabs versteckt. Wen Sie außerdem verhindern wollen, dass das Steuerelement via Tastenkürzel (unterstrichener Buchstabe) angesteuert werden kann, müssen Sie die Interaktion mit diesem via Disable-Unterbefehl deaktivieren. Direkt nach dem Wort Hide kann optional eine 0 oder 1 erfolgen. Eine 0 bewirkt, dass die Wirkung umgekehrt wird. Zum Beispiel würden Hide und Hide%VarMitEins% das Steuerelement verstecken, und Hide%VarMitNull% würde es sichtbar machen.

Show

Macht das Steuerelement sichtbar.

GuiControl, Show, SteuerelementID

Bei Tab-Steuerelementen werden auch alle Untersteuerelemente der Tabs sichtbar gemacht. Direkt nach dem Wort Show kann optional eine 0 oder 1 erfolgen. Eine 0 bewirkt, dass die Wirkung umgekehrt wird. Zum Beispiel würden Show und Show%VarMitEins% das Steuerelement sichtbar machen, und Show%VarMitNull% würde es verstecken.

Delete

Noch nicht implementiert: Diesen Unterbefehl gibt es noch nicht. Als Übergangslösung können Sie die Unterbefehle Hide und/oder Disable (siehe oben) verwenden, oder das komplette Fenster via Gui Destroy zerstören und danach neu erstellen.

Choose

Setzt die Auswahl auf den N-ten Eintrag innerhalb eines ListBox-, ComboBox- oder Tab-Steuerelements.

GuiControl, Choose, SteuerelementID, N

Geben Sie für N eine 1 an, um den ersten Eintrag auszuwählen, eine 2 für den zweiten Eintrag, und so weiter. Wenn N kein Integer ist, wird stattdessen der ChooseString-Unterbefehl von unten angewendet. [v1.1.06+]: Wenn N eine Null ist, wird die aktuelle Auswahl innerhalb eines ListBox-, DropDownList- oder ComboBox-Steuerelements entfernt.

Im Gegensatz zu Control Choose wird dieser Unterbefehl keinen g-Label auslösen, das mit dem Steuerelement verbunden ist, es sei denn, N hat einen senkrechten Strich davor (selbst dann wird das g-Label nur ausgelöst, wenn sich die neue Auswahl von der alten Auswahl unterscheidet, zumindest bei Tab-Steuerelementen). Zum Beispiel: GuiControl, Choose, MeineListBox, |3.

Um zusätzlich ein Abschlussereignis auslösen zu lassen (ein Doppelklick im Falle einer ListBox), setzt man zwei statt einen senkrechten Strich davor (Tab-Steuerelemente unterstützen das nicht).

Das folgende Beispiel zeigt, wie alle Elemente innerhalb einer Mehrfachauswahl-ListBox markiert oder demarkiert werden können:

Gui +LastFound  ; Verhindert, dass unten der Fenstertitel angegeben werden muss.
PostMessage, 0x185, 1, -1, ListBox1  ; Markiert alle ListBox-Elemente. 0x185 ist LB_SETSEL.
PostMessage, 0x185, 0, -1, ListBox1  ; Demarkiert alle ListBox-Elemente.
GuiControl, Choose, ListBox1, 0  ; Demarkiert alle Elemente [benötigt v1.1.06+].

ChooseString

Setzt die Auswahl in einem ListBox-, ComboBox- und Tab-Steuerelement auf das erste Element, das mit Zeichenkette beginnt.

GuiControl, ChooseString, SteuerelementID, Zeichenkette

Die Suche unterscheidet nicht zwischen Groß- und Kleinschreibung. Wenn das Steuerelement beispielsweise das Element "UNIX-Text" enthält, würde es genügen, GuiControl, ChooseString, SteuerelementID, unix anzugeben, um es auszuwählen. Die Präfixe "|" und "||" werden ebenfalls unterstützt (schauen Sie sich den Choose-Unterbefehl oben an, um mehr zu erfahren).

Font

Ändert die Schriftart, Schriftgröße, Schriftstil und/oder Schriftfarbe des Steuerelements.

GuiControl, Font, SteuerelementID, Optionen

Zum Beispiel:

Gui, Font, s18 cRed Bold, Verdana  ; Falls gewünscht, können Sie eine Zeile wie diese verwenden, um eine neue Standard-Schrift für das Fenster zu setzen.
GuiControl, Font, MeinEdit  ; Setzt die obere Schrift für ein Steuerelement in Kraft.

Optionen

Fügt verschiedene steuerelement-spezifische oder allgemeine Optionen und Styles hinzu, oder entfernt sie.

GuiControl, +/-Option1 +/-Option2 ..., SteuerelementID , Wert

Im folgenden Beispiel wird die AltSubmit-Option aktiviert, aber das g-Label des Steuerelements entfernt:

GuiControl, +AltSubmit -g, MeineListBox

Im nächsten Beispiel wird der OK-Button zum neuen Standard-Button gemacht:

GuiControl, +Default, OK

Zwar werden Styles und erweiterte Styles auch erkannt, allerdings können ein paar von denen nicht angewendet oder entfernt werden, nachdem ein Steuerelement erstellt wurde. ErrorLevel wird auf 0 gesetzt, wenn mindestens eine der angegebenen Änderungen erfolgreich durchgeführt wurde. Ansonsten wird es auf 1 gesetzt, um zu zeigen, dass keine einzige Änderung angewendet werden konnte. Auch wenn eine Änderung erfolgreich angewendet wurde, hat das Steuerelement immer noch die Wahl, sie zu ignorieren.

[v1.1.20+]: Um ein Funktionsobjekt zum Behandeln von Ereignissen des Steuerelements zu setzen, muss Wert eine einzelne Variablenreferenz sein, wie es in den folgenden beiden Beispielen gezeigt wird. Andere Ausdrücke, die Objekte zurückgeben, werden zurzeit nicht unterstützt.

GuiControl +g, SteuerelementID, %FunkObj%
GuiControl +g, SteuerelementID, % FunkObj

ErrorLevel

[v1.1.04+]: Dieser Befehl ist in der Lage, bei Misserfolg eine Ausnahme auszulösen. Weitere Informationen finden Sie unter Laufzeitfehler.

ErrorLevel wird auf 1 gesetzt, wenn das angegebene Fenster/Steuerelement nicht existiert oder ein anderes Problem die Ausführung des Befehls verhindert hat. Ansonsten wird es auf 0 gesetzt.

Bemerkungen

Um mit einem anderen Fenster als das Standardfenster zu agieren, fügt man dessen Namen oder Nummer (oder [in v1.1.03+] dessen HWND), gefolgt von einem Doppelpunkt, vor dem Unterbefehl ein. Zum Beispiel:

GuiControl, MeinGui:Show, MeinButton
GuiControl, MeinGui:, MeineListBox, Element1|Element2

Diese Methode ist auch dann notwendig, wenn SteuerelementID die zugeordnete Variable eines Steuerelements ist, da jede Variable für mehrere GUI-Fenster verwendet werden kann. In [v1.1.20+] kann der GUI-Name weggelassen werden, wenn SteuerelementID das HWND eines Steuerelements ist.

Ein GUI-Thread ist ein Thread, der aufgrund einer GUI-Aktion gestartet wurde. Zu den GUI-Aktionen gehört beispielsweise das Auswählen eines Menüpunkts oder das Ausführen eines g-Labels (z. B. beim Drücken eines Buttons).

Der Standardfenstername für einen GUI-Thread ist der Name des Fensters, das diesen Thread gestartet hat. Nicht-GUI-Threads verwenden standardmäßig eine 1.

Siehe auch

Gui, GuiControlGet, Control

Beispiele

Beispiel #1: Verschiedenes

GuiControl,, MeineListBox, |Rot|Grün|Blau  ; Ersetzt die aktuelle Liste mit einer neuen Liste.
GuiControl,, MeinEdit, Neue Textzeile 1.`nNeue Textzeile 2.
GuiControl,, MeinRadio2, 1  ; Aktiviert den Radio-Button und deaktiviert alle anderen in seiner Gruppe.
GuiControl, Move, OK, x100 y200  ; Verschiebt den OK-Button auf eine neue Position.
GuiControl, Focus, Nachname  ; Setzt den Tastaturfokus auf ein Steuerelement, dessen Variable oder Text "Nachname" ist.