GUI-Steuerelemente

GUI-Steuerelemente sind Interaktionselemente, die via Gui Add in ein GUI-Fenster eingefügt werden können.

Inhaltsverzeichnis

ActiveX [v1.1.03+]

ActiveX-Komponenten wie das MSIE-Browser-Steuerelement können wie folgt in ein GUI-Fenster eingebettet werden. Einzelheiten zu der hier verwendeten ActiveX-Komponente und ihren Methoden 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 zu dem hier verwendeten 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)  ; WB-Ereignisse mit dem WB_events-Klassenobjekt verbinden.
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.

Button

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

Zum Beispiel:

Gui, Add, Button, Default w80, OK

Erscheinungsbild:

Button

Das obige Beispiel enthält das Wort Default in dessen Optionen, um "OK" zur Standardschaltfläche zu machen. 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, gehen Sie wie folgt vor: GuiControl, +Default, Abbrechen. Um das Fenster später so zu ändern, dass es keine Standardschaltfläche hat, gehen Sie wie folgt vor: GuiControl, -Default, OK.

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

Gui, Add, Button,, &Pause

Das obige Beispiel führt dazu, dass der Buchstabe P unterstrichen und der Tastaturkurzbefehl Alt+P aktiviert wird. Um ein direkt geschriebenes Und-Zeichen anzuzeigen, geben Sie zwei aufeinanderfolgende Und-Zeichen (&&) an.

Wenn die Schaltfläche kein explizites g-Label hat, bekommt die Schaltfläche automatisch ein Label zugewiesen. Enthält das erste GUI-Fenster beispielsweise eine OK-Schaltfläche, wird das ButtonOK-Label (falls vorhanden) beim Drücken der Schaltfläche gestartet. Bei anderen GUI-Fenstern, die nicht das erste sind, muss die Fensternummer vor dem automatischen Label der Schaltfläche angegeben werden, z.B. 2ButtonOK.

Wenn der Name der Schaltfläche Leerzeichen oder Zeichen aus dem Satz &`r`n`t` enthält, werden diese Zeichen beim automatischen Label weggelassen. Zum Beispiel kann für eine Schaltfläche namens "&Pause" das automatische Label ButtonPause verwendet werden. Ebenso kann für eine Schaltfläche namens "Speichern && Beenden" das automatische Label ButtonSpeichernBeenden verwendet werden (die zwei Und-Zeichen dienen zur Darstellung eines einzelnen Und-Zeichens).

Bekannte Einschränkung: Bestimmte Desktop-Designs können den Text einer Schaltfläche nicht ordnungsgemäß darstellen. Sollte dies der Fall sein, versuchen Sie, -Wrap (minus Wrap) in die Optionen des Steuerelements einzufügen. Dies verhindert aber auch, dass mehr als eine Textzeile angezeigt wird.

CheckBox

Ein Kästchen, das durch Setzen oder Entfernen eines Häkchens für Ein/Aus, Ja/Nein usw. verwendet werden kann.

Zum Beispiel:

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

Erscheinungsbild:

CheckBox

Geben Sie im letzten Parameter die Beschriftung an, die rechts neben dem Kästchen angezeigt werden soll. Diese Beschriftung dient in der Regel als Aufforderung oder Beschreibung und kann LF-Zeichen (`n) zum Starten neuer Zeilen enthalten. Wenn in Optionen eine Breite (W), aber keine Zeilen (R) oder Höhe (H) angegeben ist, werden Textzeilen bei Bedarf umbrochen und die Höhe des Steuerelements automatisch gesetzt. Die zugeordnete Ausgabevariable des CheckBox-Steuerelements (falls vorhanden) wird auf 1 gesetzt, wenn es eingeschaltet ist, auf 0, wenn es ausgeschaltet 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 ein- noch ausgeschaltet 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 angegeben werden, um den Startzustand zu bestimmen. Mit anderen Worten, Checked ist dasselbe wie Checked%VarMitEins%.

Es ist möglich, ein g-Label wie z.B. gMeineSubroutine in den Optionen des Steuerelements anzugeben. Dadurch wird jedes Mal, wenn der Benutzer die CheckBox anklickt oder ändert, das Label MeineSubroutine gestartet.

Bekannte Einschränkung: Bestimmte Desktop-Designs können den Text einer CheckBox nicht ordnungsgemäß darstellen. Sollte dies der Fall sein, versuchen Sie, -Wrap (minus Wrap) in die Optionen des Steuerelements einzufügen. Dies verhindert aber auch, dass mehr als eine Textzeile angezeigt wird.

ComboBox

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 oben kann das Wort Limit in Optionen eingefügt werden, um die Benutzereingabe auf die sichtbare Breite des Eingabefeldes der ComboBox zu beschränken. Außerdem kann das Wort Simple eingefügt werden, um die aufklappbare Liste der ComboBox als ListBox unterhalb des Eingabefeldes darzustellen.

Wenn Sie Gui Submit verwenden, wird der Text des aktuell ausgewählten Listeneintrags in die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) gespeichert. 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 usw.). In beiden Fällen wird, wenn kein Listeneintrag ausgewählt ist, die Ausgabevariable auf den Inhalt des Eingabefeldes der ComboBox gesetzt.

Es ist möglich, ein g-Label wie z.B. gMeineSubroutine in den Optionen des Steuerelements anzugeben. Dadurch wird jedes Mal, wenn der Benutzer einen anderen Listeneintrag auswählt, das Label MeineSubroutine gestartet.

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-Textroutinen des Systems beim Abrufen/Setzen von Texten im Steuerelement via Gui Add, GuiControl oder GuiControlGet.

G-Label-Benachrichtigungen: Es ist möglich, ein g-Label wie z.B. gMeineSubroutine in den Optionen des Steuerelements anzugeben, um Ereignisse des Steuerelements abzufangen und zu verarbeiten. Diese Subroutine kann die internen Variablen A_Gui und A_GuiControl verwenden. Noch wichtiger ist, dass sie A_GuiEvent verwenden 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 einzig 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) " ausgewä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.

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

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

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

    ; IP-Adresse in ein 32-Bit-Wort zur Nutzung mit SendMessage packen.
    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")
}

DateTime

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

Für den letzten Parameter kann Folgendes angegeben werden:

(weggelassen): Verwendet das kurze Datumsformat gemäß den aktuellen Sprach- und Regionseinstellungen des Benutzers. Zum Beispiel: 01.06.2005

LongDate: Verwendet das lange Datumsformat gemäß den aktuellen Sprach- und Regionseinstellungen des Benutzers. Zum Beispiel: Mittwoch, 1. Juni 2005

Time: Verwendet das Zeitformat gemäß den aktuellen Sprach- und Regionseinstellungen des Benutzers. Obwohl das Datum nicht angezeigt wird, ist es im Steuerelement vorhanden und wird zusammen mit der Zeit im YYYYMMDDHH24MISS-Format abgerufen. Zum Beispiel: 21:37:45

(benutzerdefiniertes Format): Geben Sie eine beliebige Kombination von Datums- und Zeitformaten an. Zum Beispiel bewirkt d.M.yy HH:mm, dass 1.6.05 21:37 angezeigt wird, oder dddd MMMM d, yyyy hh:mm:ss, dass Mittwoch Juni 1, 2005 09:37:45 angezeigt wird. 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 andere Satzzeichen müssen hingegen nicht in einfache Anführungszeichen gesetzt werden. Eine Ausnahme bildet das einfache Anführungszeichen selbst: Um es darzustellen, sind vier aufeinanderfolgende einfache Anführungszeichen ('''') erforderlich, oder nur zwei, wenn das Anführungszeichen bereits von einem äußeren Anführungszeichenpaar umschlossen ist.

DateTime-Verwendung

Wenn ein anderes Datum als das heutige vorab ausgewählt sein soll, fügen Sie in Optionen das Wort Choose gefolgt von einem Datum im YYYYMMDD-Format ein. Zum Beispiel bewirkt Choose20050531, dass der 31. Mai 2005 vorab ausgewählt wird (wie bei anderen Optionen kann das auch eine Variable sein, 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 vorerst eingeschaltet ist. Wenn kein Datum im Steuerelement ausgewählt ist, wird Gui Submit und GuiControlGet einen leeren Wert (leere Zeichenkette) abrufen.

Die Tageszeit kann ebenfalls angegeben werden. Allerdings genügt es nicht, nur die Zeit anzugeben - das Datum muss ebenfalls vorhanden sein. Das Format der Zeitkomponente ist HH24MISS (Stunden, Minuten, Sekunden), wobei HH24 für das 24-Stunden-Format steht, z.B. 09 für 9 Uhr morgens 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 aufklappbaren Kalenders kann angeklickt werden, um das heutige Datum auszuwählen. Das Monat-Jahr-Feld im oberen Bereich ist nützlich, um zu einem anderen Monat oder Jahr zu navigieren.

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 navigieren. Verwenden Sie innerhalb des ausklappbaren Kalenders die Pfeiltasten, um von einem Tag zum anderen zu navigieren; Bild↑/Bild↓, um zum vorherigen/nächsten Monat zu navigieren; Strg+Bild↑/Bild↓, um zum vorherigen/nächsten Jahr zu navigieren (wird nur in Windows XP oder niedriger unterstützt); und Pos1/Ende, um den ersten/letzten Tag des Monats auszuwählen.

Wenn Sie Gui Submit verwenden, wird das Datum und die Uhrzeit des aktuell ausgewählten Feldes als YYYYMMDDHH24MISS-Zeichenkette in die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) gespeichert. Die Zeichenkette enthält immer das Datum und die Uhrzeit, egal ob diese im Steuerelement tatsächlich 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). Zum Beispiel bewirkt Range20050101-20050615, dass nur ein Datum innerhalb der ersten 5,5 Monate des Jahres 2005 ausgewählt werden kann. Das Start- oder Enddatum kann weggelassen werden, um die Auswahl im Steuerelement nur in eine Richtung zu beschränken. Zum Beispiel bewirkt Range20010101, dass kein Datum vor 2001 ausgewählt werden kann, oder Range-20091231 (Bindestrich am Anfang), dass kein Datum nach 2009 ausgewählt werden kann. Fehlt diese Option, kann ein beliebiges Datum zwischen den Jahren 1601 und 9999 ausgewählt werden. Die Tageszeit kann nicht beschränkt werden.

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

1: Fügen Sie die Zahl 1 in Optionen ein, um rechts vom Steuerelement ein UpDown-Steuerelement zum Ändern von Datum-Zeit-Werten bereitzustellen, das die Schaltfläche zum Aufklappen des Monatskalenders ersetzt. Funktioniert nicht mit der oben beschriebenen LongDate-Option.

2: Fügen Sie die Zahl 2 in Optionen ein, um das Steuerelement mit einer CheckBox auszustatten, die der Benutzer ausschalten kann, um anzugeben, dass kein Datum und keine Uhrzeit ausgewählt ist. Diese Option kann nach der Erstellung des Steuerelements nicht mehr geändert werden.

Farben im aufklappbaren Kalender: Die Farben der Tageszahlen im aufklappbaren Kalender richten sich nach den Farben, die via Gui Font oder c-Option festgelegt wurden. Um die Farben der anderen Bereiche des Kalenders zu ändern, gehen Sie wie folgt vor:

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 (Rot- und Blauanteile sind vertauscht).

Eine aufklappbare Liste mit Auswahlmöglichkeiten. Geben Sie im letzten Parameter eine via Vertikalstrich getrennte Liste wie z.B. 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, gefolgt von der Nummer des Listeneintrags, der vorab ausgewählt sein soll. Zum Beispiel bewirkt Choose5, dass der fünfte Listeneintrag vorab ausgewählt wird (wie bei anderen Optionen kann das auch eine Variable sein, z.B. Choose%Var%). Mit GuiControl kann, nachdem das Steuerelement erstellt wurde, die aktuelle Auswahl geändert 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 (dies hat auch Einfluss auf Listeneinträge, die nachträglich via GuiControl hinzugefügt werden). Die Sort-Option ermöglicht auch eine inkrementelle Suche, wenn die Liste aufgeklappt ist; diese Suche erlaubt die Auswahl eines Listeneintrags durch Eingabe der ersten Zeichen seines Namens.

Wenn Sie Gui Submit verwenden, wird der Text des aktuell ausgewählten Listeneintrags in die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) gespeichert. 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 usw.).

Es ist möglich, ein g-Label wie z.B. gMeineSubroutine in den Optionen des Steuerelements anzugeben. Dadurch wird jedes Mal, wenn der Benutzer einen anderen Listeneintrag auswählt, das Label MeineSubroutine gestartet.

Verwenden Sie die R- oder H-Option, um die Höhe der aufklappbaren Liste zu bestimmen. Zum Beispiel bewirkt R5, dass die Liste 5 Zeilen hoch gemacht wird, oder H400, dass die Gesamthöhe von Auswahlfeld und Liste auf 400 Pixel gesetzt wird. Wenn sowohl R als auch H weggelassen werden, wird die Liste automatisch auf Basis der verfügbaren Höhe des Desktops vergrößert (aber in Betriebssystemen älter als Windows XP wird die Liste standardmäßig 3 Zeilen hoch gemacht).

Das folgende Beispiel zeigt, wie die Höhe des Auswahlfeldes oder die Höhe jedes Listeneintrags mit 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%  ; Höhe des Auswahlfeldes setzen.
PostMessage, 0x0153,  0, 50,, ahk_id %hcbx%  ; Höhe jedes Listeneintrags setzen.
Gui Show, h70, Test

Das Trennzeichen zwischen den Feldern kann mit der GUI-Option +Delimiter auf etwas anderes als den Vertikalstrich geändert werden. Zum Beispiel kann es mit Gui +Delimiter`n in ein LF-Zeichen (`n) oder mit Gui +DelimiterTab in ein Tabulatorzeichen (`t) geändert werden.

Edit

Ein Eingabefeld, das der Benutzer zum Eintragen eines formatlosen Textes verwenden 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. Zum Beispiel bewirkt r3 in Optionen, dass ein dreizeiliges Eingabefeld standardmäßig mit folgenden Eigenschaften erstellt wird: vertikaler Scrollbalken; automatischer Zeilenumbruch; Enter erzeugt einen Zeilenumbruch, anstatt die Standardschaltfläche des Fensters auszulösen.

Fügen Sie im letzten Parameter entweder ein einzelnes LF-Zeichen (`n) oder ein CR-LF-Paar (`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. Wenn Sie jedoch Gui Submit oder GuiControlGet verwenden, um den Inhalt des Steuerelements in dessen zugeordnete Variable zu speichern, wird jedes CR-LF-Paar (`r`n) immer in ein einzelnes LF-Zeichen (`n) übersetzt. Um den Inhalt des Eingabefeldes in eine Datei zu schreiben, gehen Sie wie folgt vor: FileAppend, %MeinEingabefeld%, C:\Gespeicherte Datei.txt.

Ein beim Schreiben verursachter automatischer Zeilenumbruch, sofern aktiv (Standard bei mehrzeiligen Eingabefeldern), ist rein visueller Natur - es werden keine LF-Zeichen erzeugt (nur Enter ist dazu in der Lage).

Es ist möglich, ein g-Label wie z.B. gMeineSubroutine in den Optionen des Steuerelements anzugeben. Dadurch wird jedes Mal, wenn der Benutzer oder das Skript den Inhalt des Steuerelements ändert, das Label MeineSubroutine gestartet.

TIPP: Mit FileRead und GuiControl können Sie den Inhalt einer Textdatei in ein Eingabefeld laden. Zum Beispiel:

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

Edit-Optionen

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

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. Zum Beispiel bewirkt Limit10, dass der Benutzer nur maximal 10 Zeichen in das Eingabefeld eintragen kann.

Lowercase: Alle Zeichen, die der Benutzer einträgt, werden automatisch in Kleinbuchstaben umgewandelt.

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

Number: Verhindert, dass der Benutzer etwas anderes als Zahlen in das Feld eintragen kann (es ist aber immer noch möglich, nicht-numerische Werte via Zwischenablage einzufügen). Eine numerische Benutzereingabe kann auch durch Anfügen eines UpDown-Steuerelements an das Eingabefeld erzwungen werden.

Password: Maskiert die Benutzereingabe (z.B. für eine Passworteingabe), d.h. alle Zeichen, die der Benutzer einträgt, werden mit einem Maskierungszeichen ersetzt. Wenn Sie ein anderes Maskierungszeichen benötigen, geben Sie es direkt nach dem Wort Password an. Zum Beispiel bewirkt Password*, dass das Sternchen als Maskierungszeichen verwendet wird, nicht der seit Windows XP übliche ausgefüllte Kreis. Hinweis: Diese Option funktioniert nicht bei mehrzeiligen Eingabefeldern.

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

Tn: Mit dem Buchstaben T können Tabstopps innerhalb eines mehrzeiligen Eingabefeldes gesetzt werden (Tabstopps sind Sprungmarken für direkt geschriebene Tabulatorzeichen und ermöglichen so eine spaltenweise Formatierung des Textes). 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. Zum Beispiel bewirkt Gui, Add, Edit, vMeinEdit r16 t64 eine Verdopplung des Standardabstands 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: Alle Zeichen, die der Benutzer einträgt, 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 mit 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 trotzdem eine neue Zeile zu beginnen, kann der Benutzer Strg+Enter drücken.

WantTab: Bewirkt, 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 der Erstellung des Steuerelements nicht mehr geändert werden. Um es dennoch zu tun, gibt es folgende Möglichkeiten: 1) Zerstören Sie das Fenster und erstellen Sie es danach neu; oder 2) Erstellen Sie zwei überlappende Eingabefelder, eines mit automatischem Zeilenumbruch und das andere ohne. Der derzeit nicht verwendete 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 ändern.

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.

GroupBox

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 kann der Titel einer GroupBox nur eine Textzeile enthalten. Um mehrere Zeilen zu erlauben, fügen Sie Wrap in Optionen ein.

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 ändern.

Hotkey

Ein Eingabefeld, das der Benutzer zur Eingabe einer Tastenkombination verwenden kann. Wenn der Benutzer z.B. Strg+Alt+C drückt, wird "STRG + ALT + C" im Eingabefeld angezeigt.

Zum Beispiel:

Gui, Add, Hotkey, vGewählterHotkey

Erscheinungsbild:

Hotkey

Wenn Sie Gui Submit verwenden, wird eine Zeichenkette bestehend aus Modifikatorsymbolen und dem Tastennamen in die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) gespeichert. Diese Zeichenkette ist kompatibel mit dem Hotkey-Befehl. Beispiele: ^!C, +!Home, +^Down, ^Numpad1, !NumpadEnd. Wenn das Steuerelement keine Tastenkombination enthält, wird die Ausgabevariable leer gemacht.

Hinweis: Einige Tasten werden unter demselben Namen angezeigt, aber unter verschiedenen Namen abgerufen. Zum Beispiel wird sowohl ^Numpad7 als auch ^NumpadHome als "STRG + 7 (ZEHNERTASTATUR)" angezeigt.

Standardmäßig ist für das Steuerelement zunächst keine Tastenkombination angegeben. Um das zu ändern, geben Sie im letzten Parameter eine Tastenkombination in Form von Modifikatorsymbolen und einem Tastennamen an, z.B. Gui, Add, Hotkey, vGewählterHotkey, ^!p. Es werden nur die Modifikatoren ^ (STRG), ! (ALT) und + (UMSCHALT) unterstützt. Weitere verfügbare Tastennamen finden Sie in der Tastenliste.

Es ist möglich, ein g-Label wie z.B. gMeineSubroutine in den Optionen des Steuerelements anzugeben. Dadurch wird jedes Mal, wenn der Benutzer den Hotkey ändert, das Label MeineSubroutine gestartet. 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 bei einem unvollständigen Hotkey gestartet. Wenn der Benutzer z.B. 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 erneut gestartet und der vollständige Hotkey in die Variable gespeichert.

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

Zum Beispiel bewirkt Limit1, dass der Benutzer keine modifikatorlosen Hotkeys wie z.B. Buchstaben und Zahlen eingeben kann, oder Limit15, dass der Benutzer mindestens zwei Modifikatortasten drücken muss. Gibt der Benutzer eine verbotene Modifikatorkombination ein, wird diese automatisch und visuell mit Strg+Alt ersetzt.

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

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 ausgeführt, als wäre er dem Run-Befehl übergeben worden. 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.

Es ist möglich, ein g-Label wie z.B. gMeineSubroutine in den Optionen des Steuerelements anzugeben. Dies bewirkt, 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 die folgenden Variablen verwenden:

Wenn das g-Label eine Funktion ist, akzeptiert sie folgende Parameter:

MeineFunktion(StrlmntHwnd, GuiEreignis, LinkIndex, HrefOderID)

ListBox

Ein Listenfeld mit Auswahlmöglichkeiten. Geben Sie im letzten Parameter eine via Vertikalstrich getrennte Liste wie z.B. Auswahl1|Auswahl2|Auswahl3 an.

Zum Beispiel:

Gui, Add, ListBox, r5 vFarbauswahl, 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, gefolgt von der Nummer des Listeneintrags, der vorab ausgewählt sein soll. Zum Beispiel bewirkt Choose5, 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.

Wenn Sie Gui Submit verwenden, wird der Text des aktuell ausgewählten Listeneintrags in die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) gespeichert. 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 usw.).

Es ist möglich, ein g-Label wie z.B. gMeineSubroutine in den Optionen des Steuerelements anzugeben. Dadurch wird jedes Mal, wenn der Benutzer einen anderen Listeneintrag auswählt, das Label MeineSubroutine gestartet. Wenn der Benutzer einen Listeneintrag doppelt anklickt, wird die interne Variable A_GuiEvent auf die Zeichenkette DoubleClick statt Normal gesetzt. Außerdem wird die interne Variable A_EventInfo auf die Positionsnummer des doppelt angeklickten Listeneintrags gesetzt (1 ist der erste Eintrag, 2 der zweite usw.).

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

ListBox-Optionen

Choose: Siehe oben.

Multi: Ermöglicht die Auswahl mehrerer Listeneinträge via UMSCHALT- oder STRG-modifizierten Klicks (um eine modifikatorlose Mehrfachauswahl zu ermöglichen, geben Sie die Zahl 8 anstelle des Wortes Multi an). 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, speichert Gui Submit stattdessen eine via Vertikalstrich getrennte Liste von Eintragsnummern. Zum Beispiel bedeutet 1|2|3, dass die ersten drei Listeneinträge ausgewählt sind. Das folgende Beispiel zeigt, wie mit einer parsenden Schleife einzelne Listeneinträge aus der Zeichenkette extrahiert werden können:

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

Das Trennzeichen zwischen den Feldern kann mit der GUI-Option +Delimiter auf etwas anderes als den Vertikalstrich geändert werden. Zum Beispiel kann es mit Gui +Delimiter`n in ein LF-Zeichen (`n) oder mit Gui +DelimiterTab in ein Tabulatorzeichen (`t) geändert 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 (dies hat auch Einfluss auf Listeneinträge, die nachträglich via GuiControl hinzugefügt werden). Die Sort-Option ermöglicht auch 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 eine spaltenweise Formatierung des Textes zu ermöglichen. 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. Zum Beispiel bewirkt Gui, Add, ListBox, vMeineListBox t64 eine Verdopplung des Standardabstands 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 genau die angegebene Höhe hat. Wenn dieser Style nicht verwendet wird, wird die Höhe so angepasst, dass die Zeile am Ende der Liste vollständig sichtbar ist. Außerdem verhindert dieser Style, dass die ListBox automatisch beim Ändern ihrer 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 ändern.

ListView

Die ListView ist eines der umfangreichsten Steuerelemente, das vom Betriebssystem zur Verfügung gestellt wird. Eine ListView (auf Deutsch: Listenansicht) wird häufig verwendet, um eine Tabelle in Form von Zeilen und Spalten darzustellen. Das wohl bekannteste Beispiel dafür ist die detaillierte Auflistung von Dateien und Ordnern im Explorer.

Zum Beispiel:

Gui, Add, ListView, xm r20 w700, Name|Ordner|Größe (KB)|Typ

Erscheinungsbild:

ListView

Weitere Informationen finden Sie auf der separaten ListView-Seite.

MonthCal

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

Zum Beispiel:

Gui, Add, MonthCal, vMeinKalender

Erscheinungsbild:

MonthCal

Wenn ein anderes Datum als das heutige vorab ausgewählt sein soll, geben Sie im letzten Parameter ein Datum im YYYYMMDD-Format an (z.B. 20050531). Ein Datumsbereich kann durch Einfügen eines Bindestrichs zwischen zwei Datumsangaben vorab ausgewählt werden (z.B. 20050525-20050531).

Breite (W) und Höhe (H) sollten bei einem MonthCal-Steuerelement weggelassen werden, da es sich automatisch für die Darstellung genau eines Monats dimensioniert. Um mehrere Monate vertikal darzustellen, geben Sie R2 oder höher in Optionen an. Um mehrere Monate horizontal darzustellen, geben Sie W-2 (W minus 2) oder höher an. 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. Alle unterstützten Tastaturkurzbefehle finden Sie unter DateTime-Tastaturnavigation (innerhalb des aufklappbaren Kalenders).

Wenn Sie Gui Submit verwenden, wird das Datum des aktuell ausgewählten Feldes als YYYYMMDD-Zeichenkette (ohne Zeitkomponente) in die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) gespeichert. Wenn die Mehrfachauswahl-Option aktiv ist, wird stattdessen das Start- und Enddatum mit einem Bindestrich dazwischen gespeichert (z.B. 20050101-20050108). Wenn in einem Mehrfachauswahl-Kalender nur ein Datum ausgewählt wurde, sind Start- und Enddatum zwar vorhanden, aber identisch. Mit StrSplit() oder StringSplit können Start- und Enddatum voneinander getrennt werden. Das folgende Beispiel 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 das Label aufgrund einer Eigenart des Betriebssystems alle zwei Minuten gestartet, für den Fall, dass ein neuer Tag beginnt. Wenn jedoch 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 die Zahl 1, wenn ein Datum angeklickt wurde, oder auf die Zahl 2, wenn die Maustaste im Steuerelement losgelassen wurde. Wenn der Benutzer z.B. ein neues Datum doppelt anklickt, 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 Zahl 1, können so Doppelklicks erkannt werden.

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

MonthCal-Optionen

Multi: Mehrfachauswahl. Ermöglicht dem Benutzer, einen Bereich benachbarter Datumsfelder mittels UMSCHALT-Klicks oder durch Halten und Ziehen der linken Maustaste auszuwählen (der Benutzer kann aber weiterhin ein einzelnes Datum auswählen). Diese Option ist automatisch wirksam, wenn im letzten Parameter ein Datumsbereich angegeben wurde. Zum Beispiel: Gui, Add, MonthCal, vMeinKalender, 20050101-20050108. Diese Option kann nach der Erstellung des Steuerelements nicht mehr geändert werden.

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). Zum Beispiel bewirkt Range20050101-20050615, dass nur ein Datum oder Datumsbereich innerhalb der ersten 5,5 Monate des Jahres 2005 ausgewählt werden kann. Das Start- oder Enddatum kann weggelassen werden, um die Auswahl im Kalender nur in eine Richtung zu beschränken. Zum Beispiel bewirkt Range20010101, dass kein Datum vor 2001 ausgewählt werden kann, oder Range-20091231 (Bindestrich am Anfang), dass kein 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 die Zahl 4 in Optionen ein, um die Kalenderwochen (1-52) auf der linken Seite jeder Tageszeile anzuzeigen. Woche 1 ist per Definition die erste Woche mit mindestens vier Tagen.

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

16: Fügen Sie die Zahl 16 in Optionen ein, um die Anzeige 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. Um die Farben der anderen Bereiche des Kalenders zu ändern, gehen Sie wie folgt vor:

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 (Rot- und Blauanteile sind vertauscht).

Picture (oder Pic)

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. Andernfalls wird das Bild auf die angegebene Breite und/oder Höhe skaliert (diese Breite und Höhe bestimmen auch, welches Symbol aus einer ICO-Datei mit mehreren Symbolen geladen wird). Geben Sie -1 für eine der Dimensionen und eine positive Zahl für die jeweils andere an, um das Bild unter Beibehaltung des Seitenverhältnisses zu verkleinern oder zu vergrößern. Zum Beispiel bewirkt w200 h-1, dass das Bild 200 Pixel breit gemacht und dessen Höhe automatisch gesetzt wird. Wenn das Bild nicht geladen oder angezeigt werden kann (z.B. weil die Datei nicht gefunden wurde), wird das Steuerelement leer gelassen und dessen Breite und Höhe auf 0 gesetzt.

Es ist möglich, ein g-Label wie z.B. gMeineSubroutine in den Optionen des Steuerelements anzugeben. Dadurch wird jedes Mal, wenn der Benutzer das Bild anklickt, das Label MeineSubroutine gestartet. Ein Doppelklick kann durch Überprüfen der internen Variable A_GuiEvent erkannt werden.

Um ein Bild als Hintergrund für andere Steuerelemente zu verwenden, muss das Bild normalerweise vor solchen Steuerelementen hinzugefügt werden. Wenn solche Steuerelemente jedoch 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. Dieser Trick kann auch verwendet werden, um ein Bild als Hintergrund für ein Tab- oder ListView-Steuerelement zu definieren.

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 eine andere Symbolgruppe als die erste in der Datei zu verwenden, fügen Sie in Optionen das Wort Icon gefolgt von der Nummer der Gruppe ein. Das folgende Beispiel lädt das Standardsymbol aus der zweiten Symbolgruppe: Gui, Add, Picture, Icon2, C:\Meine Anwendung.exe.

Die Angabe des Wortes AltSubmit in Optionen weist das Programm an, die GDIPlus.dll von Microsoft zum Laden des Bildes zu verwenden, was bei GIF-, BMP- und Symbolbildern zu einer anderen Darstellung führen kann. Zum Beispiel bewirkt AltSubmit, dass ein ICO/GIF-Bild mit transparentem Hintergrund als transparente Bitmap geladen wird, 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 GDIPlus.dll von Microsoft in den Ordner von AutoHotkey.exe (im Falle eines kompilierten Skripts muss die DLL in den Ordner des Skripts kopiert werden). Die DLL finden Sie unter www.microsoft.com mit Suchbegriffen wie: gdi redistributable

Animierte GIF-Bilder: Animierte GIF-Dateien werden in einem Picture-Steuerelement angezeigt, aber nicht animiert. Um dieses Problem zu lösen, verwenden Sie die AniGIF-DLL-Datei (die für nicht-kommerzielle Zwecke kostenlos ist), wie in den AutoHotkey-Foren gezeigt. [v1.1.03+]: Alternativ können Sie auch das ActiveX-Steuerelement verwenden. 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%.

Progress

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 (wenn weggelassen, wird standardmäßig 0 oder der niedrigste zulässige Bereichswert verwendet). Die Position des Balkens kann später wie folgt geändert werden (basierend auf einem Fortschrittsbalken mit dem zugeordneten Variablennamen MeinFortschritt):

GuiControl,, MeinFortschritt, +20  ; Aktuelle Position um 20 erhöhen.
GuiControl,, MeinFortschritt, 50  ; Aktuelle Position auf 50 setzen.

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 darunter liegenden 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). Zum Beispiel erlaubt Range0-1000 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, d.h. die C- und Background-Option müssen weggelassen werden.

Vertical: Bewirkt, dass der Balken steigt oder fällt, anstatt sich horizontal zu bewegen.

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

Radio

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-Steuerelementen bestehen. Wenn der Benutzer auf ein Radio-Steuerelement klickt, um es einzuschalten, werden alle anderen Radio-Steuerelemente in der Gruppe automatisch ausgeschaltet (der Benutzer kann auch mit den Pfeiltasten innerhalb einer Gruppe navigieren). Eine Radio-Gruppe wird automatisch erstellt und umfasst eine Reihe von nacheinander erstellten Radio-Steuerelementen. Um eine neue Gruppe zu beginnen, fügen Sie das Wort Group in die Optionen des ersten Radio-Steuerelements ein - oder fügen Sie einfach ein Nicht-Radio-Steuerelement dazwischen ein, was automatisch eine neue Gruppe beginnt.

Geben Sie im letzten Parameter die Beschriftung an, die rechts neben dem Radio-Steuerelement angezeigt werden soll. Diese Beschriftung dient in der Regel als Aufforderung oder Beschreibung und kann LF-Zeichen (`n) zum Starten neuer Zeilen enthalten. Wenn in Optionen eine Breite (W), aber keine Zeilen (R) oder Höhe (H) angegeben ist, werden Textzeilen bei Bedarf umbrochen und die Höhe des Steuerelements automatisch gesetzt.

Fügen Sie das Wort Checked in Optionen ein, um das Radio-Steuerelement vorerst im eingeschalteten Zustand darzustellen. Direkt nach dem Wort Checked kann optional eine 0 oder 1 angegeben werden, um den Startzustand zu bestimmen: 0 für ausgeschaltet und 1 für eingeschaltet. Mit anderen Worten, Checked ist dasselbe wie Checked%VarMitEins%.

Die zugeordnete Ausgabevariable des Radio-Steuerelements (falls vorhanden) wird auf die Zahl 1 gesetzt, wenn es eingeschaltet ist, oder auf 0, wenn es ausgeschaltet ist. Wenn jedoch nur einem Mitglied einer Radio-Gruppe eine Variable zugeordnet wurde, wird diese Variable stattdessen auf die Nummer des aktuell eingeschalteten Radio-Steuerelements gesetzt: 1 ist das erste Radio-Steuerelement (entsprechend der ursprünglichen Erstellungsreihenfolge), 2 das zweite und so weiter. Wenn kein Radio-Steuerelement eingeschaltet ist, wird 0 gesetzt.

Es ist möglich, ein g-Label wie z.B. gMeineSubroutine in den Optionen des Steuerelements anzugeben. Dadurch wird jedes Mal, wenn der Benutzer das Radio-Steuerelement einschaltet, das Label MeineSubroutine gestartet. Im Gegensatz zum Einzelvariablenmodus, der im vorigen Absatz beschrieben wurde, muss das g-Label für jedes Radio-Steuerelement in einer Radio-Gruppe angegeben werden, bei dem das Label gestartet werden soll. Auf diese Weise ist es möglich, das Anklicken bestimmter Radio-Steuerelemente zu ignorieren. 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-Steuerelements nicht ordnungsgemäß darstellen. Sollte dies der Fall sein, versuchen Sie, -Wrap (minus Wrap) in die Optionen des Steuerelements einzufügen. Dies verhindert aber auch, dass mehr als eine Textzeile angezeigt wird.

Slider

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 der Maus ziehen; 2) auf den Linienbereich klicken; 3) das Mausrad drehen, während das Steuerelement den Fokus hat; 4) folgende Tasten drücken, während das Steuerelement den Fokus hat: , , , , Bild↑, Bild↓, Pos1 und Ende.

Wenn Sie Gui Submit verwenden, wird die aktuelle numerische Position des Schiebereglers in seine zugeordnete Ausgabevariable (falls vorhanden) gespeichert. Außerdem wird jedes Mal, wenn das g-Label des Steuerelements gestartet wird, die Position in die Ausgabevariable gespeichert.

Standardmäßig wird das g-Label des Schiebereglers (falls vorhanden) nur gestartet, wenn der Benutzer aufgehört hat, den Regler zu verschieben (z.B. beim Loslassen der linken Maustaste nach einem Ziehvorgang). Wenn jedoch 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 Vertical-Option 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. Zum Beispiel bewirkt Buddy1MeinObertext, 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, so 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 Umkehrung 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). Zum Beispiel erlaubt Range1-1000 die Auswahl einer 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 (verschiebbaren Knopfs). 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. Zum Beispiel bewirkt TickInterval10, dass an jede 10. Position ein Teilstrich angezeigt wird.

ToolTip: Erstellt einen Tooltip, der die numerische Position des Schiebereglers anzeigt, während der Benutzer den Regler mit der Maus zieht. Um den Tooltip auf einer unüblichen Position anzuzeigen, geben Sie stattdessen eines der folgenden Wörter an: 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.

StatusBar [v1.0.44+]

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 " . ReihenAnzahl . " Reihen markiert.")

Erscheinungsbild:

StatusBar

Für eine einfache Statusleiste genügt es, SB_SetText() aufzurufen, um dem Benutzer mitzuteilen, dass 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 StatusBar-Funktionen arbeiten mit dem Standard-GUI-Fenster des aktuellen Threads (was z.B. mit Gui, 2:Default geändert werden kann). Wenn das Standardfenster nicht existiert oder keine Statusleiste hat, geben alle Funktionen Null zurück, um das Problem zu kennzeichnen.

SB_SetText

Zeigt NeuerText in einem bestimmten Segment der Statusleiste an.

SB_SetText(NeuerText , SegmentNummer, Style)

Wenn SegmentNummer weggelassen wird, wird standardmäßig das erste Segment verwendet. Andernfalls geben Sie einen Integer im Bereich von 1 bis 256 an. Wenn Style weggelassen wird, wird standardmäßig 0 verwendet, also ein klassischer Rahmen, der das Segment aussehen lässt, als wäre es abgesenkt. Andernfalls geben Sie 1 an, um das Segment ohne Rahmen darzustellen, oder 2, um das Segment aussehen zu lassen, als wäre es angehoben. Es können bis zu zwei Tabulatorzeichen (`t) in NeuerText verwendet werden: Alles, was sich rechts vom ersten Tabulatorzeichen befindet, wird innerhalb des Segments zentriert, und alles, was sich rechts vom zweiten Tabulatorzeichen befindet, wird rechtsbündig gemacht. SB_SetText() gibt bei Erfolg 1 und bei Misserfolg 0 zurück.

SB_SetParts

Unterteilt die Leiste in mehrere Segmente mit bestimmten Breiten (in Pixel).

SB_SetParts(Breite1, Breite2, ... Breite255)

Wenn alle Parameter weggelassen werden, wird der Urzustand der Leiste (ein einzelnes, langes Segment) wiederhergestellt. Andernfalls können die Breiten der neuen Segmente angegeben werden, wobei zu beachten ist, dass die Breite des letzten Segments automatisch auf die verbleibende Breite der Leiste gesetzt wird. Zum Beispiel bewirkt SB_SetParts(50, 50), dass drei Segmente erstellt werden: Die ersten zwei mit einer Breite von 50 und das letzte mit der verbleibenden Breite.

Hinweis: Alle Segmente, die mit SB_SetParts() "gelöscht" wurden, werden das nächste Mal, wenn sie 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)

Wenn SegmentNummer weggelassen wird, wird standardmäßig das erste Segment verwendet. DateiName ist der Name einer ICO- (Symbol), CUR- (Cursor) oder ANI-Datei (animierter Cursor, wird aber in der Leiste nicht animiert). Die folgenden Dateitypen sind ebenfalls für Symbole geeignet: EXE, DLL, CPL, SCR und andere Typen, die Symbolressourcen enthalten. Um eine andere Symbolgruppe als die erste in der Datei zu verwenden, geben Sie für SymbolNummer die entsprechende Nummer an. Zum Beispiel bewirkt SB_SetIcon("Shell32.dll", 2), dass das Standardsymbol aus der zweiten Symbolgruppe geladen wird. Wenn SymbolNummer negativ ist, wird dessen Absolutwert als Ressourcen-ID eines Symbols innerhalb einer EXE-Datei vermutet. Diese Funktion gibt bei Erfolg das Handle des Symbols (HICON) und bei Misserfolg 0 zurück. HICON ist eine Systemressource, die für die meisten Skripte irrelevant 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 lässt sich wie folgt vermeiden:

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

[v1.1.23+]: Anstelle eines Dateinamens kann auch ein Symbol-Handle 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: Es ist möglich, ein g-Label wie z.B. gMeineSubroutine in den Optionen des Steuerelements anzugeben. Dadurch wird jedes Mal, wenn der Benutzer die Leiste anklickt, das Label MeineSubroutine gestartet. Diese Subroutine kann die internen Variablen A_Gui und A_GuiControl verwenden. Noch wichtiger ist, dass sie A_GuiEvent verwenden 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 einzig 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 zu ändern, fügen Sie in Optionen das Wort Background gefolgt von einem Farbnamen (siehe Farbentabelle) oder einem RGB-Wert (mit oder ohne 0x-Präfix) ein. 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 angegeben werden, z.B. -Theme BackgroundSilver.

Statusleiste verstecken: Um die Leiste versteckt zu erstellen, verwenden Sie Gui, Add, StatusBar, Hidden vMeineStatusleiste. Um die Leiste irgendwann nach ihrer Erstellung zu verstecken, verwenden Sie GuiControl, Hide, vMeineStatusleiste. 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) Steuerelemente, die sich mit der Statusleiste überschneiden, werden manchmal über diese gezeichnet. Um das zu verhindern, gibt es z.B. die Möglichkeit, solche Steuerelemente mit dem GuiSize-Label dynamisch zu verkleinern. 2) Jedes Fenster kann maximal eine Statusleiste enthalten.

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

Tab3 / Tab2 / Tab

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, gefolgt von der Nummer des Tabs, der vorab ausgewählt sein soll. Zum Beispiel bewirkt Choose5, dass der fünfte Tab vorab ausgewählt wird (wie bei anderen Optionen kann das auch eine Variable sein, 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  ; Dasselbe wie oben, aber mit exakter Übereinstimmung (und Groß-/Kleinschreibung-sensitiv).

Alle obigen Beispiele (außer Name) können verwendet werden, 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: Standardmäßig bekommt das erste Untersteuerelement eines Tabs eine spezielle Position zugewiesen, wenn: 1) die X- und Y-Koordinate weggelassen werden - in diesem Fall wird das erste Untersteuerelement in die obere linke Innenecke des Tab-Steuerelements positioniert (mit vordefinierten Abständen) und nachfolgende Untersteuerelemente unterhalb des vorherigen Steuerelements positioniert; 2) die Positionierungsoptionen X+n und/oder Y+n angegeben sind - in diesem Fall wird das Untersteuerelement relativ zur oberen linken Innenecke des Tab-Steuerelements positioniert. Zum Beispiel bewirkt x+10 y+10, dass das Steuerelement von der oberen linken Ecke aus 10 Pixel nach rechts und 10 Pixel nach unten positioniert wird.

V: Wenn Sie Gui Submit verwenden, wird der Name des aktuell ausgewählten Tabs in die zugeordnete Ausgabevariable des Steuerelements (falls vorhanden) gespeichert. 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 usw.).

G: Es ist möglich, ein g-Label wie z.B. gMeineSubroutine in den Optionen des Steuerelements anzugeben. Dadurch wird jedes Mal, wenn der Benutzer einen anderen Tab auswählt, das Label MeineSubroutine gestartet. 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; wenn sich der Tastaturfokus auf einem Steuerelement befindet, das keinem Tab-Steuerelement zugeordnet ist, wird zum erstem Tab-Steuerelement des Fensters navigiert. Strg+Tab und Strg+Umschalt+Tab können ebenfalls verwendet werden, funktionieren aber nicht, wenn das aktuell fokussierte Steuerelement ein mehrzeiliges Eingabefeld ist.

Einschränkungen: Jedes Fenster kann maximal 255 Tab-Steuerelemente enthalten. Jedes Tab-Steuerelement kann maximal 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 beeinflusst sowohl die Positionierung und Sichtbarkeit des Steuerelements als auch die Navigationsreihenfolge via TAB. Ein Untersteuerelement 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 Untersteuerelemente eines Tab- oder Tab2-Steuerelements, verwenden nur das GUI-Fenster selbst als übergeordnetes Fenster.

Positionierung: Untersteuerelemente eines Tab- und Tab2-Steuerelements müssen sich nicht unbedingt im Anzeigebereich des Tab-Steuerelements befinden, d.h. 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.

Im Falle von Tab3 verhalten sich Untersteuerelemente, die einem Tab vor der Erstellung des Tab-Steuerelements zugewiesen wurden, so, als wären sie einem Tab- oder Tab2-Steuerelement hinzugefügt worden. Alle anderen Untersteuerelemente sind nur im Anzeigebereich des Tab-Steuerelements sichtbar.

Beim Verschieben eines Tab3-Steuerelements werden auch seine Untersteuerelemente verschoben. Dieses Verhalten gilt nicht für Tab- und Tab2-Steuerelemente.

Sollte der seltene Fall auftreten, dass WinMove (oder ein äquivalentes DllCall) zum Verschieben eines Steuerelements verwendet wird, müssen die Koordinaten relativ zum übergeordneten Fenster des Steuerelements sein, das nicht unbedingt die GUI selbst ist (siehe oben). GuiControl Move dagegen verwendet immer GUI-Koordinaten und ControlMove immer Fensterkoordinaten, unabhängig davon, welchem Fenster das Steuerelement übergeordnet ist.

Größenberechnung: Wenn das Tab3-Steuerelement keine explizit angegebene Breite und/oder Höhe hat, werden diese automatisch zu folgenden Zeitpunkten berechnet (je nachdem, was zuerst eintritt, nachdem das Steuerelement erstellt wurde):

Zum Errechnen der Größe werden Untersteuerelemente, die zum Zeitpunkt der automatischen Größenanpassung existieren, plus Standardabstände einbezogen. Die Größenberechnung wird nur einmal durchgeführt, unabhängig davon, 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 angepasst; sie erhalten eine willkürliche Standardgröße.

Navigationsreihenfolge via TAB: Die Navigationsreihenfolge via Tab hängt von der Reihenfolge ab, in der die Steuerelemente erstellt wurden. Bei Tab-Steuerelementen hängt die Navigationsreihenfolge zusätzlich vom Typ des Tab-Steuerelements ab:

Benachrichtigungsmeldungen (Tab3): Gewöhnliche und benutzerdefinierte Steuerelemente senden in der Regel Benachrichtigungsmeldungen an ihre übergeordneten Fenster. Alle WM_COMMAND-, WM_NOTIFY-, WM_VSCROLL-, WM_HSCROLL- oder WM_CTLCOLOR...-Meldungen, die an das Tab-Dialogfenster eines Tab3-Steuerelements gesendet wurden, 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 Untersteuerelement ohne die 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 Standardfarbe des Systems für Tab-Steuerelemente zu verwenden. Geben Sie +Theme -Background an, um das Tab-Steuerelement an das aktuelle Desktop-Design anzupassen. Allerdings werden die meisten Steuerelemente im Tab-Steuerelement seltsam aussehen, da ihr Hintergrund nicht mit dem des Tab-Steuerelements übereinstimmt. Um dieses Problem zumindest bei einigen Steuerelementen (z.B. Text) zu beheben, fügen Sie BackgroundTrans in ihren Optionen ein.

Buttons: Zeigt anstelle von Tabs eine Reihe von Schaltflächen im oberen Bereich des Steuerelements an (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 Pfeilschaltflä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 ändern.

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

Text

Ein randloser Textbereich, der vom Benutzer nicht editiert werden kann. Wird oft zur Beschriftung anderer Steuerelemente verwendet.

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 LF-Zeichen (`n) enthalten, um neue Zeilen zu beginnen. Außerdem kann via Fortsetzungsbereich eine lange Zeile in mehrere kurze Zeilen aufgeteilt werden.

Wenn in Optionen eine Breite (W), aber keine Zeilen (R) oder Höhe (H) angegeben ist, werden Textzeilen 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.

Es ist möglich, ein g-Label wie z.B. gMeineSubroutine in den Optionen des Steuerelements anzugeben. Dadurch wird jedes Mal, wenn der Benutzer den Text anklickt, das Label MeineSubroutine gestartet. 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.

Sie können ein Und-Zeichen (&) im Text verwenden, um einen Buchstaben zu unterstreichen. Zum Beispiel:

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

Das obige Beispiel führt dazu, dass der Buchstabe V unterstrichen und der Tastaturkurzbefehl Alt+V aktiviert wird. Dieser Tastaturkurzbefehl kann vom Benutzer gedrückt werden, um den Tastaturfokus auf das erste danach erstellte eingabefähige Steuerelement zu setzen. Um stattdessen ein direkt geschriebenes Und-Zeichen anzuzeigen, geben Sie zwei aufeinanderfolgende Und-Zeichen (&&) an. Fügen Sie 0x80 in die 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 ändern.

TreeView

Eine Baumansicht (engl. TreeView) wird verwendet, um eine Hierarchie von mehreren ineinander verschachtelten Elementen darzustellen. Das wohl bekannteste Beispiel dafür ist der Navigationsbereich am linken Rand eines Explorer-Fensters, mit dem Laufwerke und Ordner ausgewählt werden können.

Zum Beispiel:

Gui, Add, TreeView, r10

Erscheinungsbild:

TreeView

Weitere Informationen finden Sie auf der separaten TreeView-Seite.

UpDown

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 obige Beispiel definiert das Eingabefeld als Buddy des UpDown-Steuerelements. 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) kann es aufgrund von OS-Einschränkungen vorkommen, dass sie nicht ordnungsgemäß mit g-Labels oder anderen Features funktionieren.

Geben Sie im letzten Parameter die Startposition des UpDown-Steuerelements an (wenn weggelassen, wird standardmäßig 0 oder der niedrigste zulässige Bereichswert verwendet).

Wenn Sie Gui Submit verwenden, wird die aktuelle numerische Position des UpDown-Steuerelements in dessen zugeordnete Ausgabevariable (falls vorhanden) gespeichert. Wenn das UpDown-Steuerelement mit einem Eingabefeld verbunden ist und Sie die Benutzereingabe nicht überprüfen möchten, sollten Sie am besten den aktuellen Wert des UpDown-Steuerelements verwenden, nicht den des Eingabefeldes. Dadurch wird sichergestellt, dass immer eine Zahl innerhalb des gültigen Bereichs 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 außerdem, dass Zahlen länger als 3 Ziffern standardmäßig mit einem Tausendertrennzeichen (z.B. Punkt) in Dreiergruppen unterteilt werden. Dieses Trennzeichen ist nur in der Ausgabevariable des Eingabefeldes enthalten, nicht in der 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, geben Sie Horz 16 in den Optionen des Steuerelements an.

Left: Positioniert das UpDown-Steuerelement auf der linken statt rechten 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). Zum Beispiel erlaubt Range1-1000 die Auswahl einer 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. Handelt es sich bei dem Buddy-Steuerelement um eine ListBox, ist der vertikale Bereich standardmäßig 32767-0 und der horizontale Bereich (Horz) standardmäßig 0-32767.

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. Mit Gui Submit kann diese Position abgerufen werden.

0x80: Fügen Sie 0x80 in Optionen ein, um zu verhindern, dass Tausendertrennzeichen die dezimalen Ziffern des Buddy-Steuerelements in Dreiergruppen unterteilen. Normalerweise ist dieser Style nicht notwendig, da man den aktuellen Wert auch direkt vom UpDown-Steuerelement abrufen kann, 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 angezeigte Zahlenformat kann wie folgt von dezimal auf hexadezimal umgestellt werden:

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

Dies wirkt sich nur auf das Buddy-Steuerelement aus, nicht auf die von UpDown gemeldete Position.

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

ListView, TreeView, Gui, GuiControl, GuiControlGet, Menu