GUI-Steuerelementarten

Inhaltsverzeichnis

Text

Beschreibung: Ein Textfeld ohne Rand, das vom Benutzer nicht bearbeitet werden kann. Oft verwendet, um andere Steuerelemente zu beschriften. Beispiel:

Gui, Add, Text,, Bitte Name eingeben:

In diesem Fall ist der letzte Parameter die Zeichenkette, die angezeigt werden soll. Die Zeichenkette kann Zeilenumbruchszeichen (`n) enthalten, um neue Zeilen zu beginnen. Außerdem kann mithilfe eines Fortsetzungsbereichs eine lange Zeile in mehreren kurzen Zeilen aufgeteilt werden.

Enthält Optionen eine Breite (W), aber nicht Zeilen (R) oder Höhe (H), werden Textzeilen bei Bedarf umbrochen und die Höhe des Steuerelements automatisch gesetzt.

Da die Inhalte des Steuerelements im letzten Parameter des GUI-Befehls angegeben sind, müssen direkt geschriebene Kommas nicht mit einem Escapezeichen versehen werden. Dieser Sachverhalt gilt auch für den letzten Parameter aller anderen Befehle.

Ein g-Label wie gMeineSubroutine kann in den Optionen des Steuerelements eingefügt werden. Diese Option lässt das Label MeineSubroutine immer dann starten, wenn der Benutzer den Text anklickt. So ein Label kann verwendet werden, um einen unterstrichenen, blauen Hyperlink zu simulieren, wie es im folgenden Skript gezeigt wird:

Gui, Font, underline
Gui, Add, Text, cBlue gGoogleStarten, Hier klicken, um Google zu starten.

; Alternativ kann auch das Link-Steuerelement verwendet werden:
Gui, Add, Link,, <a href="www.google.com">Hier</a> klicken, um Google zu starten.
Gui, Font, norm
Gui, Show
return

GoogleStarten:
Run www.google.com
return

Ein Doppelklick kann ermittelt werden, wenn überprüft wird, ob A_GuiEvent das Wort DoubleClick enthält.

Ein Und-Zeichen (&) kann im Text verwendet werden, um einen Buchstaben zu unterstreichen. Zum Beispiel:

Gui, Add, Text,, &Vorname:
Gui, Add, Edit

Im obigen Beispiel wird der Buchstabe V unterstrichen, das dem Benutzer zeigt, dass das Tastenkürzel Alt+V gedrückt werden kann, um den Tastaturfokus auf das erste eingabefähige Steuerelement zu setzen, das nach dem Text-Steuerelement hinzugefügt worden ist. Um stattdessen ein direkt geschriebenes Und-Zeichen anzuzeigen, schreibt man zwei aufeinanderfolgende Und-Zeichen (&&). Um die Sonderbehandlung der Und-Zeichen komplett zu deaktivieren, fügt man 0x80 in den Optionen des Steuerelements ein.

Siehe allgemeine Optionen für weitere Optionen wie Right, Center und Hidden. Siehe auch: Position und Größe von Steuerelementen anpassen.

Edit

Beschreibung: Ein Eingabefeld, in dem formatloser Text eingegeben werden kann. Beispiel:

Gui, Add, Edit, r9 vMeinEdit, Text erscheint innerhalb des Eingabefeldes (lasst diesen Parameter weg, um anfangs leer zu sein).

Das Steuerelement wird mehrzeilig, wenn es mehr als eine Textzeile hat. Die Angabe von r3 in Optionen bewirkt beispielsweise, dass ein dreizeiliges Edit-Steuerelement mit folgenden Standardeigenschaften erstellt wird: vertikale Scrollleiste; automatischer Zeilenumbruch; Enter-Tastendruck erzeugt einen Zeilenumbruch, anstatt den Standard-Button des Fensters auszulösen.

Um eine neue Zeile in einem mehrzeiligen Edit-Steuerelement zu beginnen, kann der letzte Parameter (Inhalte) entweder ein einzelnes LF (`n) oder CR+LF (`r`n) enthalten. Beide Methoden erzeugen direkt geschriebene CR+LF-Paare (`r`n) innerhalb des Edit-Steuerelements. Falls das Steuerelement jedoch per Gui Submit oder GuiControlGet in dessen zugewiesene Variable gespeichert worden ist, wird ein CR+LF-Paar (`r`n) jedesmal in ein einzelnes Zeilenumbruchszeichen (`n) umgewandelt. Das folgende Beispiel zeigt, wie Text in eine Datei geschrieben werden kann: FileAppend, %MeinEingabefeld%, C:\Gespeicherte Datei.txt.

Bei einem Steuerelement mit automatischem Zeilenumbruch (Standard bei mehrzeiligen Edit-Steuerelementen) wird jeder Zeilenumbruch bei Benutzereingabe keine Zeilenumbruchszeichen erzeugen (nur die Enter-Taste ist dazu fähig).

Ein g-Label wie gMeineSubroutine kann in den Optionen des Steuerelements eingefügt werden. Diese Option lässt das Label MeineSubroutine immer dann starten, wenn der Benutzer oder das Skript den Inhalt des Steuerelements ändert.

TIPP: Mit FileRead und GuiControl kann eine Textdatei in ein Edit-Steuerelement geladen werden. Zum Beispiel:

Gui, Add, Edit, R20 vMeinEdit
FileRead, Dateiinhalt, C:\Meine Datei.txt
GuiControl,, MeinEdit, %Dateiinhalt%

Edit-Optionen

Hinweis: Um eine Option zu entfernen, muss ein Minuszeichen davor gesetzt werden.

Limit: Beschränkt die Benutzereingabe auf die sichtbare Breite des Eingabefeldes. Alternativ kann die Eingabe auf eine bestimmte Anzahl an Zeichen begrenzt werden, wenn direkt danach eine Zahl angegeben wird. Zum Beispiel würde Limit10 bewirken, dass nicht mehr als 10 Zeichen eingegeben werden können.

Lowercase: Die Zeichen werden bei Benutzereingabe automatisch in Kleinbuchstaben umgewandelt.

Multi: Macht es möglich, mehr als eine Textzeile zu haben. Üblicherweise ist es nicht notwendig, diese Option anzugeben, weil sie automatisch erkannt wird, basierend auf Höhe (H), Zeilen (R) oder Inhalte (Text).

Number: Hindert den Benutzer daran, etwas anderes als Zahlen in das Feld einzugeben (es ist immer noch möglich, nicht-numerische Werte per Zwischenablage einzufügen). Alternativ kann man eine numerische Eingabe auch erzwingen, wenn ein UpDown ans Edit-Steuerelement angefügt wird.

Password: Versteckt die Benutzereingabe (z. B. für ein Passwort) durch Ersetzen der eingegebenen Zeichen mit Maskierungszeichen. Es ist möglich, nach dem Wort Password ein benutzerdefiniertes Maskierungszeichen anzugeben. Zum Beispiel würde Password* das Maskierungszeichen zu einem Sternchen machen, statt zu einem schwarzen Punkt, der standardmäßig in Windows XP verwendet wird. Hinweis: Diese Option funktioniert nicht bei mehrzeiligen Edit-Steuerelementen.

ReadOnly: Hindert den Benutzer daran, die Inhalte des Steuerelements zu ändern. Der Text kann aber weiterhin gescrollt, markiert und in die Zwischenablage kopiert werden.

Tn: Der Buchstabe T kann dazu verwendet werden, Tabstopps innerhalb eines mehrzeiligen Edit-Steuerelements zu setzen (Tabstopps bestimmen die Spaltenpositionen, auf denen direkt geschriebene TAB-Zeichen springen werden; sie können verwendet werden, um den Text in Spalten zu formatieren). Ist der Buchstabe T nicht vorhanden, erfolgen die Tabstopps bei je 32 Dialogeinheiten (DLU) (die Breite jeder Dialogeinheit ist vom Betriebssystem abhängig). Ist der Buchstabe T nur einmal vorhanden, werden die Tabstopps auf je n Einheiten über die gesamte Breite des Steuerelements verteilt. Zum Beispiel würde Gui, Add, Edit, vMeinEdit r16 t64 den Standardabstand zwischen den Tabstopps verdoppeln. Um eigene Tabstopps zu definieren, gibt man mehrmals den Buchstaben T an. Zum Beispiel: Gui, Add, Edit, vMeinEdit r16 t8 t16 t32 t64 t128. Ein Tabstopp gilt jeweils für eine absolute Spaltenposition in der Liste, bis zu einem Maximum von 50 Tabstopps. Hinweis: Tabstopps benötigen ein mehrzeiliges Edit-Steuerelement.

Uppercase: Die Zeichen werden bei Benutzereingabe automatisch in Großbuchstaben umgewandelt.

WantCtrlA [v1.0.44+]: Geben Sie -WantCtrlA (minus WantCtrlA) an, um die Möglichkeit zu entfernen, den ganzen Text im Edit-Steuerelement via Strg+A zu markieren.

WantReturn: Geben Sie -WantReturn an (also ein Minus und direkt danach WantReturn), um die Möglichkeit zu deaktivieren, Zeilenumbruchszeichen via Enter-Taste in einem mehrzeiligen Edit-Steuerelement zu erzeugen. Enter zu drücken wäre dann das gleiche wie, als würde man den Standard-Button des Fensters (falls vorhanden) drücken. In diesem Fall könnte der Benutzer Strg+Enter drücken, um eine neue Zeile zu beginnen.

WantTab: Bringt eine Tab-Taste dazu, ein Tabulatorzeichen zu erzeugen, statt das nächste Steuerelement anzusteuern. Ist diese Option nicht vorhanden, könnte der Benutzer Strg+Tab drücken, um ein Tabulatorzeichen innerhalb eines mehrzeiligen Edit-Steuerelements erzeugen zu können. Hinweis: WantTab funktioniert auch bei einem einzeiligen Edit-Steuerelement, allerdings werden die Tabulatorzeichen als kastenförmige Zeichen dargestellt (die aber weiterhin gültig sind).

-Wrap: Deaktiviert den automatischen Zeilenumbruch in einem mehrzeiligen Edit-Steuerelement. Dieser Style kann nach dem Erstellen des Steuerelements nicht mehr geändert werden. Als Alternative können folgende Methoden verwendet werden: 1) Das Fenster und die dazugehörigen Steuerelemente zerstören und danach neu erstellen; oder 2) Zwei übereinander liegende Edit-Steuerelemente erstellen, bei denen das erste den automatischen Zeilenumbruch aktiviert hat und beim anderen nicht. Das Steuerelement, das nicht verwendet wird, kann leer und/oder versteckt bleiben.

Siehe allgemeine Optionen für weitere Optionen wie Right, Center und Hidden. Siehe auch: Position und Größe von Steuerelementen anpassen.

Eingabefeld mit mehr Funktionen: HiEdit ist ein frei verfügbares Edit-Steuerelement, das aus mehreren Tabs besteht, große Dateien beinhalten kann und sehr wenig Speicher verbraucht. Es kann sowohl Text- als auch Binärdateien bearbeiten. Für Details siehe Thread von majkinetor.

UpDown

Beschreibung: Zwei Pfeiltasten, die der Benutzer drücken kann, um einen Wert zu erhöhen oder zu verringern. Standardmäßig fügt sich ein UpDown automatisch an das zuvor hinzugefügte Steuerelement an. Dieses vorherige Steuerelement wird auch als Buddy bezeichnet. Das bekannteste Beispiel dafür ist der "Spinner" (Drehrad) - ein UpDown, das an einem Edit-Steuerelement angefügt ist. Zum Beispiel:

Gui, Add, Edit
Gui, Add, UpDown, vMeinUpDown Range1-10, 5

Im obigen Beispiel ist das Edit-Steuerelement der Buddy von UpDown. Immer, wenn der Benutzer eine der Pfeiltasten drückt, wird die Zahl im Edit-Steuerelement automatisch erhöht oder verringert.

Der Buddy von UpDown kann auch ein Text- oder ListBox-Steuerelement sein. Aufgrund von Einschränkungen des Betriebssystems kann es jedoch sein, dass die restlichen Steuerelemente (wie ComboBox oder DropDownList) nicht ordnungsgemäß mit g-Labels und anderen Funktionen funktionieren.

Fügen Sie im letzten Parameter die Startposition für UpDown ein (fehlt oder ist dieser Parameter leer, gilt standardmäßig 0 oder der niedrigste zulässige Bereichswert).

Wenn man den Befehl Gui Submit verwendet, wird in die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) die numerische Position von UpDown gespeichert. Wenn das UpDown an einem Edit-Steuerelement angefügt worden ist und die Gültigkeit der Benutzereingabe nicht überprüft werden soll, ist es am besten, den Wert von UpDown zu verwenden, statt den Wert vom Edit-Steuerelement. Das liegt daran, dass UpDown immer eine Zahl innerhalb des Bereichs zurückgibt, auch dann, wenn der Benutzer im Edit-Steuerelement etwas eingegeben hat, das keine Zahl ist oder außerhalb des Bereichs liegt. Beachten Sie zudem, dass Zahlen mit mehr als 3 Stellen standardmäßig einen Tausender-Trennzeichen (z. B. Komma) erhalten. Diese Trennzeichen werden in die Ausgabevariable des Edit-Steuerelements gespeichert, nicht in die von UpDown.

Hat das UpDown ein g-Label, wird es gestartet, wann immer der Benutzer eine der Pfeiltasten anklickt oder eine Pfeiltaste auf der Tastatur drückt. Bei jedem Start des g-Labels wird zudem die UpDown-Position in dessen zugeordnete Ausgabevariable gespeichert (falls vorhanden).

UpDown-Optionen

Horz: Richtet die Buttons des Steuerelements nach links/rechts aus, statt nach oben/unten. Standardmäßig wird dabei das Steuerelement vom Buddy getrennt. Dieses Verhalten kann durch die Angabe von Horz 16 in den Optionen des Steuerelements überschrieben werden.

Left: Setzt das UpDown an die linke Seite des Buddys, statt an die rechte Seite.

Range: Bestimmt einen Bereich, der vom Standardbereich 0 bis 100 abweichen soll. Nach dem Wort Range erfolgt der Minimalwert, ein Bindestrich und der Maximalwert. Zum Beispiel würde Range1-1000 ermöglichen, eine Zahl zwischen 1 und 1000 auswählen zu können, Range-50-50 eine Zahl zwischen -50 und 50 und Range-10--5 eine Zahl zwischen -10 und -5. Minimal- und Maximalwert können vertauscht werden, um die Pfeiltasten dazu zu bringen, in die entgegengesetzte Richtung zu bewegen. Der größte zulässige Bereich ist -2147483648 bis 2147483647. Wenn das Buddy-Steuerelement eine ListBox ist, gilt standardmäßig ein Bereich von 32767 bis 0 bei einem vertikalen UpDown und umgekehrt bei einem horizontalen UpDown (Horz).

Wrap: Das Steuerelement springt auf das entgegengesetzte Ende des Bereichs, wenn der Minimal- oder Maximalwert überschritten wird. Ist Wrap nicht vorhanden, wird das Steuerelement beim Erreichen des Minimal- oder Maximalwertes stoppen.

-16: Bewirkt, dass ein vertikales UpDown vom Buddy getrennt wird. Das führt auch dazu, dass das Steuerelement jede angegebene Breite, Höhe und Position berücksichtigen wird, anstatt sich nach der Größe des Buddys zu richten. Darüber hinaus merkt sich ein isoliertes UpDown intern die eigene Position. Diese Position kann beispielsweise per Gui Submit abgerufen werden.

0x80: Fügen Sie 0x80 in Optionen ein, um die Tausender-Trennzeichen zu entfernen, die üblicherweise bei je drei Dezimalstellen im Buddy vorkommen. Normalerweise ist dieser Style nicht notwendig, weil die Trennzeichen in der Zahl fehlen, wenn man die Zahl vom UpDown-Steuerelement selbst abruft (statt vom Buddy).

Beliebige Schrittweite: In diesem Skript von NumEric wird gezeigt, wie die UpDown-Schrittweite geändert werden kann (z. B. 5 oder 0.1).

Siehe auch: Position und Größe von Steuerelementen anpassen.

Picture (oder Pic)

Beschreibung: Ein Bereich, in dem ein Bild angezeigt wird (siehe weiter unten, welche Dateitypen unterstützt werden). Der letzte Parameter ist der Name der Bilddatei, von der man annimmt, dass sie sich im A_WorkingDir-Verzeichnis befindet, solange kein absoluter Pfad angegeben ist. Beispiel:

Gui, Add, Picture, w300 h-1, C:\Meine Bilder\Firmenlogo.gif

Um die aktuelle Breite und/oder Höhe des Bildes beizubehalten, lässt man die Optionen W und/oder H weg. Ansonsten wird das Bild auf die angegebene Breite und/oder Höhe skaliert (diese Breite und Höhe bestimmen auch, welches Symbol aus einer ICO-Datei mit mehreren Symbolen geladen wird). Um das Bild unter Beibehaltung des Seitenverhältnisses zu verkleinern oder zu vergrößern, benutzt man -1 für die eine Abmessung und eine positive Zahl für die andere Abmessung. Zum Beispiel würde w200 h-1 das Bild 200 Pixel breit machen und dessen Höhe automatisch setzen. Kann das Bild nicht geladen oder angezeigt werden (z. B. Datei nicht gefunden), wird das Steuerelement leer bleiben und dessen Breite und Höhe auf 0 gesetzt.

Ein g-Label wie gMeineSubroutine kann in den Optionen des Steuerelements eingefügt werden. Diese Option lässt das Label MeineSubroutine immer dann starten, wenn der Benutzer das Bild anklickt. Ein Doppelklick kann erkannt werden, wenn überprüft wird, ob A_GuiEvent das Wort DoubleClick enthält.

Um ein Bild als Hintergrund für andere Steuerelemente zu nutzen, sollte das Bild normalerweise hinzugefügt werden, bevor solche Steuerelemente erstellt werden. Sind diese Steuerelemente allerdings eingabefähig und hat das Bild ein g-Label, sollte das Bild erst nach diesen Steuerelementen erstellt und 0x4000000 (WS_CLIPSIBLINGS) in Optionen von Picture eingefügt werden. Durch diesen Trick kann das Bild auch der Hintergrund eines Tab- oder ListView-Steuerelements sein.

Symbole, Cursor und animierte Cursor: Symbole und Cursor können von folgenden Dateitypen geladen werden: ICO, CUR, ANI, EXE, DLL, CPL, SCR und andere Typen, die Symbolressourcen enthalten. Um anstelle der ersten Symbolgruppe eine andere zu verwenden, fügt man in den Optionen das Wort Icon ein, gefolgt von der Gruppennummer. Das folgende Beispiel zeigt, wie das Standardsymbol aus der zweiten Symbolgruppe verwendet werden kann: Gui, Add, Picture, Icon2, C:\Meine Anwendung.exe.

Das Wort AltSubmit in Optionen teilt dem Programm mit, die Microsoft-Datei GDIPlus.dll zu verwenden, um das Bild zu laden. Das könnte dazu führen, dass GIF-, BMP- und Symbolbilder anders dargestellt werden. Zum Beispiel könnte damit eine ICO/GIF-Datei mit transparentem Hintergrund als transparente Bitmap geladen werden, bei der die Option BackgroundTrans wirksam gemacht werden kann (aber in [v1.1.23+] unterstützen Symbole eine Transparenz ohne AltSubmit). Wenn GDIPlus nicht verfügbar ist (siehe nächsten Absatz), wird AltSubmit ignoriert und das Bild mit der normalen Methode geladen.

Alle Betriebssysteme unterstützen GIF, JPG, BMP, ICO, CUR und ANI. In Windows XP (oder höher) werden zusätzliche Bildformate wie PNG, TIF, Exif, WMF und EMF unterstützt. Betriebssysteme älter als XP können solche Formate auch unterstützen, wenn man die freie GDIPlus.dll von Microsoft in den Ordner von AutoHotkey.exe kopiert (im Falle eines kompilierten Skripts muss die DLL-Datei in den Ordner des Skripts kopiert werden). Um die DLL herunterzuladen, sucht man auf www.microsoft.com nach folgenden Begriffen: gdi redistributable

Animierte GIF-Bilder: Animierte GIF-Dateien werden zwar in einem Picture-Steuerelement angezeigt, aber nicht animiert. Um dieses Problem zu lösen, verwendet man AniGIF.dll (die für nicht-kommerzielle Zwecke kostenlos zur Verfügung steht). Siehe dazu Show animated Gifs in your GUI.

[v1.1.23+]: Man kann ein Bitmap- oder Symbol-Handle anstelle eines Dateinamens verwenden. Zum Beispiel HBITMAP:%handle%.

Button

Beschreibung: Ein Button, der gedrückt werden kann, um eine Aktion auszulösen. In diesem Fall ist der letzte Parameter der Name des Buttons (wird auf dem Button selbst angezeigt), der Zeilenumbruchszeichen (`n) enthalten kann, um neue Zeilen zu beginnen. Beispiel:

Gui, Add, Button, Default, OK

Das obige Beispiel enthält das Wort Default in Optionen, um das "OK" zum Standard-Button zu machen. Die Aktion des Standard-Buttons wird immer dann ausgelöst, wenn der Benutzer die Enter-Taste drückt, sofern der Tastaturfokus nicht auf einem anderen Button oder auf ein mehrzeiliges Edit-Steuerelement mit aktiviertem WantReturn-Style liegt. Das folgende Beispiel zeigt, wie man nachträglich einen anderen Button (in diesem Fall der Cancel-Button) als Standard-Button bestimmen kann: GuiControl, +Default, Cancel. Das folgende Beispiel zeigt, wie der Standard-Button eines Fensters in einen normalen Button umgewandelt werden kann: GuiControl, -default, OK.

Enthält der Name des Buttons ein Und-Zeichen (&), wird der nachfolgende Buchstabe unterstrichen. Zum Beispiel:

Gui, Add, Button,, &Pause

Im obigen Beispiel wird der Buchstabe P unterstrichen, wodurch der Benutzer Alt+P als Tastenkürzel verwenden kann. Um ein direkt geschriebenes Und-Zeichen anzuzeigen, schreibt man zwei aufeinanderfolgende Und-Zeichen (&&).

Fehlt dem Button ein explizites g-Label, geht man von einem automatischen Label aus. Enthält das erste GUI-Fenster beispielsweise einen OK-Button, wird das Label ButtonOK (falls vorhanden) gestartet, sobald dieser Button gedrückt wird. Bei GUI-Fenstern, abgesehen vom ersten, wird die Fensternummer vor dem automatischen Label des Buttons eingefügt; zum Beispiel: 2ButtonOK.

Enthält der Text auf dem Button Leerzeichen oder andere Zeichen aus dem Set &`r`n`t`, wird sein automatisches Label solche Zeichen weglassen. Zum Beispiel hätte ein Button mit dem Titel "&Pause" das automatische Label ButtonPause. Ein Button mit dem Titel "Speichern && Beenden" hätte das automatische Label ButtonSpeichernBeenden (mit den zwei Und-Zeichen kann ein einzelnes direkt geschriebenes Und-Zeichen angezeigt werden).

Bekannte Einschränkung: Bestimmte Desktop-Themes können den Text eines Buttons nicht ordnungsgemäß anzeigen. Wenn dies der Fall ist, versuchen Sie -Wrap in den Optionen des Buttons einzufügen. Dadurch wird allerdings auch verhindert, dass der Text mehr als eine Zeile haben kann.

CheckBox

Beschreibung: Ein Kontrollkästchen, in der eine Markierung gesetzt oder entfernt werden kann, das An/Aus, Ja/Nein und so weiter repräsentieren soll. Beispiel:

Gui, Add, Checkbox, vSendenAnRechnungsadresse, An Rechnungsadresse senden?

Der letzte Parameter ist eine Beschriftung neben der CheckBox, was typischerweise als Abfrage dient oder die Funktionsweise der CheckBox näher beschreibt. Es kann Zeilenumbruchszeichen (`n) enthalten, um neue Zeilen beginnen zu können. Enthält Optionen eine Breite (W), aber nicht Zeilen (R) oder Höhe (H), werden Textzeilen bei Bedarf umbrochen und die Höhe des Steuerelements automatisch gesetzt. In die zugeordnete Ausgabevariable der CheckBox (falls vorhanden) wird eine 1 für markiert, 0 für nicht markiert, und -1 für grau/unbestimmt gespeichert.

Fügen Sie das Wort Check3 in den Optionen ein, um den dritten Zustand in Form eines grauen Häkchens zu aktivieren (dieser Zustand zeigt an, dass die Markierung der CheckBox weder gesetzt noch entfernt wurde). Fügen Sie das Wort Checked oder CheckedGray in den Optionen ein, damit die CheckBox zu Beginn ein schwarzes oder graues Häkchen hat. Direkt nach dem Wort Checked kann optional eine 0, 1 oder -1 erfolgen, um den Startzustand zu bestimmen. In diesem Fall wäre Checked das gleiche wie Checked%VarMitEins%.

Ein g-Label wie gMeineSubroutine kann in den Optionen des Steuerelements eingefügt werden. Diese Option lässt das Label MeineSubroutine immer dann starten, wenn der Benutzer die CheckBox anklickt oder ändert.

Bekannte Einschränkung: Bestimmte Desktop-Themes können den Text eines Buttons nicht ordnungsgemäß anzeigen. Wenn dies der Fall ist, versuchen Sie -Wrap in den Optionen des Buttons einzufügen. Dadurch wird allerdings auch verhindert, dass der Text mehr als eine Zeile haben kann.

Radio

Beschreibung: Ein Optionsfeld in Form eines kleinen leeren Kreises, in der eine Markierung gesetzt (An) oder entfernt (Aus) werden kann. Beispiel:

Gui, Add, Radio, vMeineRadioGruppe, Warten, bis alle Artikel auf Lager sind, bevor sie abgeschickt werden.

Solche Steuerelemente befinden sich üblicherweise in Radiogruppen, die aus 2 oder mehr Radio-Buttons bestehen. Klickt der Benutzer einen Radio-Button an, um ihn zu aktivieren, werden alle anderen Radio-Buttons in der Gruppe automatisch deaktiviert (der Benutzer kann außerdem mit den Pfeiltasten innerhalb einer Gruppe navigieren). Eine Radiogruppe wird automatisch um alle nacheinander hinzugefügten Radio-Buttons erstellt. Um eine neue Gruppe zu beginnen, fügt man das Wort Group in den Optionen des ersten Radio-Buttons ein -- oder man fügt zwischendurch einfach ein Steuerelement ein, das kein Radio-Button ist, weil dies automatisch eine neue Gruppe beginnen würde.

Der letzte Parameter ist die Bezeichnung auf der rechten Seite des Radio-Buttons. Diese Bezeichnung dient üblicherweise als Eingabeaufforderung oder Funktionsbeschreibung des Steuerelements, und kann Zeilenumbrüche (`n) enthalten, um neue Zeilen beginnen zu können. Enthält Optionen eine Breite (W), aber nicht Zeilen (R) oder Höhe (H), werden Textzeilen bei Bedarf umbrochen und die Höhe des Steuerelements automatisch gesetzt.

Fügen Sie das Wort Checked in den Optionen ein, damit der Button zu Beginn aktiviert ist. Direkt nach dem Wort Checked kann optional eine 0 oder 1 erfolgen, um den Startzustand zu bestimmen: 0 für nicht markiert und 1 für markiert. In diesem Fall wäre Checked das gleiche wie Checked%VarMitEins%.

In die zugeordnete Ausgabevariable des Radio-Buttons (falls vorhanden) wird eine 1 für markiert und 0 für nicht markiert gespeichert. Wenn nur ein Radio-Button in einer Radiogruppe eine Variable hat, wird in dieser Variable stattdessen die Nummer des aktuell markierten Radio-Buttons gespeichert: 1 ist der erste Radio-Button (gemäß der originalen Erstellungsreihenfolge), 2 ist der zweite und so weiter. Wenn kein einziger Radio-Button markiert ist, wird 0 gespeichert.

Ein g-Label wie gMeineSubroutine kann in den Optionen des Steuerelements eingefügt werden. Diese Option lässt das Label MeineSubroutine immer dann starten, wenn der Benutzer den Radio-Button aktiviert. Im Gegensatz zum Einzelvariablenmodus, der im vorherigen Abschnitt beschrieben wurde, muss das g-Label bei jedem Radio-Button in einer Gruppe angegeben werden, bei der das Label gestartet werden soll. Auf diese Weise kann je nach Bedarf das Anklicken von bestimmten Radio-Buttons ignoriert werden. Ein Doppelklick kann erkannt werden, wenn überprüft wird, ob A_GuiEvent das Wort DoubleClick enthält.

Bekannte Einschränkung: Bestimmte Desktop-Themes können den Text eines Buttons nicht ordnungsgemäß anzeigen. Wenn dies der Fall ist, versuchen Sie -Wrap in den Optionen des Buttons einzufügen. Dadurch wird allerdings auch verhindert, dass der Text mehr als eine Zeile haben kann.

Beschreibung: Eine Liste mit Auswahlmöglichkeiten, die durch Drücken eines kleinen Buttons angezeigt werden kann. Hierbei ist der letzte Parameter eine mit senkrechten Strichen getrennte Liste wie z. B. Auswahl1|Auswahl2|Auswahl3. Beispiel:

Gui, Add, DropDownList, vFarbauswahl, Schwarz|Weiß|Rot|Grün|Blau

Damit eines der Elemente zu Beginn vorab ausgewählt ist, müssen zwei senkrechte Striche nach diesem Element erfolgen (z. B. Rot|Grün||Blau). Alternativ kann man auch das Wort Choose in den Optionen angeben und direkt danach die Nummer des Elements einfügen, das vorab ausgewählt sein soll. Zum Beispiel würde Choose5 das fünfte Element vorab auswählen (wie bei den anderen Optionen auch, kann das eine Variable sein, wie z. B. Choose%Var%). Mit GuiControl können die Auswahlmöglichkeiten geändert werden, oder Listenelemente hinzugefügt/entfernt werden, nachdem das Steuerelement erstellt wurde.

Fügen Sie das Wort Uppercase oder Lowercase in den Optionen ein, um alle Elemente in der Liste automatisch in Groß- oder Kleinbuchstaben umzuwandeln. Fügen Sie das Wort Sort ein, um die Inhalte der Liste automatisch in alphabetischer Reihenfolge zu sortieren (das hat auch Einfluss auf Elemente, die nachträglich via GuiControl hinzugefügt werden). Die Sort-Option aktiviert zudem immer eine inkrementelle Suche beim Aufklappen der Liste. Auf diese Weise kann ein Element ausgewählt werden, während die ersten Zeichen des Namens eingegeben werden.

Wenn man den Befehl Gui Submit verwendet, wird in die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) der Text des aktuell ausgewählten Elements gespeichert. Hat das Steuerelement allerdings die AltSubmit-Eigenschaft, wird die Ausgabevariable stattdessen die Positionsnummer des Elements enthalten (das erste Element ist 1, das zweite 2 und so weiter).

Ein g-Label wie gMeineSubroutine kann in den Optionen des Steuerelements eingefügt werden. Diese Option lässt das Label MeineSubroutine immer dann starten, wenn der Benutzer ein neues Element auswählt.

Verwenden Sie die R- oder H-Option, um die Höhe der Aufklappliste zu bestimmen. Zum Beispiel würde R5 die Liste 5 Zeilen hoch machen, während H400 die Gesamthöhe des Auswahlfeldes und der Liste auf 400 Pixel setzen würde. Sind R und H nicht vorhanden, erweitert sich die Liste automatisch, um die verfügbare Desktophöhe des Benutzers sinvoll zu nutzen (allerdings werden Betriebssysteme älter als Windows XP standardmäßig 3 Zeilen anzeigen).

Das folgende Beispiel zeigt, wie die CB_SETITEMHEIGHT-Meldung genutzt werden kann, um die Höhe des Auswahlfeldes oder die Höhe der Listeneinträge zu ändern:

Gui Add, DDL, vcbx w200 hwndhcbx, Eins||Zwei
; CB_SETITEMHEIGHT = 0x153
PostMessage, 0x153, -1, 50,, ahk_id %hcbx%  ; Setzt die Höhe des Auswahlfeldes.
PostMessage, 0x153,  0, 50,, ahk_id %hcbx%  ; Setzt die Höhe der Listeneinträge.
Gui Show, h70, Test

Das Trennzeichen zwischen den Feldern muss nicht zwingend ein senkrechter Strich sein. Zum Beispiel kann das Trennzeichen per Gui +Delimiter`n mit einem Zeilenumbruchszeichen und per Gui +DelimiterTab mit einem Tabulatorzeichen (`t) ersetzt werden.

ComboBox

Beschreibung: Ein Kombinationsfeld, ähnlich wie die Dropdownliste, aber mit dem Unterschied, dass alternativ auch Text eingegeben werden kann. Beispiel:

Gui, Add, ComboBox, vFarbauswahl, Rot|Grün|Blau|Schwarz|Weiß

Neben den bereits oben genannten Optionen kann auch das Wort Limit in Optionen angegeben werden, um die Benutzereingabe auf die sichtbare Breite des Eingabefeldes von der ComboBox zu beschränken. Zudem kann das Wort Simple eingefügt werden, um die ComboBox dazu zu bringen, sich so zu verhalten, als wäre es ein Eingabefeld mit einer ListBox darunter.

Wenn man den Befehl Gui Submit verwendet, wird in die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) der Text des aktuell ausgewählten Elements gespeichert. Hat das Steuerelement allerdings die AltSubmit-Eigenschaft, wird die Ausgabevariable stattdessen die Positionsnummer des Elements enthalten (das erste Element ist 1, das zweite 2 und so weiter). In beiden Fällen wird, wenn kein Element ausgewählt ist, die Ausgabevariable auf den Inhalt des Eingabefeldes von der ComboBox gesetzt.

Ein g-Label wie gMeineSubroutine kann in den Optionen des Steuerelements eingefügt werden. Diese Option lässt das Label MeineSubroutine immer dann starten, wenn der Benutzer ein neues Element auswählt.

ListBox

Beschreibung: Ein relativ hohes Listenfeld, das eine Liste mit Auswahlmöglichkeiten enthält, die markiert werden können. Hierbei ist der letzte Parameter eine mit senkrechten Strichen getrennte Liste wie z. B. Auswahl1|Auswahl2|Auswahl3. Beispiel:

Gui, Add, ListBox, vFarbwahl, Rot|Grün|Blau|Schwarz|Weiß

Damit ein oder mehrere Elemente zu Beginn vorab ausgewählt sind, müssen nach jedem Element zwei senkrechte Striche erfolgen (bei mehreren Elementen ist die Multi-Option notwendig). Alternativ kann man auch das Wort Choose in den Optionen angeben und direkt danach die Nummer eines einzelnen Elements einfügen, das vorab ausgewählt sein soll. Zum Beispiel würde Choose5 das fünfte Element vorab auswählen. Mit GuiControl können die Auswahlmöglichkeiten geändert werden, oder Listenelemente hinzugefügt/entfernt werden, nachdem das Steuerelement erstellt wurde.

Wenn man den Befehl Gui Submit verwendet, wird in die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) der Text des aktuell ausgewählten Elements gespeichert. Hat das Steuerelement allerdings die AltSubmit-Eigenschaft, wird die Ausgabevariable stattdessen die Positionsnummer des Elements enthalten (das erste Element ist 1, das zweite 2 und so weiter).

Ein g-Label wie gMeineSubroutine kann in den Optionen des Steuerelements eingefügt werden. Diese Option lässt das Label MeineSubroutine immer dann starten, wenn der Benutzer ein neues Element auswählt. Klickt der Benutzer ein Element zweimal an, wird die interne Variable A_GuiEvent die Zeichenkette DoubleClick statt Normal enthalten. Außerdem wird die Variable A_EventInfo die Positionsnummer des Elements enthalten, das zweimal angeklickt worden ist (1 ist das erste Element, 2 das zweite und so weiter).

Man kann die Performance beim Einfügen sehr vieler Elemente verbessern, wenn man vor der Operation GuiControl, -Redraw, MeineListBox verwendet, und danach GuiControl, +Redraw, MeineListBox.

ListBox-Optionen

Choose: Siehe oben.

Multi: Aktiviert die mehrfache Auswahl via UMSCHALT oder STRG modifizierten Klick (um mehrere Elemente ohne diesen Modifikatoren auszuwählen, gibt man die Nummer 8 anstelle von Multi an). In diesem Fall wird Gui Submit eine mit senkrechten Strichen getrennte Zeichenketteliste von allen markierten Elementen in die Ausgabevariable des Steuerelements speichern. Wenn jedoch die Option AltSubmit vorhanden ist, wird Gui Submit stattdessen eine mit senkrechten Strichen getrennte Nummer-Liste von allen markierten Elementen speichern. Zum Beispiel würde 1|2|3 kennzeichnen, dass die ersten drei Einträge ausgewählt sind. Das folgende Beispiel zeigt, wie man eine Parsende Schleife nutzen kann, um einzelne Elemente aus der Zeichenkette zu extrahieren:

Loop, Parse, MeineListBox, |
{
    MsgBox Auswahlnummer %A_Index% ist %A_LoopField%.
}

Das Trennzeichen zwischen den Feldern muss nicht zwingend ein senkrechter Strich sein. Zum Beispiel kann das Trennzeichen per Gui +Delimiter`n mit einem Zeilenumbruchszeichen und per Gui +DelimiterTab mit einem Tabulatorzeichen (`t) ersetzt werden.

ReadOnly: Hindert die Elemente daran, beim Auswählen farblich hervorgehoben zu werden (aber Gui Submit wird weiterhin das ausgewählte Element speichern).

Sort: Sortiert den Inhalt der Liste automatisch in alphabetischer Reihenfolge (das hat auch Einfluss auf Elemente, die danach per GuiControl hinzugefügt werden). Die Sort-Option aktiviert zudem immer eine inkrementelle Suche beim Aufklappen der Liste. Das heißt, dass ein Element ausgewählt wird, sobald die ersten Zeichen des Namens eingegeben werden.

Tn: Mit dem Buchstaben T können Tabstopps gesetzt werden, um den Text in Spalten aufzuteilen. Ist der Buchstabe T nicht vorhanden, erfolgen die Tabstopps bei je 32 Dialogeinheiten (DLU) (die Breite jeder Dialogeinheit ist vom Betriebssystem abhängig). Ist der Buchstabe T nur einmal vorhanden, werden die Tabstopps auf je n Einheiten über die gesamte Breite des Steuerelements verteilt. Zum Beispiel würde Gui, Add, ListBox, vMeineListBox t64 den Standardabstand zwischen den Tabstopps verdoppeln. Um eigene Tabstopps zu definieren, gibt man mehrmals den Buchstaben T an. Zum Beispiel: Gui, Add, ListBox, vMeineListBox t8 t16 t32 t64 t128. Ein Tabstopp gilt jeweils für eine absolute Spaltenposition in der Liste, bis zu einem Maximum von 50 Tabstopps.

0x100: Fügen Sie 0x100 in Optionen ein, um den Style LBS_NOINTEGRALHEIGHT zu aktivieren. Das zwingt die ListBox dazu, die angegebene Höhe zu verwenden. Ist diese Option nicht vorhanden, wird die Höhe automatisch an die letzte Zeile angepasst, wenn sie nur teilweise sichtbar ist. Zudem verhindert diese Option, dass die ListBox beim Ändern der Schrift kleiner wird.

Um die Anzahl der Textzeilen (oder die Höhe und Breite) zu bestimmen, siehe Position und Größe von Steuerelementen anpassen.

ListView und TreeView

Siehe separate Seiten für ListView und TreeView.

Beschreibung: Ein Text-Steuerelement, das anklickbare Links enthalten kann. Link-Steuerelemente verwenden die HTML-Sprache (Hypertext Markup Language), von der nur das A-Tag unterstützt wird. Innerhalb des Start-Tags kann ein Attribut in Form von href="Wert" oder id="Wert" angegeben werden. Zum Beispiel:

Gui, Add, Link,, Das ist ein <a href="https://autohotkey.com">Link</a>
Gui, Add, Link,, Links können überall im Text angegeben werden, wie beispielsweise <a id="A">hier</a> oder <a id="B">dort</a>

Wenn das HREF-Attribut angegeben ist und einen gültigen Wert in Form eines ausführbaren Befehls oder einer URL enthält, wird dieser Wert wie bei einem Run-Befehl ausgeführt. Allerdings kann ein ausführbarer Befehl keine doppelten Anführungszeichen enthalten. Eine URL kann in der Regel prozentkodierte Zeichen wie `%22 enthalten, aber diese werden vom Webbrowser des Benutzers interpretiert, nicht vom Link-Steuerelement.

Hat das Steuerelement ein g-Label wie z. B. gMeineSubroutine, wird das Label gestartet, wann immer ein Link ohne HREF-Attribut angeklickt wird oder wenn der Befehl oder die URL nicht ausgeführt werden kann. Die Subroutine kann auf folgende Variablen zurückgreifen:

Wenn das g-Label eine Funktion ist, kann es die folgenden Parameter akzeptieren:

MeineFunktion(StrlmntHwnd, GuiEreignis, LinkIndex, HrefOderID)

Hotkey

Beschreibung: Ein Feld, das zwar wie ein einzeiliges Edit-Steuerelement aussieht, aber stattdessen eine Tastenkombination akzeptiert, die der Benutzer gedrückt hat. Drückt der Benutzer beispielsweise Strg+Alt+C auf einer deutschen Tastatur, würde das Feld "STRG + ALT + C" anzeigen. Beispiel:

Gui, Add, Hotkey, vGewählterHotkey

Wenn man den Befehl Gui Submit verwendet, wird in die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) die Modifikatoren und der Name des Hotkeys gespeichert, die kompatibel mit dem Hotkey-Befehl sind. Beispiele: ^!C, +!Home, +^Down, ^Numpad1, !NumpadEnd. Wenn kein Hotkey im Steuerelement vorhanden ist, wird die Ausgabevariable leer gemacht.

Hinweis: Einige Tasten zeigen dasselbe an, obwohl sie als unterschiedliche Namen abgerufen werden. Zum Beispiel wird sowohl ^Numpad7 als auch ^NumpadHome als "STRG + 7 (ZEHNERTASTATUR)" angezeigt.

Standardmäßig ist das Steuerelement zu Beginn leer. Damit das Steuerelement zu Beginn einen Hotkey enthält, fügt man im letzten Parameter seine Modifikatoren und seinen Name ein. Zum Beispiel: Gui, Add, Hotkey, vGewählterHotkey, ^!p.
Es werden nur die Modifikatortasten ^ (STRG), ! (ALT) und + (UMSCHALT) unterstützt. Siehe Tastenliste für weitere Tasten.

Ein g-Label wie gMeineSubroutine kann in den Optionen des Steuerelements eingefügt werden. Diese Option lässt das Label MeineSubroutine immer dann starten, wenn der Benutzer den Hotkey ändert. Bei jedem Start des g-Labels wird zudem der Hotkey in die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) gespeichert.

Hinweis: Das g-Label startet auch dann, wenn ein unvollständiger Hotkey vorhanden ist. Wenn der Benutzer beispielsweise die Strg-Taste gedrückt hält, wird das g-Label gestartet und ein Zirkumflex (^) in die Ausgabevariable gespeichert. Beendet der Benutzer dann die Tastenkombination, wird das g-Label nochmals gestartet und der vollständige Hotkey in die Variable gespeichert.

Um die Benutzereingabe auf bestimmte Hotkeys zu beschränken, fügt man das Wort Limit ein, gefolgt von einer Zahl, die die Summe folgender Zahlen ist:

1: Ignoriert Tasten ohne Modifikatoren
2: Ignoriert nur via Umschalt modifizierte Tasten
4: Ignoriert nur via Strg modifizierte Tasten
8: Ignoriert nur via Alt modifizierte Tasten
16: Ignoriert via Umschalt+Strg modifizierte Tasten
32: Ignoriert via Umschalt+Alt modifizierte Tasten
64: Dieser Wert wird nicht unterstützt (verhält sich falsch)
128: Ignoriert via Umschalt+Strg+Alt modifizierte Tasten

Zum Beispiel würde Limit1 verhindern, dass Hotkeys ohne Modifikatoren wie Buchstaben und Zahlen eingegeben werden können, und Limit15 würde mindestens zwei Modifikatortasten benötigen. Gibt der Benutzer eine verbotene Modifikator-Kombination ein, wird die Strg+Alt-Kombination automatisch und sichtbar ersetzt.

Das Hotkey-Steuerelement hat nur begrenzte Möglichkeiten. Zum Beispiel unterstützt es keine Maus/Joystick-Hotkeys oder Win-Tasten (LWin und RWin). Dieses Problem kann beispielsweise umgangen werden, wenn dem Benutzer eine oder mehrere CheckBoxen bereitgestellt werden, die zusätzliche Modifikatoren wie die Win-Taste als Auswahlmöglichkeit anbieten.

DateTime

Beschreibung: Ein Feld, das zwar wie ein einzeiliges Edit-Steuerelement aussieht, aber stattdessen nur die Eingabe von Datum und/oder Zeit akzeptiert. Ein ausklappbarer Kalender ist ebenfalls vorhanden. Beispiel:

Gui, Add, DateTime, vMeinDateTime, LongDate

Der letzte Parameter kann eine der folgenden Optionen enthalten:

(nicht vorhanden): Fehlt dieser Parameter, wird das kurze Datumsformat verwendet, abhängig vom aktuellen Gebietsschema des Benutzers. Bei einigen Gebietsschemen könnte das wie folgt aussehen: 17.04.2011.

LongDate: Verwendet das lange Datumsformat, abhängig vom aktuellen Gebietsschema des Benutzers. Bei einigen Gebietsschemen könnte das wie folgt aussehen: Sonntag, 17. April 2011.

Time: Zeigt nur die Zeit an, abhängig vom aktuellen Gebietsschema des Benutzers. Obwohl das Datum nicht angezeigt wird, ist es dennoch im Steuerelement vorhanden und wird zusammen mit der Zeit im YYYYMMDDHH24MISS-Format abgerufen.

(benutzerdefiniertes Format): Geben Sie eine beliebige Kombination von Datum- und Zeitformaten an. Zum Beispiel würde d.M.yy HH:mm wie 17.4.11 12:19 aussehen. Ebenso würde dddd MMMM d, yyyy hh:mm:ss wie Sonntag April 17, 2011 12:22:1 aussehen. Buchstaben und Zahlen, die direkt geschrieben sein sollen, müssen wie folgt in Hochkommas gesetzt werden: 'Datum:' dd.MM.yy 'Zeit:' hh:mm:ss tt. Zeichen, die nicht alphanumerisch sind, wie Leerzeichen, Tabulatoren, Schrägstriche, Doppelpunkte, Kommas und andere Satzzeichen, müssen hingegen nicht von Hochkommas umschlossen werden. Die Ausnahme ist das Hochkomma selbst: Um dieses Zeichen direkt zu schreiben, nutzt man vier aufeinanderfolgende Hochkommas (''''). Wenn das Hochkomma bereits von einem Hochkomma-Paar umschlossen ist, sind nur zwei aufeinanderfolgende Hochkommas ('') notwendig.

DateTime-Verwendung

Damit ein anderes Datum als das Heutige vorab ausgewählt ist, gibt man in den Optionen das Wort Choose an und fügt direkt danach ein Datum im YYYYMMDD-Format ein. Zum Beispiel würde Choose20110417 den 17. April 2011 vorab auswählen (wie bei den anderen Optionen auch, kann das eine Variable sein, wie z. B. Choose%Var%). Um kein Datum auszuwählen, verwendet man ChooseNone. Zudem erstellt ChooseNone eine CheckBox innerhalb des Steuerelements, die immer dann nicht markiert ist, wenn das Steuerelement kein Datum hat. Immer wenn das Steuerelement kein Datum hat, wird Gui Submit und GuiControlGet eine leere Zeichenkette abrufen.

Die Tageszeit kann optional auch vorhanden sein. Allerdings muss sich davor immer ein Datum befinden, wenn es im Steuerelement gesetzt oder abgerufen wird. Das Format des Zeitbereichs ist HH24MISS (Stunden, Minuten, Sekunden), bei dem HH24 im 24-Stunden-Format angegeben wird. Somit würde eine vollständige Datum-Zeit-Zeichenkette das Format YYYYMMDDHH24MISS aufweisen.

Bei Datumsangaben im YYYYMMDDHH24MISS-Format muss nur der führende Teil vorhanden sein. Alle übrigen Elemente, die ausgelassen worden sind, werden mit folgenden Standardwerten ersetzt:
MM: Monat 01
DD: Tag 01
HH24: Stunde 00
MI: Minute 00
SS: Sekunde 00

Innerhalb des ausklappbaren Kalenders kann man den Heute-Text am unteren Ende anklicken, um das heutige Datum auswählen zu können. Darüber hinaus ist das Jahr und der Monatsname anklickbar, das eine einfache Navigation zwischen den Monaten oder Jahren ermöglicht.

Navigation mit der Tastatur: Mit den Pfeiltasten /, den Ziffernblocktasten +/- und Pos1/Ende können die Werte im Steuerelement erhöht oder verringert werden. Verwenden Sie und , um von Feld zu Feld zu schalten. Innerhalb des ausklappbaren Kalenders können die Pfeiltasten verwendet werden, um von Tag zu Tag zu navigieren; Bild↑/Bild↓, um ein Monat vor-/zurückzuschalten; Strg+Bild↑/Bild↓, um ein Jahr vor-/zurückzuschalten; und Pos1/Ende, um den ersten/letzten Tag des Monats auszuwählen.

Wenn man den Befehl Gui Submit verwendet, wird in die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) der ausgewählte Datum-Zeit-Wert im YYYYMMDDHH24MISS-Format gespeichert. Sowohl das Datum als auch die Zeit sind vorhanden, egal ob sie tatsächlich im Steuerelement sichtbar sind oder nicht.

Hat das Steuerelement ein g-Label, wird das Label gestartet, wann immer der Benutzer das Datum oder die Zeit ändert. Bei jedem Start wird die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) auf den aktuell ausgewählten Datum-Zeit-Wert aktualisiert.

DateTime-Optionen

Choose: Siehe oben.

Range: Beschränkt die Datumsauswahl auf einem bestimmten Zeitraum. Nach dem Wort Range kann das minimale und maximale Datum im YYYYMMDD-Format angegeben werden (mit einem Bindestrich dazwischen). Zum Beispiel würde Range20050101-20050615 das Datum auf die ersten 5,5 Monaten des Jahres 2005 beschränken. Man kann entweder den Minimal- oder Maximalwert weglassen, um das Steuerelement uneingeschränkt in dieser Richtung navigieren zu können. Zum Beispiel würde Range20010101 verhindern, dass ein Tag vor 2001 ausgewählt werden kann, und Range-20091231 (Bindestrich davor) würde verhindern, dass ein Tag nach 2009 ausgewählt werden kann. Ist diese Option nicht vorhanden, kann jedes Datum zwischen den Jahren 1601 und 9999 ausgewählt werden. Die Tageszeit ist nicht einschränkbar.

Right: Bewirkt, dass der Kalender auf der rechten statt auf der linken Seite des Steuerelements aufgeklappt wird.

1: Fügen Sie eine 1 in den Optionen ein, um den rechts befindlichen Button des aufklappbaren Monatskalenders durch einen UpDown-Steuerelement zu ersetzen, mit dem Datum-Zeit-Werte geändert werden können. Funktioniert nicht in Verbindung mit LongDate.

2: Fügen Sie eine 2 in den Optionen ein, um das Steuerelement mit einer CheckBox auszustatten, die der Benutzer verwenden kann, um mitzuteilen, dass kein Datum/Zeit ausgewählt ist. Diese Option kann nach Erstellen des Steuerelements nicht mehr geändert werden.

MonthCal

Beschreibung: Ein hohes und breites Steuerelement, das alle Tage des Monats im Kalenderformat anzeigt. Der Benutzer kann ein einzelnes Datum oder einen Datumsbereich auswählen. Beispiel:

Gui, Add, MonthCal, vMeinKalender

Damit ein anderes Datum als das Heutige vorab ausgewählt ist, fügt man im letzten Parameter ein Datum im YYYYMMDD-Format ein (z. B. 20050531). Fügt man ein Bindestrich zwischen zwei Datumswerten ein, kann auch ein Datumsbereich vorab ausgewählt werden (z. B. 20050525-20050531).

Es ist normalerweise am besten, bei MonthCal die Breite (W) und Höhe (H) wegzulassen, weil es seine Größe automatisch ändert, sodass genau ein Monat reinpasst. Um mehr als einen Monat vertikal darzustellen, fügt man R2 oder höher in den Optionen ein. Um mehr als einen Monat horizontal darzustellen, fügt man W-2 (W minus 2) oder höher ein. Diese Optionen können gleichzeitig vorhanden sein, um das Steuerelement in beide Richtungen zu erweitern.

Am unteren Ende des Steuerelements kann der Heute-Text angeklickt werden, um das heutige Datum auswählen zu können. Darüber hinaus ist das Jahr und der Monatsname anklickbar, das eine einfache Navigation zwischen den Monaten oder Jahren ermöglicht.

Im Gegensatz zum ausklappbaren Kalender von DateTime wird die Tastaturnavigation in MonthCal generell nicht unterstützt.

Wenn man den Befehl Gui Submit verwendet, wird in die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) der ausgewählte Datumswert im YYYYMMDD-Format (ohne Zeitbereich) gespeichert. Ist dagegen die Mehrfachauswahl-Option vorhanden, wird das minimale und maximale Datum mit einem Bindestrich dazwischen abgerufen (z. B. 20050101-20050108). Wenn in einem Mehrfachauswahl-Kalender nur ein einziges Datum ausgewählt wird, sind beide Grenzwerte noch vorhanden, aber identisch. Mit StringSplit können die Datumswerte auseinander genommen werden. Zum Beispiel würde der folgende Befehl das minimale Datum in Datum1 und das maximale Datum in Datum2 speichern: StringSplit, Datum, MeinMonthCal, -.

Wenn MonthCal einen g-Label hat, wird jedes Mal, wenn es gestartet wird, die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) auf das aktuell ausgewählte Datum oder Bereich aktualisiert. Standardmäßig wird das Label nur gestartet, wenn: 1) der Benutzer die Auswahl ändert; oder 2) nur alle zwei Minuten, falls ein neuer Tag gekommen ist (dieses Verhalten ist eine Macke des Betriebssystems). Ist dagegen das Wort AltSubmit in den Optionen des Steuerelements vorhanden, wird das g-Label häufiger gestartet und die interne Variable A_GuiEvent das Wort Normal enthalten, wenn das Datum geändert wurde; die Nummer 1, wenn ein Datum angeklickt wurde; oder die Nummer 2, wenn MonthCal die "Mauserfassung" freigibt. Klickt der Benutzer beispielsweise ein neues Datum zweimal an, würde das Label fünfmal gestartet werden: Einmal mit Normal, zweimal mit 1 und zweimal mit 2. Das kann verwendet werden, um die Doppelklicks zwischen den Instanzen von Nummer 1 durch Messen der Zeit zu erkennen.

Werden die Datumwerte im YYYYMMDD-Format angegeben, können die Bereiche MM und/oder DD weggelassen werden - in diesem Fall werden sie als 1 angesehen. Zum Beispiel wäre 200205 dann 20020501, und 2005 dann 20050101.

MonthCal-Optionen

Multi: Mehrfachauswahl. Ermöglicht dem Benutzer, mit UMSCHALT+KLICK oder durch Ziehen des Mauszeigers angrenzende Datumswerte zu markieren (der Benutzer kann weiterhin ein einzelnes Datum auswählen). Diese Option kann entweder explizit angegeben werden oder wird automatisch wirksam, wenn ein Auswahlbereich beim Erstellen des Steuerelements angegeben wird. Zum Beispiel: Gui, Add, MonthCal, vMeinKalender, 20050101-20050108. Diese Option kann nach Erstellen des Steuerelements nicht mehr geändert werden.

Range: Beschränkt die Datumsauswahl auf einem bestimmten Zeitraum. Nach dem Wort Range kann das minimale und maximale Datum im YYYYMMDD-Format angegeben werden (mit einem Bindestrich dazwischen). Zum Beispiel würde Range20050101-20050615 die Auswahl auf die ersten 5,5 Monaten des Jahres 2005 beschränken. Man kann entweder den Minimal- oder Maximalwert weglassen, um das Steuerelement uneingeschränkt in dieser Richtung navigieren zu können. Zum Beispiel würde Range20010101 verhindern, dass ein Tag vor 2001 ausgewählt werden kann, und Range-20091231 (Bindestrich davor) würde verhindern, dass ein Tag nach 2009 ausgewählt werden kann. Ist diese Option nicht vorhanden, kann jedes Datum zwischen den Jahren 1601 und 9999 ausgewählt werden.

4: Fügen Sie eine 4 in den Optionen ein, um die Wochennummern (1-52) auf der linken Seite jeder Tagesreihe anzuzeigen. Woche 1 ist als erste Woche definiert, die mindestens vier Tage enthält.

8: Fügen Sie eine 8 in den Optionen ein, um das Einkreisen des heutigen Datums im Steuerelement zu verhindern.

16: Fügen Sie eine 16 in den Optionen ein, um das Anzeigen des heutigen Datums im unteren Bereich des Steuerelements zu verhindern.

Slider

Beschreibung: Ein Schieberegler, den der Benutzer entlang einer vertikalen oder horizontalen Linie schieben kann. Zum Beispiel ist die Standard-Lautstärkeregelung in der Taskleiste ein Schieberegler. Beispiel:

Gui, Add, Slider, vMeinSlider, 50

Fügen Sie im letzten Parameter die Startposition für den Schieberegler ein. Ist der letzte Parameter nicht vorhanden, beginnt der Slider bei 0 oder bei der Bereichszahl, die am nächsten an der 0 ist.

Der Benutzer kann den Regler wie folgt verschieben: 1) Mit dem Mauszeiger ziehen; 2) Auf den Linienbereich klicken; 3) Das Mausrad drehen, während das Steuerelement den Fokus hat; 4) Folgende Tasten drücken, während das Steuerelement den Fokus hat: , , , , Bild↑, Bild↓, Pos1 und Ende.

Wenn man den Befehl Gui Submit verwendet, wird in die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) die numerische Position des Sliders gespeichert. Die Position wird auch in die Ausgabevariable gespeichert, wenn das g-Label des Steuerelements gestartet wird.

Hat der Slider ein g-Label, wird es standardmäßig nur gestartet, wenn der Benutzer aufhört, den Regler zu bewegen (z. B. durch Loslassen der Maustaste nach dem Ziehen). Wenn dagegen das Wort AltSubmit in den Optionen des Steuerelements vorhanden ist, wird das g-Label bei jedem Slider-Ereignis gestartet und die interne Variable A_GuiEvent eine der folgenden Zahlen oder Zeichenketten enthalten:

0: Der Benutzer hat oder gedrückt.
1: Der Benutzer hat oder gedrückt.
2: Der Benutzer hat Bild↑ gedrückt.
3: Der Benutzer hat Bild↓ gedrückt.
4: Der Benutzer hat den Slider mit dem Mausrad oder durch Ziehen und Ablegen verschoben.
5: Der Benutzer zieht den Slider momentan mit dem Mauszeiger. Das heißt, dass die Maustaste zurzeit gedrückt wird.
6: Der Benutzer hat die Pos1-Taste gedrückt, um den Slider ganz nach links oder nach oben zu verschieben.
7: Der Benutzer hat die Ende-Taste gedrückt, um den Slider ganz nach rechts oder nach unten zu verschieben.
Normal: Der Benutzer hat aufgehört, den Slider mit der Maus oder Tastatur zu verschieben.

Hinweis: Mit Ausnahme der Mausradbewegung (#4), wird das g-Label nochmals bei diesem Ereignis gestartet, auch wenn es bereits bei einem der oben genannten Zahlenereignissen gestartet worden ist.

Slider-Optionen

Buddy1 und Buddy2: Bestimmt bis zu zwei vorhandene Steuerelemente, die automatisch an beiden Enden des Sliders positioniert werden sollen. Buddy1 wird auf der linken oder oberen Seite angezeigt (abhängig davon, ob die Option Vertical vorhanden ist). Buddy2 wird auf der rechten oder unteren Seite angezeigt. Nach dem Wort Buddy1 oder Buddy2 kann der Variablenname eines vorhandenen Steuerelements angegeben werden. Buddy1MeinObertext würde beispielsweise das Steuerelement mit dem Variablennamen MeinObertext zuweisen.

Center: Der Einstellknopf (die Leiste, die vom Benutzer verschoben werden kann) ist an beiden Enden stumpf, anstatt an einem Ende spitz zu sein.

Invert: Kehrt das Steuerelement um, sodass sich der niedrigere Wert rechts/unten befindet, anstatt links/oben. Das wird typischerweise dazu verwendet, einen vertikalen Slider in einen traditionellen Lautstärkeregler umzuwandeln. Hinweis: Die unten beschriebene ToolTip-Option berücksichtigt nicht die Umkehrung und sollte in diesem Fall daher nicht verwendet werden.

Left: Der Einstellknopf (die Leiste, die vom Benutzer verschoben werden kann) zeigt nach oben, anstatt nach unten. Wenn dagegen die Vertical-Option vorhanden ist, zeigt der Einstellknopf nach links, anstatt nach rechts.

Line: Bestimmt die Anzahl an Positionen, die verschoben werden sollen, wenn der Benutzer eine der Pfeiltasten drückt. Nach dem Wort Line erfolgt die Anzahl der zu verschiebenden Positionen. Zum Beispiel: Line2.

NoTicks: Entfernt die Skalenstriche entlang der Linie.

Page: Bestimmt die Anzahl an Positionen, die verschoben werden sollen, wenn der Benutzer Bild↑ oder Bild↓ drückt. Nach dem Wort Page erfolgt die Anzahl der zu verschiebenden Positionen. Zum Beispiel: Page10.

Range: Bestimmt einen Bereich, der vom Standardbereich 0 bis 100 abweichen soll. Nach dem Wort Range erfolgt der Minimalwert, ein Bindestrich und der Maximalwert. Zum Beispiel würde Range1-1000 eine auswählbare Zahl zwischen 1 und 1000 ermöglichen; Range-50-50 eine Zahl zwischen -50 und 50; und Range-10--5 eine Zahl zwischen -10 und -5.

Thick: Bestimmt die Länge des Einstellknopfs (die Leiste, die vom Benutzer verschoben werden kann). Nach dem Wort Thick erfolgt die Dicke in Pixel (z. B. Thick30). Um in Windows XP oder höher eine bestimmte Dicke zu überschreiten, ist es wahrscheinlich notwendig, entweder die Center-Option anzugeben oder das Design des Steuerelements zu entfernen (dazu muss -Theme in den Optionen des Steuerelements angegeben werden).

TickInterval: Zeigt Skalenstriche entlang der Linie in einem bestimmten Intervall an. Nach dem Wort TickInterval kann man angeben, in welchem Intervall zusätzliche Skalenstriche angezeigt werden sollen (lässt man das weg, gilt standardmäßig 1). Zum Beispiel würde TickInterval10 einen Skalenstrich an je 10 Positionen anzeigen.

ToolTip: Erstellt ein Tooltip, das die numerische Position des Sliders anzeigen soll, während er vom Benutzer verschoben wird. Um das Tooltip stattdessen auf eine nicht-standardmäßige Position anzuzeigen, fügt man Folgendes ein: ToolTipLeft oder ToolTipRight (bei vertikale Slider); ToolTipTop oder ToolTipBottom (bei horizontale Slider).

Vertical: Bewirkt, dass der Slider nach oben und unten verschoben werden kann, anstatt nach links und rechts.

Die oben genannten Optionen können per GuiControl geändert werden, nachdem das Steuerelement erstellt worden ist.

Progress

Beschreibung: Ein zweifarbiger Fortschrittsbalken, der visuell darstellt, wie weit eine Operation fortgeschritten ist. Beispiel:

Gui, Add, Progress, w300 h20 cBlue vMeinProgress

Fügen Sie im letzten Parameter die Startposition für den Balken ein (fehlt oder ist dieser Parameter leer, gilt standardmäßig 0 oder der niedrigste zulässige Bereichswert). Das folgende Beispiel zeigt, wie die Position eines Balkens geändert werden kann, dessen zugeordnete Variablenname MeinProgress ist:

GuiControl,, MeinProgress, +20  ; Erhöht die aktuelle Position um 20.
GuiControl,, MeinProgress, 50  ; Setzt die aktuelle Position auf 50.

Bei horizontalen ProgressBars wird die Dicke des Balkens durch die Höhe des Steuerelements bestimmt. Bei vertikalen ProgressBars durch die Breite des Steuerelements.

Progress-Optionen

Cn: Ändert die Farbe des Balkens. Geben Sie für n einen der 16 primären HTML-Farbnamen oder einen 6-stelligen RGB-Farbwert an. Beispiele: cRed, cFFFF33, cDefault. Wenn die C-Option nie verwendet wird (oder cDefault angegeben ist), gilt die Standardfarbe des Betriebssystems.

BackgroundN: Ändert die Hintergrundfarbe des Balkens. Geben Sie für n einen der 16 primären HTML-Farbnamen oder einen 6-stelligen RGB-Farbwert an. Beispiele: BackgroundGreen, BackgroundFFFF33, BackgroundDefault. Wenn die C-Option nie verwendet wird (oder BackgroundDefault angegeben ist), gilt die Hintergrundfarbe des Fensters oder Tab-Steuerelements, das sich dahinter befindet.

Range: Bestimmt einen Bereich, der vom Standardbereich 0 bis 100 abweichen soll. Nach dem Wort Range erfolgt der Minimalwert, ein Bindestrich und der Maximalwert. Zum Beispiel würde Range1-1000 eine Zahl zwischen 1 und 1000 ermöglichen; Range-50-50 eine Zahl zwischen -50 und 50; und Range-10--5 eine Zahl zwischen -10 und -5.

-Smooth: Zeigt einen Balken in mehreren Segmenten an, statt durchgehend. Die Angabe von -Smooth ist eine der Voraussetzungen, um eine ProgressBar in Windows XP oder höher thematisch darstellen zu können. Die andere Voraussetzung ist, dass der Balken keine benutzerdefinierten Farben haben darf; das heißt, dass die C- und Background-Option weggelassen werden müssen.

Vertical: Bewirkt, dass der Balken auf vertikaler Ebene steigt oder fällt, statt auf horizontaler Ebene.

Die oben genannten Optionen können per GuiControl geändert werden, nachdem das Steuerelement erstellt worden ist.

GroupBox

Beschreibung: Ein rechteckiger Rahmen, der oft dazu verwendet wird, andere Steuerelemente zu umrahmen, um zu zeigen, dass sie zusammengehören. In diesem Fall ist der letzte Parameter der Titel des Rahmens, der in der oberen linken Ecke angezeigt wird, falls vorhanden. Beispiel:

Gui, Add, GroupBox, w400 h300, Geographische Kriterien

Standardmäßig kann der Titel einer GroupBox nur einzeilig sein. Das kann durch die Angabe von Wrap in den Optionen des Steuerelements überschrieben werden.

Um die Anzahl der Zeilen innerhalb des Steuerelements zu bestimmen (oder dessen Höhe und Breite), siehe Position und Größe von Steuerelementen anpassen.

Tab3

Beschreibung: Ein großes Steuerelement mit mehreren Seiten, die jeweils weitere Steuerelemente enthalten können. Von nun an werden diese Seiten "Tabs" genannt.

Es gibt drei Arten des Tab-Steuerelements:

Beispiel:

Gui, Add, Tab3,, Allgemein|Ansicht|Darstellung|Einstellungen

Im oberen Beispiel enthält der letzte Parameter eine mit senkrechten Strichen getrennte Liste von Tabnamen. Damit einer der Tabs zu Beginn vorab ausgewählt ist, müssen zwei senkrechte Striche nach diesem Tab erfolgen (z. B. Rot|Grün||Blau). Alternativ kann man auch das Wort Choose in den Optionen angeben und direkt danach die Nummer des Elements einfügen, das vorab ausgewählt sein soll. Zum Beispiel würde Choose5 den fünften Tab vorab auswählen (wie bei den anderen Optionen auch, kann das eine Variable sein, wie z. B. Choose%Var%). Mit GuiControl kann der ausgewählte Tab geändert, Tabs hinzugefügt oder Tabs entfernt werden, nachdem das Steuerelement erstellt worden ist.

Nach dem Erstellen eines Tab-Steuerelements gehören Steuerelemente, die danach erfolgen, automatisch dem ersten Tab. Das kann jederzeit wie folgt geändert werden:

Gui, Tab  ; Zukünftige Steuerelemente sind nicht Teil des Tab-Steuerelements.
Gui, Tab, 3  ; Zukünftige Steuerelemente gehören dem dritten Tab im Tab-Steuerelement.
Gui, Tab, 3, 2  ; Zukünftige Steuerelemente gehören dem dritten Tab im zweiten Tab-Steuerelement.
Gui, Tab, Name  ; Zukünftige Steuerelemente gehören dem Tab, dessen Name mit Name beginnt (keine Groß/Klein-Unterscheidung).
Gui, Tab, Name,, Exact  ; Das gleiche wie oben, aber mit exakter Übereinstimmung (mit Groß/Klein-Unterscheidung).

Es ist auch möglich, irgendeins der obigen Beispiele zu verwenden, um Steuerelemente einem Tab oder Tab-Steuerelement zuzuweisen, das noch nicht vorhanden ist (außer bei der Name-Methode). In diesem Fall aber werden die unten beschriebenen Optionen zur relativen Positionierung nicht unterstützt.

Positionierung: Bei jedem Tab oder Tab-Steuerelement, das sein erstes Untersteuerelement erhält, wird dieses Untersteuerelement eine spezielle Standardposition unter Berücksichtigung folgender Bedingungen haben: 1) Fehlt sowohl die X- als auch Y-Koordinate, wird das erste Untersteuerelement auf die obere linke Ecke des Tab-Steuerelements positioniert (mit einem Standard-Abstand). Die restlichen Untersteuerelemente werden jeweils unter dem vorherigen Steuerelement positioniert; 2) Sind die Positionierungsoptionen X+n und/oder Y+n angegeben, wird das Untersteuerelement relativ zur linken oberen Ecke des Innenbereichs vom Tab-Steuerelement positioniert. Zum Beispiel würde die Angabe von x+10 y+10 bewirken, dass das Steuerelement 10 Pixel nach rechts und 10 Pixel nach unten von der linken oberen Ecke positioniert wird.

V: Wenn man den Befehl Gui Submit verwendet, wird in die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) der Name des aktuell ausgewählten Tabs gespeichert. Hat das Steuerelement jedoch die AltSubmit-Eigenschaft, wird in die Ausgabevariable stattdessen die Positionsnummer des Tabs (der erste Tab ist 1, der zweite ist 2 und so weiter) gespeichert.

G: Ein g-Label wie gMeineSubroutine kann in den Optionen des Steuerelements eingefügt werden. Diese Option lässt das Label MeineSubroutine immer dann starten, wenn der Benutzer auf einen anderen Tab wechselt. Hat das Tab-Steuerelement sowohl ein g-Label als auch eine Ausgabevariable, wird die Ausgabevariable beim Wechseln des Tabs auf den zuvor ausgewählten Tabnamen gesetzt (oder bei AltSubmit auf die Nummer).

Navigation mit der Tastatur: Der Benutzer kann mit Strg+Bild↑/Bild↓ von Tab zu Tab navigieren. Befindet sich der Tastaturfokus auf einem Steuerelement, das nicht zum Tab-Steuerelement gehört, wird das erste Tab-Steuerelement des Fensters angesteuert. Strg+Tab und Strg+Umschalt+Tab können auch verwendet werden, aber mit der Ausnahme, dass sie nicht funktionieren, wenn das aktuell fokussierte Steuerelement ein mehrzeiliges Eingabefeld ist.

Einschränkung: Jedes Fenster kann nicht mehr als 255 Tab-Steuerelemente enthalten. Jedes Tab-Steuerelement kann nicht mehr als 256 Tabs (Seiten) haben. Darüber hinaus ist es nicht möglich, dass ein Tab-Steuerelement weitere Tab-Steuerelemente enthalten kann.

Tab3 vs. Tab2 vs. Tab

Übergeordnetes Fenster: Das übergeordnete Fenster eines Steuerelements hat sowohl Einfluss auf die Positionierung und Sichtbarkeit des Steuerelements als auch auf die Navigationsreihenfolge via TAB-Taste. Ein Untersteuerelement innerhalb eines vorhandenen Tab3-Steuerelements verwendet als übergeordnetes Fenster das sogenannte "Tab-Dialogfenster", welches den Anzeigebereich des Tab-Steuerelements ausfüllt. Alle anderen Steuerelemente, einschließlich der Untersteuerelemente von Tab oder Tab2, verwenden als übergeordnetes Fenster nur das GUI-Fenster selbst.

Positionierung: Untersteuerelemente von Tab und Tab2 sind nicht unbedingt an den Grenzen des Tab-Steuerelements gebunden: Sie werden weiterhin immer dann versteckt und sichtbar gemacht, wenn deren Tab ausgewählt oder abgewählt wird. Dieses Verhalten ist besonders für den unten beschriebenen Buttons-Style geeignet.

Wenn es sich um Tab3 handelt, verhalten sich Steuerelemente, die einem Tab zugewiesen werden, bevor das Tab-Steuerelement erstellt wird, wie Steuerelemente, die zu einem Tab- oder Tab2-Steuerelement hinzugefügt wurden. Alle anderen Untersteuerelemente sind nur innerhalb des Anzeigebereichs des Tab-Steuerelements sichtbar.

Beim Verschieben eines Tab3-Steuerelements werden auch seine Untersteuerelemente verschoben. Dieses Verhalten trifft nicht auf Tab- und Tab2-Steuerelemente zu.

Wenn man im seltenen Fall ein Steuerelement via WinMove (oder gleichwertigem DllCall-Aufruf) verschiebt, müssen die Koordinaten relativ zum übergeordneten Fenster des Steuerelements sein, welches nicht unbedingt das GUI sein muss (siehe oben). GuiControl Move hingegen nimmt immer GUI-Koordinaten und ControlMove immer die Fensterkoordinaten, unabhängig vom übergeordneten Fenster des Steuerelements.

Automatische Größenanpassung: Wenn die Breite und/oder Höhe des Tab3-Steuerelements im Skript nicht angegeben sind, werden sie zu folgenden Zeitpunkten automatisch berechnet (welches auch immer zuerst kommt nach dem Erstellen des Steuerelements):

Die berechnete Größe berücksichtigt Untersteuerelemente bei einer automatischen Größenanpassung, plus die Standardabstände. Die Größe wird nur einmal berechnet, und wird nicht neuberechnet, wenn man später Steuerelemente hinzufügen sollte. Wenn das Tab3-Steuerelement leer ist, bekommt es die gleiche Standardgröße wie Tab- oder Tab2-Steuerelelemente.

Die Größe von Tab- und Tab2-Steuerelementen werden nicht automatisch angepasst; sie erhalten eine willkürliche Standardgröße.

Navigationsreihenfolge via TAB-Taste: Die Navigationsreihenfolge via Tab-Taste ist abhängig davon, in welcher Reihenfolge die Steuerelemente erstellt worden sind. Bei Tab-Steuerelementen ist die Reihenfolge zusätzlich abhängig davon, welche Art von Tab-Steuerelement verwendet wird:

Benachrichtigungsmeldungen (Tab3): Gewöhnliche und benutzerdefinierte Steuerelemente senden Benachrichtigungsmeldungen in der Regel an ihre übergeordneten Fenster. WM_COMMAND-, WM_NOTIFY-, WM_VSCROLL-, WM_HSCROLL- oder WM_CTLCOLOR-Meldungen, die an das Tab-Dialogfenster eines Tab3-Steuerelements gesendet werden, werden an das GUI-Fenster weitergeleitet und können via OnMessage abgefangen werden. Wenn das Tab-Steuerelement das aktuelle Windows-Design verwendet und wenn die Option +BackgroundTrans fehlt, wird WM_CTLCOLORSTATIC vollkommen vom Tab-Dialogfenster berücksichtigt und nicht weitergeleitet. Andere Benachrichtigungsmeldungen (z. B. benutzerdefinierte Meldungen) werden nicht unterstützt.

Bekannte Probleme mit Tab2:

Bekannte Probleme mit Tab:

Tab-Optionen

Choose: Siehe oben.

-Background: Überschreibt die benutzerdefinierte Hintergrundfarbe des Fensters und verwendet die Standardfarbe des Tab-Steuerelements vom Betriebssystem. Geben Sie +Theme -Background an, um das Tab-Steuerelement im aktuellen Design des Desktops darzustellen. Allerdings werden dadurch die meisten Steuerelementarten im Tab-Steuerlement merkwürdig dargestellt, weil deren Hintergründe nicht mit dem Hintergrund des Tab-Steuerelements übereinstimmen. Bei einigen Steuerelementarten (wie Text) kann das Problem behoben werden, wenn BackgroundTrans in deren Optionen eingefügt wird.

Buttons: Erstellt eine Reihe von Buttons auf der oberen Seite des Steuerelements, statt eine Reihe von Tabs (in diesem Fall wird standardmäßig kein Rahmen angezeigt, weil die Anzeigefläche dabei typischerweise keine Steuerelemente enthält).

Left/Right/Bottom: Geben Sie eines dieser Wörter an, damit die Tabs auf der linken, rechten oder unteren Seite angezeigt werden, statt oben. Für Left und Right gelten Einschränkungen, siehe dazu TCS_VERTICAL.

-Wrap: Verhindert, dass die Tabs mehr als eine Reihe verbrauchen (sind hierbei zu viele Tabs vorhanden, werden Buttons mit Pfeilen angezeigt, die der Benutzer drücken kann, um zwischen den Tabs zu wechseln).

Um die Anzahl der Textreihen innerhalb des Steuerelements zu bestimmen (oder dessen Höhe und Breite), siehe Position und Größe von Steuerelementen anpassen.

Symbole in Tabs: Mit SendMessage kann ein Symbol neben dem Tabnamen angezeigt werden. Siehe dazu den Forumsbeitrag Icons in tabs.

StatusBar[v1.0.44+]

Beschreibung: Eine Reihe von Texten und/oder Symbolen, die am unteren Ende eines Fensters angefügt sind. Eine Statusleiste wird normalerweise dazu verwendet, geänderte Zustände zu melden. Beispiel:

Gui, Add, StatusBar,, Starttext der Leiste (kann leer gelassen werden).
SB_SetText("Es sind " . Reihenanzahl . " Zeilen markiert.")

Die einfachste Anwendungsmöglichkeit der Statusleiste ist es, SB_SetText() immer dann aufzurufen, wenn sich etwas ändert, das dem Benutzer gemeldet werden soll. Um mehr als eine Information zu melden, teilt man die Leiste via SB_SetParts() in mehreren Abschnitten auf. Mit SB_SetIcon() können Symbole in die Leiste eingefügt werden.

Alle folgenden Funktionen gelten für das Standard-GUI-Fenster des aktuellen Threads (das zum Beispiel mit Gui, 2:Default geändert werden kann). Falls das Standardfenster weder vorhanden ist noch eine Statusleiste hat, geben alle Funktionen eine 0 zurück, um das Problem zu kennzeichnen.

SB_SetText

Zeigt NeuerText in einem bestimmten Bereich der Statusleiste an.

SB_SetText(NeuerText , Bereichsnummer, Style)

Ist Bereichsnummer nicht vorhanden, gilt standardmäßig 1. Ansonsten kann ein Integer zwischen 1 und 256 angegeben werden. Ist Style nicht vorhanden, wird standardmäßig der traditionelle Rahmen verwendet, um diesen Bereich aussehen zu lassen, als wäre er abgesenkt. Ansonsten kann eine 1 angegeben werden, um den Rahmen zu entfernen, oder eine 2, um diesen Bereich aussehen zu lassen, als wäre er angehoben. Überall in NeuerText können bis zu zwei Tabulatorzeichen (`t) angegeben werden: alles, was sich rechts neben dem ersten Tab befindet, wird innerhalb des Bereichs zentriert, und alles, was sich rechts neben dem zweiten Tab befindet, wird rechts ausgerichtet. Diese Funktion gibt bei Erfolg eine 1 und bei Misserfolg eine 0 zurück.

SB_SetParts

Teilt die Leiste anhand einer bestimmten Breite (in Pixel) in mehrere Abschnitte auf.

SB_SetParts(Breite1, Breite2, ... Breite255)

Fehlen alle Parameter, wird die Leiste in ihren alten Zustand versetzt, so dass sie nur einen einzelnen langen Bereich hat. Ansonsten können für alle Bereiche, bis auf den letzten, die Breite angegeben werden (der letzte Bereich wird mit der verbliebenen Leistenbreite aufgefüllt). Zum Beispiel würde SB_SetParts(50, 50) drei Bereiche erstellen: Die ersten zwei mit einer Breite von 50 und der letzte mit der verbliebenen Breite.

Hinweis: Alle Bereiche, die per SB_SetParts() "gelöscht" worden sind, enthalten das nächste Mal, wenn sie wieder angezeigt werden, keinen Text (desweiteren werden ihre Symbole automatisch zerstört).

Diese Funktion gibt bei Erfolg einen Wert ungleich 0 zurück (HWND der Statusleiste). Bei Misserfolg eine 0.

SB_SetIcon

Zeigt in einem bestimmten Bereich ein kleines Symbol links neben den Text an.

SB_SetIcon(Dateiname , Symbolnummer, Bereichsnummer)

Ist Bereichsnummer nicht vorhanden, gilt standardmäßig 1. Dateiname ist der Name einer ICO-, CUR- oder ANI-Datei (zurzeit werden animierte Cursor in der Leiste nicht animiert). Andere Symbolquellen können sein: EXE, DLL, CPL, SCR und andere Typen, die Symbolressourcen enthalten. Um anstelle der ersten Symbolgruppe eine andere aus der Datei zu verwenden, fügt man in Symbolnummer ihre Nummer ein. Zum Beispiel würde SB_SetIcon("Shell32.dll", 2) das Standardsymbol von der zweiten Symbolgruppe verwenden. Wenn der Symbolnummer-Parameter negativ ist, wird sein absoluter Wert als Ressourcen-ID eines Symbols innerhalb einer ausführbaren Datei vermutet. Diese Funktion gibt bei Erfolg das HICON des Symbols und bei Misserfolg eine 0 zurück. Das HICON ist eine Systemressource, die bei den meisten Skripten getrost ignoriert werden kann, weil es automatisch zerstört wird, sobald das Fenster der Statusleiste zerstört wird. Ebenso wird jedes alte Symbol zerstört, wenn es per SB_SetIcon() mit einer Neuen ersetzt wird. Das kann wie folgt verhindert werden:

Gui +LastFound
SendMessage, 0x40F, Bereichsnummer - 1, MeinHicon, msctls_statusbar321  ; 0x40F ist SB_SETICON.

[v1.1.23+]: Man kann ein Symbol-Handle anstelle eines Dateinamens verwenden. Zum Beispiel SB_SetIcon("HICON:" handle).

[v1.1.27+]: Nicht-symbolartige Bilddateien und Bitmap-Handles werden als Dateiname unterstützt. Zum Beispiel SB_SetIcon("HBITMAP:" handle).

SB_SetProgress

Erstellt und steuert einen Fortschrittsbalken innerhalb einer Statusleiste. Diese Funktion ist auf www.autohotkey.com/forum/topic37754.html verfügbar.

G-Label-Benachrichtigungen

Ein g-Label wie gMeineSubroutine kann in den Optionen des Steuerelements eingefügt werden. Diese Option lässt das Label MeineSubroutine immer dann starten, wenn der Benutzer die Leiste anklickt. Diese Subroutine kann auf die internen Variablen A_Gui und A_GuiControl zurückgreifen. Noch wichtiger ist, dass sie zudem auf A_GuiEvent zurückgreifen kann, die eine der folgenden Zeichenketten enthält (aus Kompatibilitätsgründen mit zukünftigen Versionen sollte ein Skript nicht davon ausgehen, dass das die einzigen möglichen Werte sind):

Schrift und Farbe

Größe, Art und Stil der Schrift kann per Gui Font eingestellt werden (wie bei normalen Steuerelementen). Die Textfarbe kann nicht geändert werden. Gui Color hat keine Wirkung; stattdessen kann die Hintergrundfarbe der Statusleiste geändert werden, indem man das Wort Background in den Optionen angibt und direkt danach einen Farbnamen (siehe Farbtabelle) oder RGB-Wert (0x-Präfix ist optional) einfügt. Beispiele: BackgroundSilver, BackgroundFFDD99, BackgroundDefault.

Statusleiste verstecken

Damit die Leiste zu Beginn unsichtbar ist, fügt man das Wort Hidden in den Optionen ein, zum Beispiel Gui, Add, StatusBar, Hidden vMeineStatusBar. Um die Leiste irgendwann nach ihrer Erstellung zu verstecken, verwendet man GuiControl, Hide, MeineStatusBar. Mit GuiControl, Show, MeineStatusBar kann sie wieder sichtbar zu machen.

Hinweis: Das Verstecken der Leiste reduziert nicht die Höhe des Fensters. Wenn das gemacht werden soll, verwenden Sie einfach Gui, Show, AutoSize.

Styles (selten verwendet)

Siehe StatusBar-Style-Tabelle.

Bekannte Einschränkungen

1) Jedes Steuerelement, das sich mit der Statusleiste überschneidet, könnte manchmal darüber gezeichnet werden. Um das zu verhindern, können solche Steuerelemente beispielsweise per GuiSize-Label dynamisch verkleinert werden. 2) Es kann nicht mehr als eine Statusleiste pro Fenster vorkommen.

Beispiel

Beispiel #1 am unteren Ende der TreeView-Seite zeigt eine Statusleiste mit mehreren Bereichen.

ActiveX [v1.1.03+]

ActiveX-Komponenten wie das MSIE-Browser-Steuerelement können wie folgt in ein GUI-Fenster eingebettet werden:

Gui Add, ActiveX, w980 h640 vWB, Shell.Explorer  ; Der letzte Parameter ist der Name der ActiveX-Komponente.
WB.Navigate("https://autohotkey.com/boards/")  ; Speziell für das Web-Browser-Steuerelement.
Gui Show

Beim Erstellen des Steuerelements wird ein ActiveX-Objekt in die zugeordnete Variable des Steuerelements gespeichert, falls vorhanden. GuiControlGet kann verwendet werden, um das Objekt abzurufen.

Das folgende Beispiel zeigt, wie man ComObjConnect nutzen kann, um die Ereignisse des Objekts zu verarbeiten:

Gui Add, Edit, w930 r1 vURL, https://autohotkey.com/boards/
Gui Add, Button, x+6 yp w44 Default, Laden
Gui Add, ActiveX, xm w980 h640 vWB, Shell.Explorer
ComObjConnect(WB, WB_events)  ; Verbindet die WB-Ereignisse mit dem Klassenobjekt WB_events.
Gui Show
; Fortfahren, um die Startseite zu laden:
ButtonLaden:
Gui Submit, NoHide
WB.Navigate(URL)
return

class WB_events
{
    NavigateComplete2(wb, NewURL)
    {
        GuiControl,, URL, %NewURL%  ; URL-Eingabefeld aktualisieren.
    }
}

GuiClose:
ExitApp

ComObjType kann verwendet werden, um den Typ des Objekts zu bestimmen, das in der Variable des Steuerelements gespeichert ist.

Custom [v1.1.10+]

Bietet die Möglichkeit, ein Steuerelement, das nicht direkt von AutoHotkey unterstützt wird, in ein GUI-Fenster einzubetten. Dazu muss der Win32-Klassenname über die Class-Option im Optionen-Parameter von Gui Add angegeben werden. Beispiele:

Gui, Add, Custom, ClassComboBoxEx32  ; Fügt ein ComboBoxEx-Steuerelement hinzu.
Gui, Add, Custom, ClassScintilla  ; Fügt ein Scintilla-Steuerelement hinzu. Beachten Sie, dass vorher die SciLexer.dll-Bibliothek geladen werden muss.

AutoHotkey verwendet standardmäßig die Text-Routinen für Windows-Steuerelemente, wenn Texte im Steuerelement per Gui Add, GuiControl oder GuiControlGet abgerufen/ersetzt werden sollen.

G-Label-Benachrichtigungen: Es ist möglich, ein g-Label wie gMeineSubroutine in den Optionen des Steuerelements aufzulisten, um Ereignisse abzufangen, die vom Steuerelement kommen. Diese Subroutine kann auf die internen Variablen A_Gui und A_GuiControl zurückgreifen. Noch wichtiger ist, dass sie zudem auf A_GuiEvent zurückgreifen kann, die eine der folgenden Zeichenketten enthält (aus Kompatibilitätsgründen mit zukünftigen Versionen sollte ein Skript nicht davon ausgehen, dass das die einzigen möglichen Werte sind):

Das folgende Beispiel zeigt, wie ein IP-Adressen-Steuerelement hinzugefügt und verwendet werden kann:

Gui, Add, Custom, ClassSysIPAddress32 r1 w150 hwndhIPControl gIPControlEvent
Gui, Add, Button, Default, OK
IPCtrlSetAddress(hIPControl, A_IPAddress1)
Gui, Show
return

GuiClose:
ExitApp

ButtonOK:
Gui, Hide
ToolTip
MsgBox % "Sie haben " IPCtrlGetAddress(hIPControl) " gewählt."
ExitApp

IPControlEvent:
if (A_GuiEvent = "Normal")
{
    ; WM_COMMAND wurde empfangen.

    if (A_EventInfo = 0x0300)  ; EN_CHANGE
        ToolTip Steuerelement geändert!
}
else if (A_GuiEvent = "N")
{
    ; WM_NOTIFY wurde empfangen.

    ; Ermittelt den Benachrichtigungscode. Normalerweise ist dieses Feld UInt. Da dieses Steuerelement jedoch
    ; negative Codes verwendet, lesen wir es einfach als signed Int ein.
    nmhdr_code := NumGet(A_EventInfo + 2*A_PtrSize, "int")
    if (nmhdr_code != -860)  ; IPN_FIELDCHANGED
        return

    ; Extrahiert Infos aus der NMIPADDRESS-Struktur
    iField := NumGet(A_EventInfo + 3*A_PtrSize + 0, "int")
    iValue := NumGet(A_EventInfo + 3*A_PtrSize + 4, "int")
    if (iValue >= 0)
        ToolTip Feld #%iField% geändert: %iValue%
    else
        ToolTip Feld #%iField% leer gelassen
}
return

IPCtrlSetAddress(hControl, IPAddress)
{
    static WM_USER := 0x400
    static IPM_SETADDRESS := WM_USER + 101

    ; Packt die IP-Adresse in ein 32-Bit-Wort, um es mit SendMessage verwenden zu können.
    IPAddrWord := 0
    Loop, Parse, IPAddress, .
        IPAddrWord := (IPAddrWord * 256) + A_LoopField
    SendMessage IPM_SETADDRESS, 0, IPAddrWord,, ahk_id %hControl%
}

IPCtrlGetAddress(hControl)
{
    static WM_USER := 0x400
    static IPM_GETADDRESS := WM_USER + 102

    VarSetCapacity(AddrWord, 4)
    SendMessage IPM_GETADDRESS, 0, &AddrWord,, ahk_id %hControl%
    return NumGet(AddrWord, 3, "UChar") "." NumGet(AddrWord, 2, "UChar") "." NumGet(AddrWord, 1, "UChar") "." NumGet(AddrWord, 0, "UChar")
}

Siehe auch

ListView, TreeView, Gui, GuiControl, GuiControlGet, Menu