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

SteuerelementID kann der Name der zugeordneten Variable eines Steuerelements sein, sofern vorhanden (diese Methode hat Vorrang vor der im nächsten Abschnitt beschriebenen Methode). In der Regel ist es sinnvoll, jedem Steuerelement, das später via GuiControl oder GuiControlGet angesteuert wird, eine Variable zuzuordnen (auch nicht-eingabefähige wie GroupBox oder Text).

Ansonsten kann SteuerelementID entweder ClassNN (Klassenname und Instanznummer des Steuerelements) oder der Text des Steuerelements sein, die beide mit dem internen Tool Window 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 der Fenster-Handle (HWND) eines Steuerelements sein.

Wenn sich das Steuerelement nicht auf der Standard-GUI befindet, muss zudem der Name oder Fenster-Handle (HWND) der GUI angegeben werden -- außer in [v1.1.20+], wenn SteuerelementID ein Fenster-Handle ist, da jeder Fenster-Handle einzigartig ist. Weitere Informationen finden Sie unter Bemerkungen.

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: Geben Sie für Wert den Dateinamen (oder Handle) des neuen Bildes an, das geladen werden soll (siehe Gui Picture, welche Dateitypen unterstützt werden). Direkt vor dem Dateinamen können Null oder mehr 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 mit einer Breite von 100 Pixel und einer automatischen Höhe via "Seitenverhältnis beibehalten" geladen: 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. Wenn *w und *h weggelassen werden, wird die Größe des Bildes an die Größe des Steuerelements angepasst. Lädt man ein Symbol aus einer mit mehreren Symbolen bestückten ICO-Datei, bestimmt die Angabe einer Breite und Höhe zudem, welches Symbol geladen werden soll.

Hinweis: Verwenden Sie nur ein Leer- oder Tabulatorzeichen zwischen der letzten Option und dem Dateinamen selbst; alle anderen Leer- oder Tabulatorzeichen werden als Teil des Dateinamens interpretiert.

Text/Button/GroupBox/StatusBar/Link: Geben Sie für Wert den neuen Text des Steuerelements an. Da sich hierbei die Größe des Steuerelements nicht automatisch erweitert, muss so etwas wie GuiControl, Move, MeinText, W300 verwendet werden, um das Steuerelement breiter zu machen. Bei einer StatusBar wird nur der Text des ersten Bereiches gesetzt (nutzen Sie SB_SetText() für mehr 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 eine korrekte Darstellung zu gewährleisten. In der Regel sollte das keine Probleme bereiten, weil Gui Submit und GuiControlGet AusgabeVar diese Umwandlung automatisch rückgängig machen, indem sie CR+LF mit LF (`n) ersetzen.

Hotkey: Geben Sie für Wert eine Tastenkombination in Form von Modifikatorsymbolen und einem Tastennamen an, die im Steuerelement angezeigt werden soll, oder lassen Sie diesen Parameter leer, um den Inhalt des Steuerelements zu löschen. Beispiele: ^!c, ^Numpad1, +Home. Die einzigen unterstützten Modifikatoren sind ^ (Strg), ! (Alt) und + (Umschalt). Weitere verfügbare Tastennamen finden Sie in der Tastenliste.

Checkbox: Geben Sie für Wert eine 0 an, um das Häkchen zu entfernen, eine 1, um es zu setzen, oder -1, um es grau zu machen. Ansonsten wird Wert als neuer Text bzw. Beschriftung des Steuerelements behandelt. Schauen Sie sich den Text-Unterbefehl weiter unten an, wie man dieses Verhalten überschreiben kann.

Radio: Das Gleiche wie Checkbox. Wenn der Radio-Button allerdings eingeschaltet wird und Mitglied einer Multi-Radio-Gruppe ist, werden die anderen Radio-Buttons in der Gruppe automatisch ausgeschaltet. Um einen neuen Button innerhalb einer Multi-Radio-Gruppe einzuschalten, wo nur eine zugeordnete Variable verfügbar ist, muss man für SteuerelementID den Namen/Text des Buttons angeben, wenn diesem Button nicht genau diese Variable zugeordnet ist.

DateTime/MonthCal: Geben Sie für Wert einen Zeitstempel im YYYYMMDDHH24MISS-Format an. Geben Sie %A_Now% an, um das heutige Datum inklusive Uhrzeit zu verwenden. Bei DateTime-Steuerelementen kann Wert weggelassen werden, um das Steuerelement anzuzeigen, ohne dass ein Datum oder eine Uhrzeit vorab ausgewählt ist (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: Geben Sie für Wert die neue Position des Steuerelements an. Wenn das erste Zeichen von Wert ein Pluszeichen ist, wird die Zahl als Offset von der aktuellen Position behandelt. +10 beispielsweise erhöht die Position um 10 Pixel, während +-10 (plus minus zehn) die Position um 10 Pixel verringert. Liegt die neue Position außerhalb des gültigen Bereichs, wird das Steuerelement auf den nächstmöglichen gültigen Wert gesetzt.

Tab/DropDownList/ComboBox/ListBox: Geben Sie für Wert eine via Vertikalstrich getrennte Liste an, um neue Listeneinträge an das Ende der Liste des Steuerelements anzufügen. Fügen Sie einen Vertikalstrich als erstes Zeichen ein, um die Liste stattdessen zu ersetzen bzw. zu überschreiben (z. B. |Rot|Grün|Blau). Geben Sie einen einzelnen Vertikalstrich (|) an, um das Steuerelement leer zu machen. Fügen Sie zwei Vertikalstriche an, um einen Listeneintrag im Steuerelement vorab auszuwählen (z. B. Rot|Grün||Blau). Das Trennzeichen zwischen den Feldern muss nicht zwingend ein Vertikalstrich sein. Mit Gui +Delimiter`n beispielsweise kann stattdessen ein Zeilenumbruchszeichen als Trennzeichen verwendet werden oder mit Gui +DelimiterTab stattdessen ein Tabulatorzeichen (`t) verwendet werden.

Tab-Steuerelemente: Zusätzlich zu dem im obigen Abschnitt beschriebenen Verhalten bleiben die in einem Tab enthaltenen Steuerelemente mit ihrer ursprünglichen Tabnummer verbunden; das heißt, dass sie nie dem tatsächlichen Anzeigenamen ihres Tabs zugeordnet werden. Das Umbenennen oder Entfernen eines Tabs ändert nicht die Tabnummer, zu der die darin enthaltenen Steuerelemente gehören. Wenn zum Beispiel die drei Tabs "Rot|Grün|Blau" vorhanden sind und der zweite Tab mit GuiControl,, MeinTab, |Rot|Blau entfernt wird, werden die ursprünglich mit Grün verknüpften Untersteuerelemente mit Blau verknüpft. Infolgedessen sollten grundsätzlich nur Tabs am Ende einer Liste entfernt werden. Auf diese Weise entfernte Tabs können später wieder hinzugefügt werden, um ihnen ihre ursprünglichen Steuerelemente zurückzugeben.

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 bzw. Beschriftung des Steuerelements.

GuiControl, Text, SteuerelementID , Wert

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

Checkbox/Radio: Wert wird bedingungslos als neuer Text bzw. Beschriftung des Steuerelements behandelt; das heißt, dass auch -1, 0 oder 1 als dessen Text angegeben werden kann.

DateTime: Wert wird als neues Datum/Zeit-Format behandelt, das vom Steuerelement angezeigt werden soll. Lässt man Wert weg, wird jedes benutzerdefinierte Format entfernt und das kurze Datumsformat in Kraft gesetzt.

ComboBox: Wert wird als Text behandelt, 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 Clientbereich des GUI-Fensters, das der Bereich ohne Titelleiste, Menüleiste und Rahmen ist); Y (die Y-Koordinate), W (Breite), H (Höhe). Jede Zahl muss im dezimalen Format sein. 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 ; Erzwingt einen Ausdruck via "% ".

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. Obwohl dieser Unterbefehl bei wiederholtem und schnellem Aufruf ein ungewolltes Flackern erzeugen kann, ist er in der Lage, fehlerhafte Darstellungen beim Zeichnen von bestimmten Steuerelementen wie GroupBox zu verhindern. [v1.0.48.04+]: Der letzte Parameter kann weggelassen werden, um das Steuerelement ohne Verschieben oder Größenänderung neu zu zeichnen.

Focus

Setzt den Tastaturfokus auf das Steuerelement.

GuiControl, Focus, SteuerelementID

Um die gewünschte Wirkung zu erzielen, darf das Fenster weder minimiert noch versteckt sein.

Disable

Deaktiviert die Interaktion mit dem Steuerelement.

GuiControl, Disable, SteuerelementID

Bei Tab-Steuerelementen wird dieser Unterbefehl zudem die Interaktion mit allen darin enthaltenen Steuerelementen deaktivieren. Direkt nach dem Wort Disable kann optional eine 0 oder 1 erfolgen. Eine 0 bewirkt, dass die Wirkung umgekehrt wird. Disable und Disable%VarMitEins% beispielsweise deaktivieren die Interaktion mit dem Steuerelement, während Disable%VarMitNull% diese aktiviert.

Enable

Aktiviert die Interaktion mit dem Steuerelement.

GuiControl, Enable, SteuerelementID

Bei Tab-Steuerelementen wird dieser Unterbefehl zudem die Interaktion mit allen darin enthaltenen Steuerelementen aktivieren. Beachten Sie aber, dass jedes darin enthaltene Steuerelement, das explizit via Disable-Unterbefehl deaktiviert wurde, sich diese Einstellung merkt und dementsprechend auch nach Reaktivierung des Tab-Steuerelements deaktiviert bleibt. Direkt nach dem Wort Enable kann optional eine 0 oder 1 erfolgen. Eine 0 bewirkt, dass die Wirkung umgekehrt wird. Enable und Enable%VarMitEins% beispielsweise aktivieren die Interaktion mit dem Steuerelement, während Enable%VarMitNull% diese deaktiviert.

Hide

Versteckt das Steuerelement.

GuiControl, Hide, SteuerelementID

Bei Tab-Steuerelementen wird dieser Unterbefehl zudem alle darin enthaltenen Steuerelemente verstecken. Mit dem Disable-Unterbefehl kann zusätzlich das Tastenkürzel eines Steuerelements (unterstrichene Buchstabe) deaktiviert werden. Direkt nach dem Wort Hide kann optional eine 0 oder 1 erfolgen. Eine 0 bewirkt, dass die Wirkung umgekehrt wird. Hide und Hide%VarMitEins% beispielsweise verstecken das Steuerelement, während Hide%VarMitNull% das Steuerelement sichtbar macht.

Show

Macht das Steuerelement sichtbar.

GuiControl, Show, SteuerelementID

Bei Tab-Steuerelementen wird dieser Unterbefehl zudem alle darin enthaltenen Steuerelemente sichtbar machen. Direkt nach dem Wort Show kann optional eine 0 oder 1 erfolgen. Eine 0 bewirkt, dass die Wirkung umgekehrt wird. Show und Show%VarMitEins% beispielsweise machen das Steuerelement sichtbar, während Show%VarMitNull% das Steuerelement versteckt.

Delete

Noch nicht implementiert: Dieser Unterbefehl ist noch nicht verfügbar. Verwenden Sie als Alternative die Unterbefehle Hide und/oder Disable (siehe oben) oder zerstören Sie das komplette Fenster via Gui Destroy und erstellen Sie es neu.

Choose

Wählt den N-ten Listeneintrag/Tab in einer ListBox, DropDownList, ComboBox oder einem Tab-Steuerelement aus.

GuiControl, Choose, SteuerelementID, N

Geben Sie für N die Positionsnummer eines Listeneintrags an; also 1 für den ersten Listeneintrag, 2 für den Zweiten, und so weiter. Wenn N kein Integer ist, wird stattdessen der unten beschriebene ChooseString-Unterbefehl angewendet. [v1.1.06+]: Wenn N eine 0 ist, wird die aktuelle Auswahl der ListBox, DropDownList oder ComboBox entfernt.

Im Gegensatz zu Control Choose wird dieser Unterbefehl kein g-Label auslösen, das dem Steuerelement zugeordnet ist, es sei denn, N beginnt mit einem Vertikalstrich (selbst dann wird das g-Label nur ausgelöst, wenn die neue Auswahl von der alten abweicht, zumindest bei Tab-Steuerelementen). Zum Beispiel: GuiControl, Choose, MeineListBox, |3.

Verwenden Sie zwei Vertikalstriche anstelle von einem, um zusätzlich ein Abschlussereignis (ein Doppelklick im Falle einer ListBox) auslösen zu lassen (Tab-Steuerelemente unterstützen das nicht).

Das folgende Beispiel zeigt, wie alle Listeneinträge in einer Mehrfachauswahl-ListBox aus- oder abgewählt werden können:

Gui +LastFound  ; Verhindert, dass unten der Fenstertitel angegeben werden muss.
PostMessage, 0x185, 1, -1, ListBox1  ; Wählt alle Listeneinträge aus. 0x185 ist LB_SETSEL.
PostMessage, 0x185, 0, -1, ListBox1  ; Wählt alle Listeneinträge ab.
GuiControl, Choose, ListBox1, 0  ; Wählt alle Listeneinträge ab [benötigt v1.1.06+].

ChooseString

Wählt in einer ListBox, DropDownList, ComboBox oder einem Tab-Steuerelement einen Listeneintrag/Tab aus, dessen Name mit Zeichenkette beginnt.

GuiControl, ChooseString, SteuerelementID, Zeichenkette

Die Suche ist nicht Groß-/Kleinschreibung-sensitiv. Wenn ein Steuerelement beispielsweise den Listeneintrag/Tab "UNIX-Text" enthält, reicht die Angabe von GuiControl, ChooseString, SteuerelementID, unix aus, um diesen Listeneintrag/Tab auszuwählen. Die Präfixe "|" und "||" werden ebenfalls unterstützt (schauen Sie sich den Choose-Unterbefehl oben an, um mehr zu erfahren).

Font

Ändert 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 Standardschrift für das Fenster zu setzen.
GuiControl, Font, MeinEdit  ; Setzt die obere Schrift für ein Steuerelement in Kraft.

Optionen

Fügt verschiedene steuerelementspezifische oder allgemeine Optionen und Styles hinzu, oder entfernt sie.

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

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

GuiControl, +AltSubmit -g, MeineListBox

Im nächsten Beispiel wird die OK-Schaltfläche zur neuen Standardschaltfläche gemacht:

GuiControl, +Default, OK

Obwohl auch Styles und erweiterte Styles erkannt werden, können einige von ihnen nicht angewendet oder entfernt werden, nachdem ein Steuerelement erstellt wurde. ErrorLevel wird auf 0 gesetzt, wenn mindestens eine der angegebenen Änderungen erfolgreich angewendet wurde. Ansonsten wird es auf 1 gesetzt, um zu kennzeichnen, dass keine der Änderungen angewendet werden konnte. Eine erfolgreich angewendete Änderung kann immer noch vom Steuerelement selbst ignoriert werden.

[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 anstelle des Standardfensters mit einem anderen Fenster 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, MeineGui:Show, MeinButton
GuiControl, MeineGui:, MeineListBox, Element1|Element2

Dies ist auch dann erforderlich, 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 der Fenster-Handle (HWND) eines Steuerelements ist.

Als GUI-Thread wird jeder Thread bezeichnet, der infolge einer GUI-Aktion gestartet wird. Zu den GUI-Aktionen gehört beispielsweise das Auswählen eines Menüpunkts oder das Auslösen eines g-Labels (z. B. durch Drücken einer Schaltfläche).

Der Standardfenstername eines GUI-Threads ist der Name des Fensters, das diesen Thread gestartet hat. Nicht-GUI-Threads verwenden standardmäßig 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  ; Schaltet diesen Radio-Button ein, während alle anderen in der Gruppe ausgeschaltet werden.
GuiControl, Move, OK, x100 y200  ; Verschiebt die OK-Schaltfläche auf eine neue Position.
GuiControl, Focus, Nachname  ; Setzt den Tastaturfokus auf ein Steuerelement, dessen Variable oder Text "Nachname" ist.