GUI-Steuerelemente

Inhaltsverzeichnis

Text

Beschreibung: Ein Bereich mit randlosem Text, den der Benutzer nicht editieren kann. Oft verwendet, um andere Steuerelemente zu beschriften.

Zum Beispiel:

Gui, Add, Text,, Bitte tragen Sie Ihren Namen ein:

Erscheinungsbild:

Text

Geben Sie im letzten Parameter eine Zeichenkette an, die im Steuerelement 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.

Wenn in Optionen eine Breite (W), aber keine Zeilen (R) oder Höhe (H) angegeben ist, wird der Text bei Bedarf umbrochen und die Höhe des Steuerelements automatisch gesetzt.

Da der Inhalt des Steuerelements im letzten Parameter des GUI-Befehls angegeben wird, 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 z. B. gMeineSubroutine kann in den Optionen des Steuerelements eingefügt werden. Dies führt dazu, dass jedes Mal das Label MeineSubroutine gestartet wird, wenn der Benutzer den Text anklickt. Mit dieser Methode kann zum Beispiel ein unterstrichener, blauer Hyperlink simuliert werden:

Gui, Font, underline
Gui, Add, Text, cBlue gGoogleStarten, Klicken Sie hier, um Google zu starten.

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

GoogleStarten:
Run www.google.com
return

Ein Doppelklick kann durch Überprüfen der internen Variable A_GuiEvent erkannt werden.

Mit einem Und-Zeichen (&) kann einer der Buchstaben im Text unterstrichen werden. Zum Beispiel:

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

Das Beispiel oben führt dazu, dass der Buchstabe V unterstrichen und der Tastaturkurzbefehl Alt+V aktiviert wird. Diesen Tastaturkurzbefehl kann der Benutzer drücken, um den Tastaturfokus auf das erste danach erstellte eingabefähige Steuerelement zu setzen. Um stattdessen ein Und-Zeichen im Text des Steuerelements darzustellen, sind zwei aufeinanderfolgende Und-Zeichen (&&) erforderlich. Fügen Sie 0x80 in den Optionen des Steuerelements ein, um die Sonderbehandlung der Und-Zeichen komplett zu deaktivieren.

Unter Allgemeine Optionen finden Sie weitere Optionen wie Right, Center und Hidden. Siehe auch: Position und Größe von Steuerelementen anpassen.

Edit

Beschreibung: Ein Eingabefeld, das der Benutzer zum Eintragen eines formatlosen Textes nutzen kann.

Zum Beispiel:

Gui, Add, Edit, r9 vMeinEdit w135, Der Text innerhalb des Eingabefelds (lassen Sie diesen Parameter weg, um ein leeres Feld anzuzeigen).

Erscheinungsbild:

Edit

Das Steuerelement wird als mehrzeilig erkannt, wenn es mehr als eine Textzeile enthält. r3 beispielsweise in Optionen bewirkt, dass ein dreizeiliges Eingabefeld mit folgenden Standardeigenschaften erstellt wird: vertikale Scrollleiste; automatischer Zeilenumbruch; Enter erzeugt einen Zeilenumbruch, anstatt die Standardschaltfläche des Fensters auszulösen.

Fügen Sie im letzten Parameter entweder ein einzelnes LF (`n) oder CR+LF (`r`n) ein, um eine neue Zeile innerhalb eines mehrzeiligen Eingabefeldes zu beginnen. Beide Varianten erzeugen direkt geschriebene CR+LF-Paare (`r`n) innerhalb des Eingabefeldes. Nutzt man jedoch Gui Submit oder GuiControlGet, um den Inhalt des Steuerelements in dessen zugeordnete Variable zu speichern, werden CR+LF-Paare (`r`n) immer in einzelne Zeilenumbruchszeichen (`n) umgewandelt. Um den Inhalt des Eingabefeldes in eine Datei zu schreiben, können Sie wie folgt vorgehen: FileAppend, %MeinEingabefeld%, C:\Gespeicherte Datei.txt.

Jeder beim Schreiben verursachte automatische Zeilenumbruch, sofern aktiv (Standardeinstellung bei mehrzeiligen Eingabefeldern), ist rein visueller Natur; das heißt, dass dadurch keine physischen Zeilenumbruchszeichen erzeugt werden (nur das Drücken von Enter ist dazu in der Lage).

Ein g-Label wie z. B. gMeineSubroutine kann in den Optionen des Steuerelements eingefügt werden. Dies führt dazu, dass jedes Mal das Label MeineSubroutine gestartet wird, wenn der Benutzer oder das Skript den Inhalt des Steuerelements ändert.

TIPP: Verwenden Sie FileRead und GuiControl, um den Inhalt einer Textdatei in ein Eingabefeld zu laden. Zum Beispiel:

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

Edit-Optionen

Setzen Sie ein Minuszeichen davor, um eine der folgenden Optionen zu entfernen statt hinzuzufügen:

Limit: Beschränkt die Benutzereingabe auf die sichtbare Breite des Eingabefeldes. Alternativ können Sie nach diesem Wort eine Zahl angeben, um die Eingabe auf eine bestimmte Anzahl von Zeichen zu begrenzen. Limit10 beispielsweise bewirkt, dass der Benutzer nur maximal 10 Zeichen in das Eingabefeld eintragen darf.

Lowercase: Die vom Benutzer geschriebenen Zeichen werden automatisch in Kleinbuchstaben umgewandelt.

Multi: Ermöglicht mehr als eine Textzeile im Eingabefeld. Normalerweise muss diese Option nicht gesetzt werden, weil sie anhand der Höhe (H), der Zeilen (R) oder des Inhalts (Text) automatisch erkannt wird.

Number: Verhindert, dass der Benutzer etwas anderes als Zahlen in das Feld eintragen kann (allerdings ist es immer noch möglich, nicht-numerische Werte via Zwischenablage einzufügen). Eine numerische Benutzereingabe kann auch erzwungen werden, wenn Sie dem Eingabefeld ein UpDown-Steuerelement zuweisen.

Password: Versteckt die Benutzereingabe (z. B. für eine Passworteingabe); das heißt, dass jedes Zeichen, das der Benutzer eingibt, mit einem Maskierungszeichen ersetzt wird. Wenn Sie ein anderes Maskierungszeichen benötigen, können Sie direkt nach dem Wort Password das gewünschte Zeichen angeben. Password* bewirkt beispielsweise, dass als Maskierungszeichen nicht wie seit Windows XP üblich der vollflächige Kreis, sondern das Sternchen verwendet wird. Hinweis: Diese Option funktioniert nicht bei mehrzeiligen Eingabefeldern.

ReadOnly: Verhindert, dass der Benutzer den Inhalt des Steuerelements ändern kann. Der Text kann aber weiterhin gescrollt, markiert und in die Zwischenablage kopiert werden.

Tn: Mit dem Buchstaben T können Tabstopps innerhalb eines mehrzeiligen Eingabefeldes gesetzt werden (Tabstopps sind Ansprungspositionen für direkt geschriebene Tabulatorzeichen und ermöglichen somit, den Text in Spalten aufzuteilen). Wenn der Buchstabe T nicht verwendet wird, werden Tabstopps auf je 32 Dialogeinheiten gesetzt (die Breite jeder "Dialogeinheit" ist systemintern festgelegt). Wenn der Buchstabe T nur einmal verwendet wird, werden Tabstopps auf je n Dialogeinheiten innerhalb der verfügbaren Breite des Steuerelements gesetzt. Gui, Add, Edit, vMeinEdit r16 t64 beispielsweise verdoppelt den Standardabstand zwischen den Tabstopps. Geben Sie den Buchstaben T mehrmals wie folgt an, um benutzerdefinierte Tabstopps zu setzen: Gui, Add, Edit, vMeinEdit r16 t8 t16 t32 t64 t128. Für jede absolute Spaltenposition in der Liste wird ein Tabstopp gesetzt, bis zu einem Maximum von 50 Tabstopps. Hinweis: Tabstopps funktionieren nur bei mehrzeiligen Eingabefeldern.

Uppercase: Die vom Benutzer geschriebenen Zeichen werden automatisch in Großbuchstaben umgewandelt.

WantCtrlA [v1.0.44+]: Geben Sie -WantCtrlA (minus WantCtrlA) an, um zu verhindern, dass der Benutzer den gesamten Text im Eingabefeld via Strg+A markieren kann.

WantReturn: Geben Sie -WantReturn (minus WantReturn) an, um zu verhindern, dass Enter von einem mehrzeiligen Eingabefeld erfasst wird. Das Drücken von Enter wäre dann das gleiche wie, als würde man die Standardschaltfläche des Fensters (falls vorhanden) drücken. Um dennoch eine neue Zeile zu beginnen, kann der Benutzer Strg+Enter drücken.

WantTab: Führt dazu, dass Tab ein Tabulatorzeichen erzeugt, anstatt zum nächsten Steuerelement zu navigieren. Wenn diese Option nicht angegeben ist, kann der Benutzer Strg+Tab drücken, um ein Tabulatorzeichen innerhalb eines mehrzeiligen Eingabefeldes zu erzeugen. Hinweis: WantTab funktioniert auch in einem einzeiligen Eingabefeld, allerdings wird in Windows XP und älter jedes Tabulatorzeichen als leeres Rechteck dargestellt (aber immer noch als echtes Tabulatorzeichen gespeichert).

Wrap: Geben Sie -Wrap (minus Wrap) an, um den automatischen Zeilenumbruch in einem mehrzeiligen Eingabefeld zu deaktivieren. Dieser Style kann nach dem Erstellen des Steuerelements nicht mehr geändert werden. Um dies dennoch zu tun, gibt es folgende Vorgehensweisen: 1) Zerstören Sie das Fenster und erstellen Sie es danach wieder; oder 2) Erstellen Sie zwei überlappende Eingabefelder, das eine mit automatischem Zeilenumbruch und das andere ohne. Der derzeit nicht genutzte kann leer gelassen und/oder versteckt werden.

Unter Allgemeine Optionen finden Sie weitere Optionen wie Right, Center und Hidden. Siehe auch: Position und Größe von Steuerelementen anpassen.

Ein umfangreicheres Eingabefeld: HiEdit ist ein frei verfügbares Eingabefeld, das mehrere Tabs hat, mit großen Dateien umgehen kann und sehr wenig Speicher verbraucht. Es kann zum Editieren von Text- und Binärdateien verwendet werden. Weitere Informationen und ein Beispiel finden Sie unter HiEdit auf GitHub.

UpDown

Beschreibung: Zwei Pfeile als Schaltflächen, 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 zuvor hinzugefügte Steuerelement wird auch als Buddy bezeichnet. Das bekannteste Beispiel dafür ist der "Spinner" (Drehrad) - ein Eingabefeld mit UpDown-Steuerelement.

Zum Beispiel:

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

Erscheinungsbild:

UpDown

Das Beispiel oben führt dazu, dass das Eingabefeld als Buddy des UpDown-Steuerelements festgelegt wird. Wenn der Benutzer eine der Pfeilschaltflächen drückt, wird die Zahl im Eingabefeld automatisch erhöht oder verringert.

Das Buddy-Steuerelement kann auch ein Text- oder ListBox-Steuerelement sein. Bei anderen Steuerelementen (wie z. B. ComboBox oder DropDownList) werden Features wie das g-Label aufgrund von Einschränkungen im Betriebssystem eventuell nicht korrekt funktionieren.

Geben Sie im letzten Parameter die Startposition des UpDown-Steuerelements an (lässt man diese weg, beginnt das Steuerelement bei 0 oder beim niedrigsten zulässigen Bereichswert).

Nutzen Sie Gui Submit, um die aktuelle numerische Position des UpDown-Steuerelements in dessen zugeordnete Ausgabevariable (falls vorhanden) zu speichern. Wenn das UpDown-Steuerelement mit einem Eingabefeld verbunden ist, empfiehlt es sich, den aktuellen Wert des UpDown-Steuerelements und nicht den des Eingabefelds abzurufen. So wird garantiert, dass immer eine im gültigen Bereich liegende Nummer zurückgegeben wird, selbst wenn der Benutzer etwas in das Eingabefeld eingetragen hat, das nicht-numerisch ist oder außerhalb des gültigen Bereichs liegt. Beachten Sie zudem, dass Zahlen länger als 3 Ziffern standardmäßig mit einem Tausendertrennzeichen (z. B. Punkt) in Dreiergruppen eingeteilt werden. Diese Trennzeichen werden nur in die Ausgabevariable des Eingabefelds gespeichert, nicht in die des UpDown-Steuerelements.

Das g-Label des UpDown-Steuerelements (falls vorhanden) wird jedes Mal gestartet, wenn der Benutzer auf eine der Pfeilschaltflächen klickt oder eine Pfeiltaste auf der Tastatur drückt. Außerdem wird jedes Mal, wenn das g-Label gestartet wird, die numerische Position des UpDown-Steuerelements in dessen zugeordnete Ausgabevariable gespeichert (falls vorhanden).

UpDown-Optionen

Horz: Richtet die Schaltflächen des Steuerelements nach links/rechts statt oben/unten aus. Standardmäßig bewirkt Horz aber auch, dass das Steuerelement isoliert bzw. vom Buddy-Steuerelement getrennt wird. Um dieses Verhalten zu überschreiben, können Sie Horz 16 in den Optionen des Steuerelements einfügen.

Left: Positioniert das UpDown-Steuerelement auf die linke statt rechte Seite des Buddy-Steuerelements.

Range: Setzt den Bereich auf etwas anderes als 0 bis 100. Geben Sie nach dem Wort Range den Minimal- und Maximalwert an (mit einem Bindestrich dazwischen). Range1-1000 beispielsweise erlaubt eine Zahl zwischen 1 und 1000; Range-50-50 eine Zahl zwischen -50 und 50; und Range-10--5 eine Zahl zwischen -10 und -5. Der Minimal- und Maximalwert können vertauscht werden, um die Schrittrichtung der Pfeile umzukehren. Der größte zulässige Bereich ist -2147483648-2147483647. Wenn das Buddy-Steuerelement eine ListBox ist, wird der Standardbereich im vertikalen Modus auf 32767-0 und im horizontalen Modus (Horz) auf 0-32767 festgelegt.

Wrap: Veranlasst das Steuerelement, zum anderen Ende des gültigen Bereichs zu springen, wenn der Benutzer versucht, den Minimal- oder Maximalwert zu überschreiten. Wenn Wrap nicht angegeben ist, stoppt das Steuerelement beim Erreichen des Minimal- oder Maximalwerts.

16: Geben Sie -16 (minus 16) an, um ein vertikales UpDown-Steuerelement zu isolieren bzw. vom Buddy-Steuerelement zu trennen. Dies bewirkt auch, dass sich das Steuerelement nicht an die Größe des Buddy-Steuerelements anpasst, sondern eine eigene Breite, Höhe und Position aufweist bzw. haben kann. Ein isoliertes UpDown-Steuerelement speichert intern seine aktuelle Position. Um diese Position abzurufen, können Sie zum Beispiel Gui Submit nutzen.

0x80: Fügen Sie 0x80 in Optionen ein, um zu verhindern, dass mit einem Tausendertrennzeichen die dezimalen Ziffern des Buddy-Steuerelements in Dreiergruppen eingeteilt werden. Normalerweise ist dieser Style nicht notwendig, denn man kann den aktuellen Wert auch vom UpDown-Steuerelement selbst abrufen, um einen Wert ohne Tausendertrennzeichen zu erhalten.

Andere Schrittweiten als 1: In diesem Skript zeigt NumEric, wie man die Schrittweite eines UpDown-Steuerelements auf einen anderen Wert als 1 ändert (z. B. 5 oder 0.1).

Hexadezimales Zahlenformat: Das im Buddy-Steuerelement dargestellte Zahlenformat kann mit dem folgenden Beispiel von dezimal auf hexadezimal gestellt werden:

Gui +LastFound
SendMessage, 0x046D, 16, 0, msctls_updown321 ; 0x046D ist UDM_SETBASE

Allerdings betrifft das nur das Buddy-Steuerelement, nicht die gemeldete Position des UpDown-Steuerelements.

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

Picture (oder Pic)

Beschreibung: Ein Bereich zum Anzeigen eines Bildes (siehe weiter unten, welche Dateitypen unterstützt werden). Der letzte Parameter ist der Dateiname des Bildes. Wenn kein absoluter Pfad angegeben ist, wird das Bild im A_WorkingDir-Verzeichnis vermutet.

Zum Beispiel:

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

Lassen Sie die Optionen W und/oder H weg, um die tatsächliche Breite und/oder Höhe des Bildes beizubehalten. Ansonsten wird das Bild auf die angegebene Breite und/oder Höhe skaliert (diese Breite und Höhe bestimmen auch, welches Symbol aus einer mit mehreren Symbolen bestückten ICO-Datei geladen werden soll). Geben Sie -1 für eine der Abmessungen und eine positive Zahl für die jeweils andere an, um das Bild unter Beibehaltung des Seitenverhältnisses zu verkleinern oder zu vergrößern. w200 h-1 beispielsweise macht das Bild 200 Pixel breit und bewirkt, dass dessen Höhe automatisch gesetzt wird. Wenn das Bild nicht geladen oder dargestellt werden kann (z. B. weil die Datei nicht gefunden wurde), wird das Steuerelement leer gelassen und dessen Breite und Höhe auf 0 gesetzt.

Ein g-Label wie z. B. gMeineSubroutine kann in den Optionen des Steuerelements eingefügt werden. Dies führt dazu, dass jedes Mal das Label MeineSubroutine gestartet wird, wenn der Benutzer das Bild anklickt. Ein Doppelklick kann durch Überprüfen der internen Variable A_GuiEvent erkannt werden.

Um ein Bild als Hintergrund für andere Steuerelemente zu nutzen, sollte das Bild normalerweise vor solchen Steuerelementen hinzugefügt werden. Wenn solche Steuerelemente allerdings eingabefähig sind und das Bild ein g-Label hat, muss das Bild nach diesen Steuerelementen erstellt werden und 0x4000000 (WS_CLIPSIBLINGS) in den Optionen des Picture-Steuerelements eingefügt werden. Mit diesem Trick kann ein Bild auch als Hintergrund für ein Tab- oder ListView-Steuerelement festgelegt werden.

Symbole, Cursor und animierte Cursor: Symbole und Cursor können aus folgenden Dateitypen geladen werden: ICO, CUR, ANI, EXE, DLL, CPL, SCR und andere Typen, die Symbolressourcen enthalten. Um anstelle der ersten Symbolgruppe eine andere in der Datei zu nutzen, müssen Sie in Optionen das Wort Icon einfügen und direkt danach die Nummer der Gruppe angeben. Die folgende Beispielanweisung lädt das Standardsymbol aus der zweiten Symbolgruppe: Gui, Add, Picture, Icon2, C:\Meine Anwendung.exe.

Fügen Sie in Optionen das Wort AltSubmit ein, um zum Laden des Bildes die Microsoft-Datei GDIPlus.dll zu verwenden und dadurch eine alternative Darstellung von GIF-, BMP- und Symbolbildern zu gewährleisten. So kann zum Beispiel eine ICO/GIF-Datei mit transparentem Hintergrund als transparente Bitmap geladen werden, die den Effekt von BackgroundTrans zulässt (in [v1.1.23+] ist die Transparenz von Symbolen auch ohne AltSubmit wirksam). 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-Bilder. In Windows XP oder höher werden zusätzliche Bildformate wie PNG, TIF, Exif, WMF und EMF unterstützt. Um Betriebssysteme älter als XP zu unterstützen, kopieren Sie die GDI+-DLL-Datei von Microsoft in den Ordner von AutoHotkey.exe (bei einem kompilierten Skript muss die DLL in den Ordner des Skripts kopiert werden). Die DLL finden Sie auf www.microsoft.com mit Suchbegriffen wie: gdi redistributable

Animierte GIF-Bilder: Animierte GIF-Dateien werden zwar in einem Picture-Steuerelement angezeigt, aber nicht animiert. Um dieses Problem zu lösen, benötigen Sie die AniGIF-DLL-Datei (die für den nicht-kommerziellen Gebrauch kostenlos zur Verfügung steht). Beispiele dazu finden Sie im AutoHotkey-Forum. [v1.1.03+]: Alternativ können Sie dafür auch das ActiveX-Steuerelement nutzen. Zum Beispiel:

; Geben Sie unten den Pfad zur GIF-Datei an, die animiert werden soll (lokale Dateien sind auch möglich):
pic := "http://www.animatedgif.net/cartoons/A_5odie_e0.gif"
Gui, Add, ActiveX, w100 h150, % "mshtml:<img src='" pic "' />"
Gui, Show

[v1.1.23+]: Anstelle eines Dateinamens kann auch ein Bitmap- oder Symbol-Handle verwendet werden. Zum Beispiel HBITMAP:%handle%.

Button

Beschreibung: Eine Schaltfläche, die gedrückt werden kann, um eine Aktion auszulösen. Geben Sie im letzten Parameter den sichtbaren Namen der Schaltfläche an, der Zeilenumbruchszeichen (`n) zum Starten neuer Zeilen enthalten kann.

Zum Beispiel:

Gui, Add, Button, Default w80, OK

Erscheinungsbild:

Button

Das Wort Default in den Optionen des Beispiels oben bewirkt, dass "OK" zur Standardschaltfläche gemacht wird. Die Aktion der Standardschaltfläche wird jedes Mal automatisch ausgelöst, wenn der Benutzer Enter drückt, es sei denn, der Tastaturfokus liegt auf einer anderen Schaltfläche oder einem mehrzeiligen Eingabefeld mit aktiviertem WantReturn-Style. Um später eine andere Schaltfläche zur Standardschaltfläche zu machen, können Sie wie folgt vorgehen: GuiControl, +Default, Abbrechen. Um das Fenster später so zu ändern, dass es keine Standardschaltfläche hat, benötigen sie folgende Anweisung: GuiControl, -Default, OK.

Sie können ein Und-Zeichen (&) im Namen der Schaltfläche nutzen, um einen der Buchstaben zu unterstreichen. Zum Beispiel:

Gui, Add, Button,, &Pause

Das Beispiel oben führt dazu, dass der Buchstabe P unterstrichen und der Tastaturkurzbefehl Alt+P aktiviert wird. Um ein Und-Zeichen im Text des Steuerelements darzustellen, sind zwei aufeinanderfolgende Und-Zeichen (&&) erforderlich.

Wenn die Schaltfläche kein explizites g-Label hat, bekommt die Schaltfläche automatisch ein Label zugewiesen. Drückt man zum Beispiel im ersten GUI-Fenster eine Schaltfläche namens "OK", wird automatisch das Label ButtonOK (sofern vorhanden) ausgelöst. Handelt es sich anstelle des ersten GUI-Fensters um ein anderes GUI-Fenster, muss die Nummer des entsprechenden Fensters vor dem automatischen Label gesetzt werden; zum Beispiel: 2ButtonOK.

Wenn der Name der Schaltfläche Leerzeichen oder Zeichen aus dem Satz &`r`n`t` enthält, müssen diese beim automatischen Label weggelassen werden. Eine Schaltfläche mit der Bezeichnung "&Pause" beispielsweise bekommt automatisch das Label ButtonPause zugewiesen. Währenddessen eine Schaltfläche mit der Bezeichnung "Speichern && Beenden" das automatische Label ButtonSpeichernBeenden hat (die zwei Und-Zeichen sind dafür da, um ein einzelnes Und-Zeichen im Namen der Schaltfläche darzustellen).

Bekannte Einschränkung: Bestimmte Desktop-Designs können den Text dieses Steuerelements nicht ordnungsgemäß darstellen. Wenn dies der Fall ist, können Sie versuchsweise -Wrap (minus Wrap) in den Optionen des Steuerelements einfügen. Dadurch wird allerdings auch verhindert, dass das Steuerelement mehr als eine Textzeile enthalten kann.

CheckBox

Beschreibung: Ein kleines Feld zum Setzen oder Entfernen eines Häkchens, um An/Aus, Ja/Nein etc. darzustellen.

Zum Beispiel:

Gui, Add, CheckBox, vSendenAnRechnungsadresse, An Rechnungsadresse versenden?

Erscheinungsbild:

CheckBox

Der letzte Parameter ist eine Beschriftung, die neben der CheckBox angezeigt wird, um dem Benutzer eine Frage zu stellen oder die Funktion der CheckBox zu beschreiben. Diese Beschriftung kann Zeilenumbruchszeichen (`n) zum Starten neuer Zeilen enthalten. Wenn in Optionen eine Breite (W) angegeben ist, aber keine Zeilen (R) oder Höhe (H), werden Textzeilen bei Bedarf umbrochen und die Höhe des Steuerelements automatisch gesetzt. Die zugeordnete Ausgabevariable der CheckBox (falls vorhanden) wird auf 1 gesetzt, wenn das Steuerelement abgehakt ist, auf 0, wenn es nicht abgehakt ist, oder auf -1, wenn es grau/unbestimmt ist.

Fügen Sie das Wort Check3 in Optionen ein, um den dritten Zustand in Form eines grauen Häkchens zu aktivieren (dieser Zustand zeigt an, dass die CheckBox weder abgehakt noch nicht-abgehakt ist). Fügen Sie das Wort Checked oder CheckedGray in Optionen ein, um die CheckBox vorerst mit einem schwarzen bzw. grauen Häkchen darzustellen. Direkt nach dem Wort Checked kann optional eine 0, 1 oder -1 erfolgen, um den Startzustand zu bestimmen. Mit anderen Worten: Checked ist das gleiche wie Checked%VarMitEins%.

Ein g-Label wie z. B. gMeineSubroutine kann in den Optionen des Steuerelements eingefügt werden. Dies führt dazu, dass jedes Mal das Label MeineSubroutine gestartet wird, wenn der Benutzer die CheckBox anklickt oder ändert.

Bekannte Einschränkung: Bestimmte Desktop-Designs können den Text einer CheckBox nicht ordnungsgemäß darstellen. Wenn dies der Fall ist, können Sie versuchsweise -Wrap (minus Wrap) in den Optionen des Steuerelements einfügen. Dadurch wird allerdings auch verhindert, dass das Steuerelement mehr als eine Textzeile enthalten kann.

Radio

Beschreibung: Ein Optionsfeld in Form eines kleinen leeren Kreises, das ein- oder ausgeschaltet sein kann.

Zum Beispiel:

Gui, Add, Radio, vMeineRadioGruppe, Artikel erst versenden, wenn sie auf Lager sind.

Erscheinungsbild:

Radio

Solche Steuerelemente befinden sich üblicherweise in Radio-Gruppen, die jeweils aus zwei oder mehr Radio-Buttons bestehen. Klickt der Benutzer einen Radio-Button an, um ihn einzuschalten, werden alle anderen Radio-Buttons in der Gruppe automatisch ausgeschaltet (der Benutzer kann zudem mit den Pfeiltasten innerhalb einer Gruppe navigieren). Eine Radio-Gruppe wird automatisch erstellt und umfasst eine Reihe von nacheinander erstellten Radio-Buttons. Um eine neue Gruppe zu beginnen, fügen Sie das Wort Group in den Optionen des ersten Radio-Buttons ein -- oder fügen Sie dazwischen einfach ein Steuerelement ein, das kein Radio-Button ist, um automatisch eine neue Gruppe beginnen zu lassen.

Der letzte Parameter ist die Beschriftung auf der rechten Seite des Radio-Buttons. Diese Beschriftung dient üblicherweise dazu, dem Benutzer eine Frage zu stellen oder die Funktion des Radio-Buttons zu beschreiben, und kann Zeilenumbruchszeichen (`n) zum Starten neuer Zeilen enthalten. Wenn in Optionen eine Breite (W) angegeben ist, aber keine 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 Optionen ein, um den Button vorerst im eingeschalteten Zustand darzustellen. Direkt nach dem Wort Checked kann optional eine 0 oder 1 erfolgen, um den Startzustand zu bestimmen: 0 für ausgeschaltet und 1 für eingeschaltet. Mit anderen Worten: Checked ist das gleiche wie Checked%VarMitEins%.

Die zugeordnete Ausgabevariable des Radio-Buttons (falls vorhanden) wird auf 1 gesetzt, wenn das Steuerelement eingeschaltet ist, oder auf 0, wenn es ausgeschaltet ist. Wenn jedoch nur einem Mitglied einer Radio-Gruppe eine Variable zugeordnet wurde, enthält diese Variable stattdessen die Nummer des aktuell eingeschalteten Radio-Buttons: 1 ist der erste Radio-Button (gemäß der originalen Erstellungsreihenfolge), 2 ist der zweite und so weiter. Wenn kein einziger Radio-Button eingeschaltet ist, wird 0 gespeichert.

Ein g-Label wie z. B. gMeineSubroutine kann in den Optionen des Steuerelements eingefügt werden. Dies führt dazu, dass jedes Mal das Label MeineSubroutine gestartet wird, wenn der Benutzer den Radio-Button einschaltet. Das g-Label muss, im Gegensatz zum Einzelvariablenmodus im vorherigen Abschnitt, für jeden Radio-Button in einer Gruppe angegeben werden, bei dem das Label gestartet werden soll. Dadurch können auf einfache Weise Klicks bestimmter Radio-Buttons ignoriert werden. Ein Doppelklick kann durch Überprüfen der internen Variable A_GuiEvent erkannt werden.

Bekannte Einschränkung: Bestimmte Desktop-Designs können den Text eines Radio-Buttons nicht ordnungsgemäß darstellen. Wenn dies der Fall ist, können Sie versuchsweise -Wrap (minus Wrap) in den Optionen des Steuerelements einfügen. Dadurch wird allerdings auch verhindert, dass das Steuerelement mehr als eine Textzeile enthalten kann.

Beschreibung: Eine aufklappbare Liste mit Auswahlmöglichkeiten. Geben Sie im letzten Parameter eine Liste in Form von Auswahl1|Auswahl2|Auswahl3 an.

Zum Beispiel:

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

Erscheinungsbild:

DDL

Fügen Sie zwei Vertikalstriche an, um einen Listeneintrag im Steuerelement vorab auszuwählen (z. B. Rot|Grün||Blau). Alternativ können Sie in Optionen das Wort Choose einfügen und direkt danach die Nummer des Listeneintrags angeben, der vorab ausgewählt sein soll. Choose5 beispielsweise bewirkt, dass der fünfte Listeneintrag vorab ausgewählt wird (wie bei anderen Optionen auch kann hier eine Variable genutzt werden, wie z. B. Choose%Var%). Mit GuiControl kann, nachdem das Steuerelement erstellt wurde, ein anderer Listeneintrag ausgewählt oder Listeneinträge hinzugefügt/entfernt werden.

Fügen Sie das Wort Uppercase oder Lowercase in Optionen ein, um alle Listeneinträge automatisch in Groß- oder Kleinbuchstaben umzuwandeln. Fügen Sie das Wort Sort ein, um die Listeneinträge automatisch in alphabetischer Reihenfolge zu sortieren (das hat auch Einfluss auf Listeneinträge, die nachträglich via GuiControl hinzugefügt werden). Die Sort-Option ermöglicht zudem eine inkrementelle Suche, wenn die Liste aufgeklappt ist; diese Suche erlaubt die Auswahl eines Listeneintrags durch Eingabe der ersten Zeichen seines Namens.

Nutzen Sie Gui Submit, um den Text des aktuell ausgewählten Listeneintrags in die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) zu speichern. Wenn das Steuerelement allerdings die AltSubmit-Eigenschaft hat, wird die Ausgabevariable stattdessen auf die Positionsnummer des Listeneintrags gesetzt (der erste Eintrag ist 1, der zweite 2 und so weiter).

Ein g-Label wie z. B. gMeineSubroutine kann in den Optionen des Steuerelements eingefügt werden. Dies führt dazu, dass jedes Mal das Label MeineSubroutine gestartet wird, wenn der Benutzer einen anderen Listeneintrag auswählt.

Verwenden Sie die R- oder H-Option, um die Höhe der aufklappbaren Liste zu bestimmen. R5 beispielsweise macht die Liste 5 Zeilen hoch, während H400 die Gesamthöhe des Auswahlfeldes und der Liste auf 400 Pixel setzt. Lässt man R und H weg, wird die Liste automatisch auf Basis der verfügbaren Höhe des Desktops vergrößert (allerdings werden Betriebssysteme älter als Windows XP die Liste standardmäßig 3 Zeilen hoch machen).

Das folgende Beispiel zeigt, wie die Höhe des Auswahlfeldes oder die Höhe jedes Listeneintrags mithilfe der CB_SETITEMHEIGHT-Meldung geändert werden kann:

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

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.

ComboBox

Beschreibung: Eine aufklappbare Liste mit Auswahlmöglichkeiten und ein Eingabefeld zum Eintragen eines formatlosen Textes.

Zum Beispiel:

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

Erscheinungsbild:

ComboBox

Zusätzlich zu den DropDownList-Optionen weiter oben kann das Wort Limit in Optionen eingefügt werden, um die Benutzereingabe auf die sichtbare Breite des Eingabefeldes der ComboBox zu beschränken. Zudem kann das Wort Simple eingefügt werden, um die aufklappbare Liste der ComboBox als ListBox unterhalb des Eingabefeldes darzustellen.

Nutzen Sie Gui Submit, um den Text des aktuell ausgewählten Listeneintrags in die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) zu speichern. Wenn das Steuerelement allerdings die AltSubmit-Eigenschaft hat, wird die Ausgabevariable stattdessen auf die Positionsnummer des Listeneintrags gesetzt (der erste Eintrag ist 1, der zweite 2 und so weiter). In beiden Fällen wird, wenn kein Listeneintrag ausgewählt ist, die Ausgabevariable auf den Inhalt des Eingabefeldes der ComboBox gesetzt.

Ein g-Label wie z. B. gMeineSubroutine kann in den Optionen des Steuerelements eingefügt werden. Dies führt dazu, dass jedes Mal das Label MeineSubroutine gestartet wird, wenn der Benutzer einen anderen Listeneintrag auswählt.

ListBox

Beschreibung: Ein Listenfeld mit Auswahlmöglichkeiten. Geben Sie im letzten Parameter eine Liste in Form von Auswahl1|Auswahl2|Auswahl3 an.

Zum Beispiel:

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

Erscheinungsbild:

ListBox

Fügen Sie jeweils zwei Vertikalstriche an, um einen oder mehrere Listeneinträge vorab auszuwählen (zum Auswählen mehrere Listeneinträge ist die Multi-Option notwendig). Alternativ können Sie in Optionen das Wort Choose einfügen und direkt danach die Nummer des Listeneintrags angeben, der vorab ausgewählt sein soll. Choose5 beispielsweise bewirkt, dass der fünfte Listeneintrag vorab ausgewählt wird. Mit GuiControl kann, nachdem das Steuerelement erstellt wurde, die aktuelle Auswahl geändert oder Listeneinträge hinzugefügt/entfernt werden.

Nutzen Sie Gui Submit, um den Text des aktuell ausgewählten Listeneintrags in die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) zu speichern. Wenn das Steuerelement allerdings die AltSubmit-Eigenschaft hat, wird die Ausgabevariable stattdessen auf die Positionsnummer des Listeneintrags gesetzt (der erste Eintrag ist 1, der zweite 2 und so weiter).

Ein g-Label wie z. B. gMeineSubroutine kann in den Optionen des Steuerelements eingefügt werden. Dies führt dazu, dass jedes Mal das Label MeineSubroutine gestartet wird, wenn der Benutzer einen anderen Listeneintrag auswählt. Wenn der Benutzer einen Listeneintrag doppelt anklickt, enthält die interne Variable A_GuiEvent die Zeichenkette DoubleClick statt Normal. Zusätzlich enthält die interne Variable A_EventInfo die Positionsnummer des doppelt angeklickten Listeneintrags (1 ist der erste Eintrag, 2 der zweite und so weiter).

Um das Hinzufügen sehr vieler Listeneinträge leistungsfähiger zu machen, verwenden Sie GuiControl, -Redraw, MeineListBox, bevor Sie die Operation durchführen, und danach GuiControl, +Redraw, MeineListBox.

ListBox-Optionen

Choose: Siehe oben.

Multi: Erlaubt das Auswählen mehrerer Listeneinträge mit UMSCHALT oder STRG modifizierten Klicks (um eine Mehrfachauswahl ohne diesen Modifikatoren zu ermöglichen, müssen Sie stattdessen die Nummer 8 angeben). In diesem Fall speichert Gui Submit eine via Vertikalstrich getrennte Liste von Eintragsnamen in die zugeordnete Ausgabevariable des Steuerelements. Wenn das Steuerelement allerdings die AltSubmit-Eigenschaft hat, wird Gui Submit stattdessen eine via Vertikalstrich getrennte Liste von Eintragsnummern speichern. 1|2|3 beispielsweise bedeutet, dass die ersten drei Listeneinträge ausgewählt sind. Das folgende Beispiel zeigt, wie man mit einer parsenden Schleife einzelne Listeneinträge aus der Zeichenkette extrahieren kann:

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

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.

ReadOnly: Verhindert, dass Listeneinträge beim Auswählen farblich hervorgehoben werden (Gui Submit speichert aber weiterhin die ausgewählten Listeneinträge).

Sort: Sortiert die Listeneinträge automatisch in alphabetischer Reihenfolge (das hat auch Einfluss auf Listeneinträge, die nachträglich via GuiControl hinzugefügt werden). Die Sort-Option ermöglicht zudem eine inkrementelle Suche, mit der ein Listeneintrag durch Eingabe der ersten Zeichen seines Namens ausgewählt werden kann.

Tn: Mit dem Buchstaben T können Tabstopps gesetzt werden, um den Text in Spalten aufzuteilen. Wenn der Buchstabe T nicht verwendet wird, werden Tabstopps auf je 32 Dialogeinheiten gesetzt (die Breite jeder "Dialogeinheit" ist systemintern festgelegt). Wenn der Buchstabe T nur einmal verwendet wird, werden Tabstopps auf je n Dialogeinheiten innerhalb der verfügbaren Breite des Steuerelements gesetzt. Gui, Add, ListBox, vMeineListBox t64 beispielsweise verdoppelt den Standardabstand zwischen den Tabstopps. Geben Sie den Buchstaben T mehrmals wie folgt an, um benutzerdefinierte Tabstopps zu setzen: Gui, Add, ListBox, vMeineListBox t8 t16 t32 t64 t128. Für jede absolute Spaltenposition in der Liste wird ein Tabstopp gesetzt, bis zu einem Maximum von 50 Tabstopps.

0x100: Fügen Sie 0x100 in Optionen ein, um den LBS_NOINTEGRALHEIGHT-Style einzuschalten. Dieser Style bewirkt, dass die ListBox in der angegebenen Höhe sein muss. Wenn dieser Style nicht verwendet wird, wird die Höhe entsprechend angepasst, damit die Zeile am Listenende vollständig zu sehen ist. Dieser Style verhindert zudem, dass die ListBox automatisch nach Ändern der Schrift kleiner gemacht wird.

Optionen zum Ändern der Anzahl von Textzeilen (oder der Höhe und Breite) finden Sie unter Position und Größe von Steuerelementen anpassen.

ListView und TreeView

Mehr dazu finden Sie auf den separaten Seiten ListView und TreeView.

Beschreibung: Ein Text-Steuerelement, das anklickbare Links enthalten kann. Link-Steuerelemente verwenden eine HTML-ähnliche Markup-Sprache, die aktuell aber nur das A-Tag unterstützen. 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://www.autohotkey.com">Link</a>
Gui, Add, Link,, Links können überall im Text angegeben werden, wie <a id="A">hier</a> oder <a id="B">dort</a>

Erscheinungsbild:

Link

Wenn das HREF-Attribut angegeben ist und einen gültigen Wert in Form eines ausführbaren Befehls oder einer URL enthält, wird dieser über dem 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, allerdings werden diese nicht vom Link-Steuerelement, sondern vom Webbrowser des Benutzers interpretiert.

Ein g-Label wie z. B. gMeineSubroutine kann in den Optionen des Steuerelements eingefügt werden. Dies führt dazu, dass jedes Mal das Label gestartet wird, wenn der Benutzer einen Link ohne HREF-Attribut anklickt oder wenn der Befehl oder die URL nicht ausgeführt werden konnte. Die Subroutine kann auf folgende Variablen zurückgreifen:

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

MeineFunktion(StrlmntHwnd, GuiEreignis, LinkIndex, HrefOderID)

Hotkey

Beschreibung: Ein Eingabefeld, das der Benutzer zur Eingabe einer Tastenkombination verwenden kann, die später als Hotkey dienen soll. Drückt der Benutzer beispielsweise Strg+Alt+C auf der deutschen Tastatur, würde dies dazu führen, dass "STRG + ALT + C" im Eingabefeld angezeigt wird.

Zum Beispiel:

Gui, Add, Hotkey, vGewählterHotkey

Erscheinungsbild:

Hotkey

Nutzen Sie Gui Submit, um die Modifikatoren und den Namen des Hotkeys, die kompatibel mit dem Hotkey-Befehl sind, in die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) zu speichern. 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 verschiedene Namen abgerufen werden. Zum Beispiel wird sowohl ^Numpad7 als auch ^NumpadHome als "STRG + 7 (ZEHNERTASTATUR)" erkannt.

Standardmäßig ist das Steuerelement vorerst leer. Um das zu ändern, können Sie im letzten Parameter eine Tastenkombination in Form von Modifikatorsymbolen und einem Tastennamen angeben; zum Beispiel: Gui, Add, Hotkey, vGewählterHotkey, ^!p. Die einzigen unterstützten Modifikatoren sind ^ (STRG), ! (ALT) und + (UMSCHALT). Weitere verfügbare Tastennamen finden Sie in der Tastenliste.

Ein g-Label wie z. B. gMeineSubroutine kann in den Optionen des Steuerelements eingefügt werden. Dies führt dazu, dass jedes Mal das Label MeineSubroutine gestartet wird, wenn der Benutzer den Hotkey ändert. Außerdem wird jedes Mal, wenn das g-Label gestartet wird, der Hotkey in die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) gespeichert.

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

Fügen Sie das Wort Limit ein, gefolgt von einer beliebigen Summe folgender Zahlen, um die Benutzereingabe auf bestimmte Hotkeys zu beschränken:

Limit1 beispielsweise verhindert, dass der Benutzer modifikatorlose Hotkeys wie z. B. Buchstaben und Zahlen eingeben kann, während Limit15 mindestens zwei Modifikatortasten voraussetzt. Gibt der Benutzer eine verbotene Modifikatorkombination ein, wird diese automatisch und visuell mit Strg+Alt ersetzt.

Das Hotkey-Steuerelement hat nur begrenzte Möglichkeiten. Zum Beispiel unterstützt es keine Maus/Joystick-Hotkeys oder Win (LWin und RWin). Stellen Sie stattdessen eine oder mehrere CheckBoxen zur Verfügung, die der Benutzer verwenden kann, um zusätzliche Modifikatoren wie z. B. Win zu aktivieren.

DateTime

Beschreibung: Ein Eingabefeld, das der Benutzer zur Eingabe eines Datums und/oder einer Uhrzeit verwenden kann. Ein ausklappbarer Kalender ist ebenfalls vorhanden.

Zum Beispiel:

Gui, Add, DateTime, vMeinDateTime, LongDate

Erscheinungsbild:

DateTime

Der letzte Parameter kann eines der folgenden Dinge sein:

(nicht vorhanden): Verwendet das kurze Datumsformat, welches in den Sprach- und Regionseinstellungen des Benutzers definiert ist. Zum Beispiel: 01.06.2005

LongDate: Verwendet das lange Datumsformat, welches in den Sprach- und Regionseinstellungen des Benutzers definiert ist. Zum Beispiel: Mittwoch, 1. Juni 2005

Time: Verwendet das Uhrzeitformat, welches in den Sprach- und Regionseinstellungen des Benutzers definiert ist. Obwohl das Datum nicht angezeigt wird, ist es dennoch im Steuerelement vorhanden und wird zusammen mit der Uhrzeit im YYYYMMDDHH24MISS-Format abgerufen. Zum Beispiel: 21:37:45

(benutzerdefiniertes Format): Geben Sie eine beliebige Kombination von Datums- und Uhrzeitformaten an. d.M.yy HH:mm beispielsweise repräsentiert die Schreibweise 1.6.05 21:37. dddd MMMM d, yyyy hh:mm:ss repräsentiert die Schreibweise Mittwoch Juni 1, 2005 09:37:45. Buchstaben und Zahlen, die direkt angezeigt werden sollen, müssen wie folgt in einfache Anführungszeichen gesetzt werden: 'Datum:' dd.MM.yy 'Zeit:' hh:mm:ss tt. Nicht-alphanumerische Zeichen wie Leerzeichen, Tabulatoren, Schrägstriche, Doppelpunkte, Kommas und sonstige Satzzeichen müssen hingegen nicht in einfache Anführungszeichen gesetzt werden. Die Ausnahme ist das einfache Anführungszeichen selbst: Um es darzustellen, benötigen Sie vier aufeinanderfolgende einfache Anführungszeichen (''''), oder nur zwei, wenn das Anführungszeichen bereits von einem äußeren Paar von Anführungszeichen umschlossen ist.

DateTime-Verwendung

Wenn anstelle des heutigen Datums ein anderes vorab ausgewählt sein soll, muss in Optionen das Wort Choose eingefügt und direkt danach ein Datum im YYYYMMDD-Format angegeben werden. Choose20050531 beispielsweise bewirkt, dass der 31. Mai 2005 vorab ausgewählt wird (wie bei anderen Optionen auch kann hier eine Variable genutzt werden, wie z. B. Choose%Var%). Fügen Sie ChooseNone ein, damit weder das heutige Datum noch ein anderes ausgewählt ist. ChooseNone stattet das Steuerelement zudem mit einer CheckBox aus, die zu Beginn im nicht-abgehakten Zustand angezeigt wird. Wenn kein Datum im Steuerelement ausgewählt ist, wird Gui Submit und GuiControlGet einen leeren Wert (leere Zeichenkette) abrufen.

Die Uhrzeit des Tages kann auch angegeben werden. Allerdings genügt es nicht, nur den Zeitbereich des Zeitstempels zu verwenden - der Datumsbereich muss ebenfalls vorhanden sein. Das Format des Zeitbereichs ist HH24MISS (Stunden, Minuten, Sekunden). HH24 repräsentiert hierbei eine Stunde im 24-Stunden-Format; zum Beispiel 09 für 9 Uhr früh oder 21 für 9 Uhr abends. Die resultierende Datum-Zeit-Zeichenkette ist im YYYYMMDDHH24MISS-Format.

Bei Datumsangaben im YYYYMMDDHH24MISS-Format ist nur der beginnende Teil erforderlich. Die restlichen weggelassenen Elemente werden mit folgenden Standardwerten ersetzt: MM mit Monat 01, DD mit Tag 01, HH24 mit Stunde 00, MI mit Minute 00 und SS mit Sekunde 00.

Das Heute-Feld im unteren Bereich des ausklappbaren Kalenders kann angeklickt werden, um das heutige Datum auszuwählen. Das Monat-Jahr-Feld im oberen Bereich ist nützlich, um einen anderen Monat oder ein anderes Jahr anzusteuern.

Navigation mit der Tastatur: Mit den Pfeiltasten /, den Ziffernblocktasten +/- und Pos1/Ende können die Werte des Steuerelements erhöht oder verringert werden. Verwenden Sie und , um innerhalb des Steuerelements von einem Feld zum anderen zu gelangen. Nutzen Sie innerhalb des ausklappbaren Kalenders die Pfeiltasten, um von einem Tag zum anderen zu gelangen; Bild↑/Bild↓, um zum vorherigen/nächsten Monat zu wechseln; Strg+Bild↑/Bild↓, um zum vorherigen/nächsten Jahr zu wechseln (wird nur in Windows XP oder niedriger unterstützt); und Pos1/Ende, um den ersten/letzten Tag des Monats auszuwählen.

Nutzen Sie Gui Submit, um das Datum und die Uhrzeit des aktuell ausgewählten Feldes als YYYYMMDDHH24MISS-Zeichenkette in die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) zu speichern. Die Zeichenkette enthält immer das Datum und die Uhrzeit, egal ob diese tatsächlich im Steuerelement sichtbar sind oder nicht.

Das g-Label des Steuerelements (falls vorhanden) wird jedes Mal gestartet, wenn der Benutzer das Datum oder die Uhrzeit ändert. Außerdem wird jedes Mal, wenn es gestartet wird, das Datum oder die Uhrzeit des aktuell ausgewählten Feldes in die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) gespeichert.

DateTime-Optionen

Choose: Siehe oben.

Range: Beschränkt die Datumsauswahl auf einem bestimmten Zeitraum. Geben Sie nach dem Wort Range das Start- und Enddatum im YYYYMMDD-Format an (mit einem Bindestrich dazwischen). Range20050101-20050615 beispielsweise bewirkt, dass nur innerhalb der ersten 5,5 Monate des Jahres 2005 ein Datum ausgewählt werden darf. Das Start- oder Enddatum kann weggelassen werden, um die Auswahl im Steuerelement nur in eine Richtung zu beschränken. Range20010101 beispielsweise verhindert, dass ein Datum vor 2001 ausgewählt werden kann, während Range-20091231 (Bindestrich am Anfang) verhindert, dass ein Datum nach 2009 ausgewählt werden kann. Fehlt diese Option, kann ein beliebiges Datum zwischen den Jahren 1601 und 9999 ausgewählt werden. Die Uhrzeit des Tages kann nicht eingeschränkt werden.

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

1: Fügen Sie eine 1 in Optionen ein, um rechts neben dem Steuerelement ein UpDown-Steuerelement zum Ändern von Datum-Zeit-Werten zur Verfügung zu stellen, das die Schaltfläche zum Aufklappen des Monatskalenders ersetzt. Funktioniert nicht mit der oben beschriebenen LongDate-Option.

2: Fügen Sie eine 2 in Optionen ein, um das Steuerelement mit einer CheckBox auszustatten, die der Benutzer zur Angabe keines Datums oder keiner Uhrzeit in den nicht-abgehakten Zustand versetzen kann. Diese Option kann nicht mehr geändert werden, nachdem das Steuerelement erstellt wurde.

Farben im ausklappbaren Kalender: Die Farben der Tageszahlen im ausklappbaren Kalender richten sich nach den Farben, die via Gui Font oder c-Option festgelegt wurden. Das folgende Beispiel zeigt, wie die Farben der anderen Bereiche des Kalenders geändert werden können:

Gui +LastFound
SendMessage, 0x1006, 4, 0xFFAA99, SysDateTimePick321 ; 0x1006 ist DTM_SETMCCOLOR. 4 ist MCSC_MONTHBK (Hintergrundfarbe). Die Farbe muss im BGR- statt RGB-Format angegeben werden (rote und blaue Komponenten sind vertauscht).

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.

Zum Beispiel:

Gui, Add, MonthCal, vMeinKalender

Erscheinungsbild:

MonthCal

Wenn anstelle des heutigen Datums ein anderes vorab ausgewählt sein soll, muss im letzten Parameter ein Datum im YYYYMMDD-Format angegeben werden (z. B. 20050531). Wenn ein Datumsbereich vorab ausgewählt sein soll, muss ein Datum, ein Bindestrich und noch ein Datum angegeben werden (z. B. 20050525-20050531).

In der Regel lohnt es sich nicht, Breite (W) und Höhe (H) für ein MonthCal-Steuerelement zu definieren, denn es passt automatisch seine Größe an, um genau einen Monat darzustellen. Mit R2 oder höher in Optionen können mehrere übereinander angeordnete Monate dargestellt werden. Mit W-2 (W minus 2) oder höher können mehrere nebeneinander angeordnete Monate dargestellt werden. Diese Optionen können gleichzeitig vorhanden sein, um das Steuerelement in beide Richtungen zu erweitern.

Das Heute-Feld im unteren Bereich des Steuerelements kann angeklickt werden, um das heutige Datum auszuwählen. Das Monat-Jahr-Feld im oberen Bereich ist nützlich, um einen anderen Monat oder ein anderes Jahr auszuwählen.

Navigation mit der Tastatur: In Windows Vista und höher wird die Tastaturnavigation im MonthCal-Steuerelement vollständig unterstützt, sofern es den Tastaturfokus hat. Welche Tastaturkurzbefehle unterstützt werden, finden Sie unter DateTime-Tastaturnavigation (innerhalb des ausklappbaren Kalenders).

Nutzen Sie Gui Submit, um das Datum des aktuell ausgewählten Feldes als YYYYMMDD-Zeichenkette (ohne den Zeitbereich HH24MISS) in die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) zu speichern. Falls die Mehrfachauswahl-Option aktiv ist, wird stattdessen das Start- und Enddatum gespeichert, mit einem Bindestrich dazwischen (z. B. 20050101-20050108). Wählt man in einem Kalender mit aktiver Mehrfachauswahl nur ein einziges Datum aus, sind Start- und Enddatum identisch. Mit StrSplit() oder StringSplit können Start- und Enddatum voneinander getrennt werden. Die folgende Beispielanweisung speichert das Startdatum in Datum1 und das Enddatum in Datum2: StringSplit, Datum, MeinMonthCal, -.

Jedes Mal, wenn das g-Label des Steuerelements (falls vorhanden) gestartet wird, wird das aktuell ausgewählte Datum oder der aktuell ausgewählte Datumsbereich in die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) gespeichert. Standardmäßig wird das Label nur gestartet, wenn der Benutzer die Auswahl ändert. In Windows XP und niedriger wird zudem das Label aufgrund einer Eigenart des Betriebssystems alle zwei Minuten gestartet, für den Fall, dass ein neuer Tag beginnt. Wenn allerdings das Wort AltSubmit in den Optionen des Steuerelements vorhanden ist, wird das g-Label häufiger gestartet und die interne Variable A_GuiEvent auf das Wort Normal gesetzt, wenn das Datum geändert wurde; auf 1, wenn ein Datum angeklickt wurde; und auf 2, wenn die Maustaste im Steuerelement losgelassen wurde. Klickt der Benutzer beispielsweise zweimal auf ein neues Datum, wird das Label fünfmal gestartet: Einmal mit Normal, zweimal mit 1 und zweimal mit 2. Misst man den zeitlichen Abstand zwischen den Vorkommen der Nummer 1, können so Doppelklicks erkannt werden.

Bei Datumsangaben im YYYYMMDD-Format kann MM und/oder DD weggelassen werden, um zu bewirken, dass diese jeweils als 1 interpretiert werden. 200205 beispielsweise wird als 20020501 behandelt, und 2005 als 20050101.

MonthCal-Optionen

Multi: Mehrfachauswahl. Ermöglicht dem Benutzer, mit UMSCHALT modifizierte Klicks oder durch Ziehen des Mauszeigers einen Bereich angrenzender Datumsfelder auszuwählen (der Benutzer kann aber weiterhin ein einzelnes Datum auswählen). Diese Option wird automatisch wirksam, wenn ein Datumsbereich im letzten Parameter angegeben ist. Zum Beispiel: Gui, Add, MonthCal, vMeinKalender, 20050101-20050108. Diese Option kann nicht mehr geändert werden, nachdem das Steuerelement erstellt wurde.

Range: Beschränkt die Datumsauswahl auf einem bestimmten Zeitraum. Geben Sie nach dem Wort Range das Start- und Enddatum im YYYYMMDD-Format an (mit einem Bindestrich dazwischen). Range20050101-20050615 beispielsweise bewirkt, dass nur innerhalb der ersten 5,5 Monate des Jahres 2005 ein Datum oder Datumsbereich ausgewählt werden darf. Das Start- oder Enddatum kann weggelassen werden, um die Auswahl im Kalender nur in eine Richtung zu beschränken. Range20010101 beispielsweise verhindert, dass ein Datum vor 2001 ausgewählt werden kann, während Range-20091231 (Bindestrich am Anfang) verhindert, dass ein Datum nach 2009 ausgewählt werden kann. Fehlt diese Option, kann ein beliebiges Datum zwischen den Jahren 1601 und 9999 ausgewählt werden.

4: Fügen Sie eine 4 in Optionen ein, um Wochennummern (1-52) auf der linken Seite jeder Tageszeile anzuzeigen. Woche 1 ist laut Definition die erste Woche mit mindestens vier Tage.

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

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

Farben: Die Farben der Tageszahlen im Kalender richten sich nach den Farben, die via Gui Font oder c-Option festgelegt wurden. Das folgende Beispiel zeigt, wie die Farben der anderen Bereiche des Kalenders geändert werden können:

Gui +LastFound
SendMessage, 0x100A, 5, 0xFFAA99, SysMonthCal321 ; 0x100A ist MCM_SETCOLOR. 5 ist MCSC_TITLETEXT (Farbe des Titeltextes). Die Farbe muss im BGR- statt RGB-Format angegeben werden (rote und blaue Komponenten sind vertauscht).

Slider

Beschreibung: Ein Regler, den der Benutzer entlang einer vertikalen oder horizontalen Linie verschieben kann. Ein typischer Schieberegler ist zum Beispiel der Lautstärkeregler im Tray-Bereich der Taskleiste.

Zum Beispiel:

Gui, Add, Slider, vMeinSchieberegler, 50

Erscheinungsbild:

Slider

Geben Sie im letzten Parameter die Startposition des Schiebereglers an. Wenn der letzte Parameter weggelassen wird oder leer ist, beginnt der Schieberegler bei 0 oder beim niedrigsten zulässigen Bereichswert.

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.

Nutzen Sie Gui Submit, um die aktuelle numerische Position des Schiebereglers in seine zugeordnete Ausgabevariable (falls vorhanden) zu speichern. Die Position wird auch in die Ausgabevariable gespeichert, wenn das g-Label des Steuerelements gestartet wird.

Das g-Label des Schiebereglers (falls vorhanden) wird standardmäßig nur gestartet, wenn der Benutzer aufgehört hat, den Regler zu verschieben (z. B. beim Loslassen der Maus nach einem Ziehvorgang). Wenn allerdings das Wort AltSubmit in den Optionen des Steuerelements vorhanden ist, wird das g-Label häufiger gestartet und die interne Variable A_GuiEvent auf eine der folgenden Zahlen oder Zeichenketten gesetzt:

Slider-Optionen

Buddy1 und Buddy2: Bestimmt bis zu zwei existierende Steuerelemente, die automatisch an beiden Enden des Schiebereglers positioniert werden. 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. Geben Sie nach dem Wort Buddy1 oder Buddy2 den Variablennamen eines existierenden Steuerelements an. Buddy1MeinObertext beispielsweise bewirkt, dass das Steuerelement mit dem Variablennamen MeinObertext zugewiesen wird.

Center: Der Regler (verschiebbare Knopf) ist nicht wie üblich an einem Ende spitzförmig, sondern wird als Rechteck dargestellt.

Invert: Dreht das Steuerelement um; das heißt, dass zum Verringern des Wertes der Regler nach rechts/unten statt nach links/oben verschoben werden muss. Dies wird typischerweise verwendet, um einen vertikalen Schieberegler zu einem klassischen Lautstärkeregler zu machen. Hinweis: Die unten beschriebene ToolTip-Option ignoriert diese Invertierung und ist daher in diesem Fall nutzlos.

Left: Der Regler (verschiebbare Knopf) ist nicht wie üblich am unteren, sondern oberen Ende spitzförmig. Wenn die Vertical-Option aktiv ist, ist der Regler links statt rechts spitzförmig.

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

NoTicks: Entfernt die Teilstriche entlang der Linie.

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

Range: Setzt den Bereich auf etwas anderes als 0 bis 100. Geben Sie nach dem Wort Range den Minimal- und Maximalwert an (mit einem Bindestrich dazwischen). Range1-1000 beispielsweise erlaubt eine Zahl zwischen 1 und 1000; 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 Reglers (verschiebbare Knopf). Geben Sie nach dem Wort Thick die Dicke in Pixel an (z. B. Thick30). Um in Windows XP oder höher den Regler dicker zu machen, 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 in regelmäßigen Abständen Teilstriche entlang der Linie an. Geben Sie nach dem Wort TickInterval das Intervall an, wie oft die Teilstriche angezeigt werden sollen (wenn das Intervall nie gesetzt wurde, gilt standardmäßig 1). Je kleiner das Intervall, desto mehr Teilstriche werden gesetzt. TickInterval10 beispielsweise zeigt einen Teilstrich an je 10 Positionen an.

ToolTip: Erstellt einen Tooltip, der die numerische Position des Schiebereglers meldet, während der Benutzer den Regler mit der Maus zieht. Um den Tooltip auf eine unübliche Position anzuzeigen, muss stattdessen eines der folgenden Wörter angegeben werden: ToolTipLeft oder ToolTipRight (für vertikale Schieberegler); ToolTipTop oder ToolTipBottom (für horizontale Schieberegler).

Vertical: Bewirkt, dass der Regler hoch oder runter statt nach links oder rechts geschoben werden muss.

Alle oben genannten Optionen können via GuiControl geändert werden, nachdem das Steuerelement erstellt wurde.

Progress

Beschreibung: Ein zweifarbiger Balken, der den Fortschritt einer Operation visuell darstellt.

Zum Beispiel:

Gui, Add, Progress, w200 h20 cBlue vMeinFortschritt, 75

Erscheinungsbild:

Progress

Geben Sie im letzten Parameter die Startposition des Balkens an (lässt man diese weg, beginnt der Balken bei 0 oder beim niedrigsten zulässigen Bereichswert). Die Position des Balkens kann später wie folgt geändert werden (basierend auf einem Fortschrittsbalken mit dem zugeordneten Variablennamen MeinFortschritt):

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

Bei horizontalen Fortschrittsbalken ist die Dicke des Balkens identisch zur Höhe des Steuerelements. Bei vertikalen Fortschrittsbalken ist sie identisch zur 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), wird die Standardbalkenfarbe des Systems verwendet.

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 Background-Option nie verwendet wird (oder BackgroundDefault angegeben ist), wird die Hintergrundfarbe des Fensters oder die des dahinterliegenden Tab-Steuerelements verwendet.

Range: Setzt den Bereich auf etwas anderes als 0 bis 100. Geben Sie nach dem Wort Range den Minimal- und Maximalwert an (mit einem Bindestrich dazwischen). Range0-1000 beispielsweise erlaubt Zahlen zwischen 0 und 1000; Range-50-50 Zahlen zwischen -50 und 50; und Range-10--5 Zahlen zwischen -10 und -5.

Smooth: Geben Sie -Smooth (minus Smooth) an, um den Fortschrittsbalken nicht als durchgehenden Balken, sondern in mehreren Segmenten darzustellen. In Windows XP oder höher ist -Smooth zudem eine der Voraussetzungen, um einen Fortschrittsbalken im aktuellen Windows-Design darzustellen. 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 steigt oder fällt, statt sich horizontal zu bewegen.

Alle oben genannten Optionen können via GuiControl geändert werden, nachdem das Steuerelement erstellt wurde.

GroupBox

Beschreibung: Ein rechteckiger Rahmen, der in der Regel mehrere Steuerelemente umschließt, um ihre Zusammengehörigkeit zu verdeutlichen. Geben Sie im letzten Parameter den Titel des Rahmens an, der in der oberen linken Ecke angezeigt werden soll.

Zum Beispiel:

Gui, Add, GroupBox, w200 h100, Geographische Kriterien

Erscheinungsbild:

GroupBox

Standardmäßig darf der Titel einer GroupBox nur eine Textzeile enthalten. Um mehrere Zeilen zu erlauben, muss Wrap in Optionen eingefügt werden.

Optionen zum Ändern der Anzahl von Zeilen innerhalb des Steuerelements (oder der Höhe und Breite) finden Sie unter Position und Größe von Steuerelementen anpassen.

Tab3

Beschreibung: Ein großes Steuerelement, das dazu dient, auf mehreren Ebenen unterschiedliche Steuerelemente anzuzeigen. Von nun an werden diese Ebenen "Tabs" genannt.

Es gibt drei Arten von Tab-Steuerelementen:

Zum Beispiel:

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

Erscheinungsbild:

Tab

Geben Sie im letzten Parameter eine via Vertikalstrich getrennte Liste von Tabnamen an. Fügen Sie zwei Vertikalstriche an, um einen Tab im Steuerelement vorab auszuwählen (z. B. Rot|Grün||Blau). Alternativ können Sie in Optionen das Wort Choose einfügen und direkt danach die Nummer des Tabs angeben, der vorab ausgewählt sein soll. Choose5 beispielsweise bewirkt, dass der fünfte Tab vorab ausgewählt wird (wie bei anderen Optionen auch kann hier eine Variable genutzt werden, wie z. B. Choose%Var%). Mit GuiControl kann, nachdem das Steuerelement erstellt wurde, ein anderer Tab ausgewählt oder Tabs hinzugefügt/entfernt werden.

Standardmäßig werden alle Steuerelemente, die nach dem Erstellen eines Tab-Steuerelements hinzugefügt werden, dem ersten Tab zugeordnet. Das kann jederzeit wie folgt geändert werden:

Gui, Tab  ; Zukünftige Steuerelemente werden keinem Tab-Steuerelement zugeordnet.
Gui, Tab, 3  ; Zukünftige Steuerelemente werden dem dritten Tab des aktuellen Tab-Steuerelements zugeordnet.
Gui, Tab, 3, 2  ; Zukünftige Steuerelemente werden dem dritten Tab des zweiten Tab-Steuerelements zugeordnet.
Gui, Tab, Name  ; Zukünftige Steuerelemente werden einem Tab zugeordnet, dessen Name mit Name beginnt (nicht Groß-/Kleinschreibung-sensitiv).
Gui, Tab, Name,, Exact  ; Das gleiche wie oben, aber mit exakter Übereinstimmung (und Groß-/Kleinschreibung-sensitiv).

Es ist auch möglich, jedes dieser Beispiele oben (außer Name) zu nutzen, um Steuerelemente einem nicht-existierenden Tab oder Tab-Steuerelement zuzuordnen. In diesem Fall aber werden die unten beschriebenen Optionen zur relativen Positionierung nicht unterstützt.

Positionierung: Das erste untergeordnete Steuerelement eines Tabs bekommt standardmäßig eine spezielle Position zugewiesen, wenn: 1) die X- und Y-Koordinate weggelassen werden - in diesem Fall wird das erste untergeordnete Steuerelement in die obere linke Innenecke des Tab-Steuerelements positioniert (mit vordefinierten Abständen) und nachfolgende untergeordnete Steuerelemente unterhalb des vorherigen Steuerelements positioniert; 2) die Positionierungsoptionen X+n und/oder Y+n angegeben sind - in diesem Fall wird das untergeordnete Steuerelement relativ zur oberen linken Innenecke des Tab-Steuerelements positioniert. Die Angabe von x+10 y+10 beispielsweise bewirkt, dass das Steuerelement von der oberen linken Ecke aus 10 Pixel nach rechts und 10 Pixel nach unten positioniert wird.

V: Nutzen Sie Gui Submit, um den Namen des aktuell ausgewählten Tabs in die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) zu speichern. Wenn das Steuerelement allerdings die AltSubmit-Eigenschaft hat, wird die Ausgabevariable stattdessen auf die Positionsnummer des Tabs gesetzt (der erste Tab ist 1, der zweite ist 2 und so weiter).

G: Ein g-Label wie gMeineSubroutine kann in den Optionen des Steuerelements eingefügt werden. Dies führt dazu, dass jedes Mal das Label MeineSubroutine gestartet wird, wenn der Benutzer einen anderen Tab auswählt. Jedes Mal, wenn das g-Label des Tab-Steuerelements (falls vorhanden) gestartet wird, wird der Name (oder bei AltSubmit die Nummer) des zuvor ausgewählten Tabs in die zugeordnete Ausgabevariable des Tab-Steuerelements (falls vorhanden) gespeichert.

Navigation mit der Tastatur: Der Benutzer kann Strg+Bild↑/Bild↓ drücken, um von Tab zu Tab zu navigieren; befindet sich der Tastaturfokus auf einem Steuerelement, das keinem Tab-Steuerelement zugeordnet ist, wird das erste Tab-Steuerelement des Fensters angesteuert. Strg+Tab und Strg+Umschalt+Tab können auch genutzt werden, allerdings werden diese nicht funktionieren, wenn das aktuell fokussierte Steuerelement ein mehrzeiliges Eingabefeld ist.

Einschränkungen: Jedes Fenster kann höchstens 255 Tab-Steuerelemente enthalten. Jedes Tab-Steuerelement kann höchstens 256 Tabs (Ebenen) enthalten. Es ist nicht möglich, ein Tab-Steuerelement in ein anderes Tab-Steuerelement einzufügen.

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. Ein untergeordnetes Steuerelement innerhalb eines existierenden Tab3-Steuerelements verwendet als übergeordnetes Fenster das sogenannte "Tab-Dialogfenster", welches den Anzeigebereich des Tab-Steuerelements ausfüllt. Alle anderen Steuerelemente, einschließlich der untergeordneten Steuerelemente von Tab oder Tab2, verwenden nur das GUI-Fenster selbst als übergeordnetes Fenster.

Positionierung: Untergeordnete Steuerelemente von Tab und Tab2 müssen sich nicht unbedingt im Anzeigebereich des Tab-Steuerelements befinden; sie werden weiterhin versteckt bzw. sichtbar gemacht, wenn ihr Tab aus- oder abgewählt wird. Dieses Verhalten ist besonders für die unten beschriebene Buttons-Option nützlich.

Weist man untergeordnete Steuerelemente einem nicht-existierenden Tab3-Steuerelement zu, hat dies den Effekt, als würde man diese einem Tab- oder Tab2-Steuerelement zuweisen. Alle anderen untergeordneten Steuerelemente sind nur im Anzeigebereich des Tab-Steuerelements sichtbar.

Wenn ein Tab3-Steuerelement verschoben wird, werden die darin befindlichen untergeordneten Steuerelemente auch verschoben. Dieses Verhalten trifft nicht auf Tab- und Tab2-Steuerelemente zu.

Sollte der seltene Fall auftreten, dass WinMove (oder ein äquivalentes DllCall) zum Verschieben eines Steuerelements genutzt wird, müssen die Koordinaten relativ zum übergeordneten Fenster des Steuerelements sein, das nicht unbedingt die GUI selbst ist (siehe oben). Nutzt man hingegen GuiControl Move oder ControlMove, werden die Koordinaten der GUI bzw. des Fensters verwendet, unabhängig vom übergeordneten Fenster des Steuerelements.

Größenberechnung: Wenn das Tab3-Steuerelement keine spezifische Breite und/oder Höhe hat, werden diese automatisch berechnet, sobald eines der folgenden Dinge nach dem Erstellen des Steuerelements erfolgt:

Zum Errechnen der Größe werden untergeordnete Steuerelemente, die bereits existieren, plus Standardabstände einbezogen. Die Größenberechnung erfolgt nur ein einziges Mal, egal ob später neue Steuerelemente hinzugefügt werden. Wenn das Tab3-Steuerelement leer ist, bekommt es wie Tab oder Tab2 eine Standardgröße zugewiesen.

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

Navigationsreihenfolge via TAB: Die Navigationsreihenfolge via Tab ist abhängig davon, in welcher Reihenfolge die Steuerelemente erstellt wurden. Bei Tab-Steuerelementen ist die Navigationsreihenfolge zudem abhängig vom Typ des Tab-Steuerelements:

Benachrichtigungsmeldungen (Tab3): Gewöhnliche und benutzerdefinierte Steuerelemente senden in der Regel Benachrichtigungsmeldungen an ihre übergeordneten Fenster. Gesendete WM_COMMAND-, WM_NOTIFY-, WM_VSCROLL-, WM_HSCROLL- oder WM_CTLCOLOR...-Meldungen an das Tab-Dialogfenster eines Tab3-Steuerelements werden an das GUI-Fenster weitergeleitet und können via OnMessage() erkannt und verarbeitet werden. Wenn das Tab-Steuerelement das aktuelle Windows-Design verwendet und das untergeordnete Steuerelement ohne BackgroundTrans-Option erstellt wurde, wird WM_CTLCOLORSTATIC vom Tab-Dialogfenster verarbeitet 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: Geben Sie -Background (minus Background) an, um die benutzerdefinierte Hintergrundfarbe des Fensters zu überschreiben und die für Tab-Steuerelemente verwendete Standardfarbe des Systems zu nutzen. Geben Sie +Theme -Background an, um das Tab-Steuerelement an das aktuelle Desktop-Design anzupassen. Allerdings führt dies dazu, dass die meisten Steuerelemente im Tab-Steuerelement merkwürdig dargestellt werden, da ihr Hintergrund nicht mit dem des Tab-Steuerelements übereinstimmt. Um dieses Problem zumindest bei einigen Steuerelementen (wie z. B. Text) zu beheben, können Sie BackgroundTrans in den Optionen des jeweiligen Steuerelements einfügen.

Buttons: Erstellt im oberen Bereich des Steuerelements eine Reihe von Schaltflächen anstelle von Tabs (in diesem Fall ist der Rahmen standardmäßig nicht vorhanden, weil der Anzeigebereich in der Regel keine Steuerelemente enthält).

Left/Right/Bottom: Geben Sie eines dieser Wörter an, um die Tabs nicht wie üblich im oberen, sondern im linken, rechten oder unteren Bereich des Steuerelements anzuzeigen. Bei Left und Right sind Einschränkungen zu beachten; siehe TCS_VERTICAL.

Wrap: Geben Sie -Wrap (minus Wrap) an, um zu verhindern, dass die Tabs mehr als eine Zeile beanspruchen (wenn aus Platzgründen nicht alle Tabs angezeigt werden können, werden zwei Pfeile als Schaltflächen bereitgestellt, die der Benutzer drücken kann, um zum gewünschten Tab zu scrollen).

Optionen zum Ändern der Anzahl von Textzeilen innerhalb des Steuerelements (oder der Höhe und Breite) finden Sie unter Position und Größe von Steuerelementen anpassen.

Tabs mit Symbolen: Mit SendMessage kann ein Symbol neben dem Tabnamen angezeigt werden. Mehr dazu finden Sie im Forumsbeitrag Icons in tabs.

StatusBar [v1.0.44+]

Beschreibung: Eine Leiste mit Text und/oder Symbolen am unteren Rand eines Fensters, die üblicherweise verwendet wird, um geänderte Zustände zu melden.

Zum Beispiel:

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

Erscheinungsbild:

StatusBar

Für eine einfache Statusleiste genügt es, SB_SetText() aufzurufen, um dem Benutzer mitzuteilen, das sich etwas geändert hat. Um mehr als eine Information zu melden, kann die Leiste via SB_SetParts() in mehrere Segmente aufgeteilt werden. Mit SB_SetIcon() können Symbole in die Leiste eingefügt werden.

StatusBar-Funktionen

Alle folgenden Funktionen agieren mit dem 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 innerhalb eines bestimmten Segments der Statusleiste an.

SB_SetText(NeuerText , SegmentNummer, Style)

Lässt man SegmentNummer weg, wird standardmäßig das erste Segment verwendet. Ansonsten kann ein Integer im Bereich von 1 bis 256 angegeben werden. Lässt man Style weg, wird standardmäßig 0 verwendet; das heißt, dass das Segment einen klassischen Rahmen verwendet bzw. aussieht, als wäre es im abgesenkten Zustand. Ansonsten kann 1 angegeben werden, um das Segment ohne Rahmen darzustellen, oder 2, um das Segment aussehen zu lassen, als wäre es im angehobenen Zustand. Es können bis zu zwei Tabulatorzeichen (`t) in NeuerText verwendet werden: alles, was sich rechts neben dem ersten Tabulatorzeichen befindet, wird innerhalb des Segments zentriert, und alles, was sich rechts neben dem zweiten Tabulatorzeichen befindet, wird rechtsbündig gemacht. SB_SetText() gibt bei Erfolg eine 1 und bei Misserfolg eine 0 zurück.

SB_SetParts

Teilt die Leiste anhand bestimmter Breiten (in Pixel) in mehrere Segmente auf.

SB_SetParts(Breite1, Breite2, ... Breite255)

Wenn alle Parameter weggelassen werden, wird der Urzustand der Leiste (ein einzelnes, langes Segment) wiederhergestellt. Ansonsten können die Breiten von neuen Segmenten angegeben werden; beachten Sie aber, dass für die Breite des letzten Segments automatisch die verbliebene Leistenbreite verwendet wird. SB_SetParts(50, 50) beispielsweise erstellt drei Segmente: Die ersten zwei mit einer Breite von 50 und das letzte mit der verbliebenen Breite.

Hinweis: Alle via SB_SetParts() "entfernte" Segmente werden, sobald sie wieder angezeigt werden, vorerst ohne Text dargestellt (außerdem werden ihre Symbole automatisch zerstört).

Diese Funktion gibt bei Erfolg die HWND-Nummer (eindeutige ID) der Statusleiste zurück. Bei Misserfolg gibt sie 0 zurück.

SB_SetIcon

Zeigt ein kleines Symbol links neben dem Text eines bestimmten Segments an.

SB_SetIcon(DateiName , SymbolNummer, SegmentNummer)

Lässt man SegmentNummer weg, wird standardmäßig das erste Segment verwendet. DateiName ist der Name eines Symbols (.ICO), Cursors (.CUR) oder animierten Cursors (.ANI) (zurzeit werden animierte Cursor in der Leiste nicht wirklich animiert). Folgende Dateitypen sind auch für Symbole geeignet: EXE, DLL, CPL, SCR und andere Typen, die Symbolressourcen enthalten. Um anstelle der ersten Symbolgruppe eine andere in der Datei zu nutzen, müssen Sie für SymbolNummer die entsprechende Nummer angeben. SB_SetIcon("Shell32.dll", 2) beispielsweise lädt das Standardsymbol aus der zweiten Symbolgruppe. Wenn SymbolNummer negativ ist, wird der absolute Wert dieser Nummer als Ressourcen-ID eines Symbols innerhalb einer ausführbaren Datei vermutet. Diese Funktion gibt bei Erfolg den Icon-Handle (HICON) des Symbols und bei Misserfolg eine 0 zurück. Der Icon-Handle (HICON) ist eine Systemressource, die für die meisten Skripte nicht relevant ist und automatisch zerstört wird, sobald das Fenster der Statusleiste zerstört wird. Außerdem wird ein altes Symbol automatisch zerstört, wenn es via SB_SetIcon() mit einem neuen ersetzt wird. Dies kann wie folgt verhindert werden:

Gui +LastFound
SendMessage, 0x040F, SegmentNummer - 1, HICON, msctls_statusbar321  ; 0x040F ist SB_SETICON.

[v1.1.23+]: Anstelle eines Dateinamens kann auch ein Icon-Handle (HICON) verwendet werden. Zum Beispiel SB_SetIcon("HICON:" handle).

[v1.1.27+]: Nicht-Symbol-Bilder und Bitmap-Handles (HBITMAP) werden für 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.

StatusBar-Verwendung

G-Label-Benachrichtigungen: Ein g-Label wie gMeineSubroutine kann in den Optionen des Steuerelements eingefügt werden. Dies führt dazu, dass jedes Mal das Label MeineSubroutine gestartet wird, wenn der Benutzer die Leiste anklickt. Diese Subroutine hat Zugriff auf die internen Variablen A_Gui und A_GuiControl. Noch wichtiger ist, dass sie auf A_GuiEvent zugreifen kann, die eine der folgenden Zeichenketten enthält (für die Kompatibilität mit zukünftigen Versionen sollte ein Skript nicht davon ausgehen, dass das die einzigen möglichen Werte sind):

Schrift und Farbe: Obwohl Schriftgröße, Schriftart und Schriftstil über Gui Font festgelegt werden können (wie bei den meisten anderen Steuerelementen auch), kann die Textfarbe nicht geändert werden. Außerdem wird Gui Color ignoriert; um die Hintergrundfarbe der Statusleiste auf andere Weise zu ändern, können Sie in Optionen das Wort Background einfügen und direkt danach einen Farbnamen (siehe Farbentabelle) oder RGB-Wert (das 0x-Präfix ist optional) angeben. Beispiele: BackgroundSilver, BackgroundFFDD99, BackgroundDefault. Beachten Sie, dass das Steuerelement das klassische Design haben muss. Daher muss in Windows XP oder höher die -Theme-Option zusammen mit der Background-Option, z. B. -Theme BackgroundSilver, angegeben werden.

Statusleiste verstecken: Um die Leiste bereits bei ihrer Erstellung zu verstecken, können Sie Gui, Add, StatusBar, Hidden vMeineStatusleiste verwenden. Um die Leiste irgendwann nach ihrer Erstellung zu verstecken, können Sie GuiControl, Hide, vMeineStatusleiste verwenden. Mit GuiControl, Show, vMeineStatusleiste kann sie wieder sichtbar gemacht werden. Hinweis: Die Höhe des Fensters wird nicht reduziert, wenn die Leiste versteckt wird. Falls das gewünscht ist, verwenden Sie einfach Gui, Show, AutoSize.

Styles (selten verwendet): Weitere Styles finden Sie in der Style-Tabelle der Statusleiste.

Bekannte Einschränkungen: 1) Wenn die Statusleiste andere Steuerelemente überlappt, kann es vorkommen, dass diese Steuerelemente die Statusleiste überdecken. Um das zu verhindern, gibt es zum Beispiel die Möglichkeit, solche Steuerelemente mit dem GuiSize-Label dynamisch verkleinern zu lassen. 2) Jedes Fenster kann höchstens eine Statusleiste enthalten.

Beispiel: Beispiel #1 im unteren Bereich der TreeView-Seite zeigt eine segmentierte Statusleiste.

ActiveX [v1.1.03+]

ActiveX-Komponenten wie das MSIE-Browser-Steuerelement können wie folgt in ein GUI-Fenster eingebettet werden. Einzelheiten über die hier verwendete ActiveX-Komponente und ihre Methode finden Sie unter WebBrowser object (Microsoft Docs) und Navigate method (Microsoft Docs).

Gui Add, ActiveX, w980 h640 vWB, Shell.Explorer  ; Der letzte Parameter ist der Name der ActiveX-Komponente.
WB.Navigate("https://www.autohotkey.com/docs/")  ; Nur für das Web-Browser-Steuerelement anwendbar.
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.

Um die Ereignisse des Objekts zu verarbeiten, verwenden Sie ComObjConnect() wie folgt. Einzelheiten über das hier verwendete Ereignis finden Sie unter NavigateComplete2 event (Microsoft Docs).

Gui Add, Edit, w930 r1 vURL, https://www.autohotkey.com/docs/
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 enthalten ist.

Custom [v1.1.10+]

Bietet die Möglichkeit, ein AutoHotkey-fremdes Steuerelement in ein GUI-Fenster einzubetten. Um das zu bewerkstelligen, müssen Sie in Optionen das Wort Class einfügen und direkt danach den Win32-Klassennamen des gewünschten Steuerelements angeben. Beispiele:

Gui, Add, Custom, ClassComboBoxEx32  ; ComboBoxEx-Steuerelement.
Gui, Add, Custom, ClassScintilla  ; Scintilla-Steuerelement. Die SciLexer.dll-Bibliothek muss vorab geladen sein.

AutoHotkey verwendet die Standard-Text-Routinen des Systems, wenn Texte im Steuerelement via Gui Add, GuiControl oder GuiControlGet abgerufen/ersetzt werden.

G-Label-Benachrichtigungen: Ein g-Label wie gMeineSubroutine kann in den Optionen des Steuerelements eingefügt werden, um Ereignisse des Steuerelements abzufangen und zu verarbeiten. Diese Subroutine hat Zugriff auf die internen Variablen A_Gui und A_GuiControl. Noch wichtiger ist, dass sie auf A_GuiEvent zugreifen kann, die eine der folgenden Zeichenketten enthält (für die Kompatibilität 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 := 0x0400
    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 := 0x0400
    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")
}

ListView, TreeView, Gui, GuiControl, GuiControlGet, Menu