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 die darzustellende Zeichenkette an. 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, blaue 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 das Tastenkürzel Alt+V aktiviert wird. Dieses Tastenkürzel 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. Die Angabe von r3 in Optionen bewirkt beispielsweise, 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 letzte 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 via Strg+A den gesamten Text im Eingabefeld 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 alle darin enthaltenen Steuerelemente und erstellen Sie es danach wieder; oder 2) Erstellen Sie zwei überlappende Eingabefelder, das eine mit automatischen 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 an ein Eingabefeld angehängtes 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. Jedes Mal, 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 (wenn dieser fehlt oder leer ist, 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.

Wenn das UpDown-Steuerelement ein g-Label hat, wird es gestartet, wann immer 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. Nach dem Wort Range können Sie den Minimal- und Maximalwert angeben (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: Bewirkt, dass ein vertikales UpDown-Steuerelement isoliert bzw. vom Buddy-Steuerelement getrennt wird. Dies bewirkt auch, dass sich das Steuerelement nicht an die Größe des Buddy-Steuerelements anpasst, sondern eine eigene Breite, Höhe und Position 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 dezimale Ziffern im Buddy-Steuerelement 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).

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. Im folgenden Beispiel wird das Standardsymbol aus der zweiten Symbolgruppe geladen: 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 das Tastenkürzel 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, wird der 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 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 Reihen (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 Häkchen vorhanden ist, auf 0, wenn das Häkchen fehlt, oder auf -1, wenn das Häkchen 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 das Häkchen der CheckBox weder gesetzt ist noch fehlt). Fügen Sie das Wort Checked oder CheckedGray in Optionen ein, um die CheckBox zu Beginn 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. In diesem Fall ist Checked 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 dieses Steuerelements nicht ordnungsgemäß darstellen. Wenn dies der Fall ist, können Sie versuchsweise -Wrap in den Optionen des Steuerelements einfügen. Dadurch wird allerdings auch verhindert, dass das Steuerelement mehr als eine Textzeile enthalten kann.

Radio

Ein Optionsfeld in Form eines kleinen leeren Kreises, das markiert (An) oder nicht markiert (Aus) 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 zu Beginn 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. In diesem Fall ist Checked das gleiche wie Checked%VarMitEins%.

Die zugeordnete Ausgabevariable des Radio-Buttons (falls vorhanden) wird auf 1 gesetzt, wenn die Markierung vorhanden ist, oder auf 0, wenn die Markierung fehlt. 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 dieses Steuerelements nicht ordnungsgemäß darstellen. Wenn dies der Fall ist, können Sie versuchsweise -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 Elements angeben, das 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 Reihen hoch, während H400 die Gesamthöhe des Auswahlfeldes und der Liste auf 400 Pixel setzt. Sind R und H nicht vorhanden, 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 Reihen 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 = 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 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, das 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 performanter zu machen, können Sie vor der Operation GuiControl, -Redraw, MeineListBox und nach der Operation GuiControl, +Redraw, MeineListBox verwenden.

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 Reihe 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://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 dem Benutzer ermöglicht, eine Tastenkombination zu bestimmen, die als Hotkey verwendet werden 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 zu Beginn 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. 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 eines Datums und/oder einer Uhrzeit akzeptiert. Ein ausklappbarer Kalender ist ebenfalls vorhanden.

Zum Beispiel:

Gui, Add, DateTime, vMeinDateTime, LongDate

Erscheinungsbild:

DateTime

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%). Geben Sie ChooseNone an, um das Steuerelement anzuzeigen, ohne dass ein Datum oder eine Uhrzeit vorab ausgewählt ist. Zudem erstellt ChooseNone innerhalb des Steuerelements eine CheckBox, deren Häkchen standardmäßig nicht gesetzt ist, wenn kein Datum im Steuerelement ausgewählt ist. Wenn kein Datum im Steuerelement ausgewählt ist, wird Gui Submit und GuiControlGet einen leeren Wert (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 sind 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.

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. 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 Uhrzeit ändert. Jedes Mal, wenn es gestartet wird, wird das aktuell ausgewählte Datum inklusive Uhrzeit in die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) gespeichert.

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 Monate 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 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 den Optionen ein, um die rechts befindliche Schaltfläche des aufklappbaren Monatskalenders mit einem UpDown-Steuerelement zum Ändern von Datum-Zeit-Werten zu ersetzen. Funktioniert nicht in Verbindung mit LongDate.

2: Fügen Sie eine 2 in Optionen ein, um im Steuerelement eine CheckBox bereitzustellen, die der Benutzer verwenden kann, um kein Datum oder keine Uhrzeit anzugeben. 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.

Zum Beispiel:

Gui, Add, MonthCal, vMeinKalender

Erscheinungsbild:

MonthCal

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 sind 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.

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. 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 und dieses Label gestartet wird, wird jedes Mal 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: 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 Monate 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 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.

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.

Zum Beispiel:

Gui, Add, Slider, vMeinSlider, 50

Erscheinungsbild:

Slider

Geben Sie im letzten Parameter die Startposition des Schiebereglers an. Wenn der letzte Parameter fehlt 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.

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 Teilstriche 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: Setzt den Bereich auf etwas anderes als 0 bis 100. Nach dem Wort Range können Sie den Minimal- und Maximalwert angeben (mit einem Bindestrich dazwischen). 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 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 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.

Zum Beispiel:

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

Erscheinungsbild:

Progress

Geben Sie im letzten Parameter die Startposition des Balkens an (wenn dieser fehlt oder leer ist, beginnt der Balken bei 0 oder beim niedrigsten zulässigen 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: Setzt den Bereich auf etwas anderes als 0 bis 100. Nach dem Wort Range können Sie den Minimal- und Maximalwert angeben (mit einem Bindestrich dazwischen). 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: Stellt den Fortschrittsbalken nicht als durchgehenden Balken, sondern in mehreren Segmenten dar. 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. Geben Sie im letzten Parameter den Titel des Rahmens an, der in der oberen linken Ecke angezeigt wird, falls vorhanden.

Zum Beispiel:

Gui, Add, GroupBox, w200 h100, Geographische Kriterien

Erscheinungsbild:

GroupBox

Standardmäßig kann der Titel einer GroupBox nur einzeilig sein. Das kann durch die Angabe von Wrap in den Optionen des Steuerelements überschrieben 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 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:

Zum Beispiel:

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

Erscheinungsbild:

Tab

Im oberen Beispiel enthält der letzte Parameter eine via Vertikalstrich getrennte Liste von Tabnamen. 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 Elements angeben, 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 (nicht Groß-/Kleinschreibung-sensitiv).
Gui, Tab, Name,, Exact  ; Das gleiche wie oben, aber mit exakter Übereinstimmung (sowie Groß-/Kleinschreibung-sensitiv).

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: 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. 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 Steuerelemente merkwürdig im Tab-Steuerelement dargestellt, weil deren Hintergründe nicht mit dem Hintergrund des Tab-Steuerelements übereinstimmen. Bei einigen Steuerelementen (wie Text) kann das Problem behoben werden, wenn BackgroundTrans in deren Optionen eingefügt wird.

Buttons: Erstellt eine Reihe von Schaltflächen 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 Schaltflächen mit Pfeilen angezeigt, die der Benutzer drücken kann, um zwischen den Tabs zu wechseln).

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.

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.

Zum Beispiel:

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

Erscheinungsbild:

StatusBar

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 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 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 rechtsbündig gemacht. 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 in der Datei zu nutzen, müssen Sie für Symbolnummer die entsprechende Nummer angeben. 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 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 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 Farbentabelle) 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