<script src="../static/ga4.js" type="text/javascript"></script> <style> img { margin: 0 1.5em; border: 1px solid silver; } @media only screen and (max-width: 600px) { img { margin: 0; } } </style> </head> <body> <h1>GUI-Steuerelemente</h1> <p>GUI-Steuerelemente sind Interaktionselemente, die via <a href="Gui.htm#Add">Gui.Add</a> in ein GUI-Fenster eingefügt werden können.</p> <h2 id="toc">Inhaltsverzeichnis</h2> <ul> <li><a href="#ActiveX">ActiveX</a></li> <li><a href="#Button">Button</a></li> <li><a href="#CheckBox">CheckBox</a></li> <li><a href="#ComboBox">ComboBox</a></li> <li><a href="#Custom">Custom</a></li> <li><a href="#DateTime">DateTime</a></li> <li><a href="#DropDownList">DropDownList (oder DDL)</a></li> <li><a href="#Edit">Edit</a></li> <li><a href="#GroupBox">GroupBox</a></li> <li><a href="#Hotkey">Hotkey</a></li> <li><a href="#Link">Link</a></li> <li><a href="#ListBox">ListBox</a></li> <li><a href="#ListView">ListView</a></li> <li><a href="#MonthCal">MonthCal</a></li> <li><a href="#Picture">Picture (oder Pic)</a></li> <li><a href="#Progress">Progress</a></li> <li><a href="#Radio">Radio</a></li> <li><a href="#Slider">Slider</a></li> <li><a href="#StatusBar">StatusBar</a></li> <li><a href="#Tab">Tab3 / Tab2 / Tab</a></li> <li><a href="#Text">Text</a></li> <li><a href="#TreeView">TreeView</a></li> <li><a href="#UpDown">UpDown</a></li> </ul> <h2 id="ActiveX">ActiveX</h2> <p>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 <a href="https://learn.microsoft.com/previous-versions/windows/internet-explorer/ie-developer/platform-apis/aa752085(v=vs.85)">WebBrowser object (Microsoft Docs)</a> und <a href="https://learn.microsoft.com/previous-versions/windows/internet-explorer/ie-developer/platform-apis/aa752093(v=vs.85)">Navigate method (Microsoft Docs)</a>.</p> <pre>MeineGui := Gui() WB := MeineGui.Add("ActiveX", "w980 h640", "Shell.Explorer").Value <em>; Der letzte Parameter ist der Name der ActiveX-Komponente.</em> WB.Navigate("https://www.autohotkey.com/docs/") <em>; Nur für das Web-Browser-Steuerelement anwendbar.</em> MeineGui.Show()</pre> <p>Nach der Erstellung des Steuerelements kann das ActiveX-Objekt via <a href="GuiControl.htm#Value">GuiControl.Value</a> abgerufen werden.</p> <p>Um die Ereignisse des Objekts zu verarbeiten, verwenden Sie <a href="ComObjConnect.htm">ComObjConnect</a> wie folgt. Einzelheiten zu dem hier verwendeten Ereignis finden Sie unter <a href="https://learn.microsoft.com/previous-versions/aa768334(v=vs.85)">NavigateComplete2 event (Microsoft Docs)</a>.</p> <pre>MeineGui := Gui() URL := MeineGui.Add("Edit", "w930 r1", "https://www.autohotkey.com/docs/") MeineGui.Add("Button", "x+6 yp w44 Default", "Go").OnEvent("Click", ButtonLaden) WB := MeineGui.Add("ActiveX", "xm w980 h640", "Shell.Explorer").Value ComObjConnect(WB, WB_events) <em>; WB-Ereignisse mit dem WB_events-Klassenobjekt verbinden.</em> MeineGui.Show() <em>; Fortfahren, um die Startseite zu laden:</em> ButtonLaden() ButtonLaden(*) { WB.Navigate(URL.Value) } class WB_events { static NavigateComplete2(wb, &amp;NewURL, *) { URL.Value := NewURL <em>; URL-Eingabefeld aktualisieren.</em> } }</pre> <p><a href="ComObjType.htm">ComObjType</a> kann verwendet werden, um den Typ des abgerufenen Objekts zu bestimmen.</p> <h2 id="Button">Button</h2> <p>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 Zeilenvorschübe (`n) zum Starten neuer Zeilen enthalten kann.</p> <p>Zum Beispiel:</p> <pre>MeinBtn := MeineGui.Add("Button", "Default w80", "OK") MeinBtn.OnEvent("Click", MeinBtn_Click) <em>; MeinBtn_Click beim Anklicken aufrufen.</em></pre> <p>Oder:</p> <pre>MeinBtn := MeineGui.AddButton("Default w80", "OK") MeinBtn.OnEvent("Click", MeinBtn_Click) <em>; MeinBtn_Click beim Anklicken aufrufen.</em> </pre> <p>Erscheinungsbild:</p> <img src="../static/ctrl_button.png" alt="Button" /> <p>Jedes Mal, wenn der Benutzer auf die Schaltfläche klickt oder <kbd>Leer</kbd> oder <kbd>Enter</kbd> drückt, während die Schaltfläche den Fokus hat, wird das <a href="GuiOnEvent.htm#Click">Click</a>-Ereignis ausgelöst.</p> <p>Die Ereignisse <a href="GuiOnEvent.htm#DoubleClick">DoubleClick</a>, <a href="GuiOnEvent.htm#Focus">Focus</a> und <a href="GuiOnEvent.htm#LoseFocus">LoseFocus</a> werden ebenfalls unterstützt. Da diese Ereignisse nur ausgelöst werden, wenn das Steuerelement den BS_NOTIFY-Style (0x4000) hat, fügt <a href="GuiOnEvent.htm">OnEvent</a> diesen Style automatisch hinzu.</p> <p id="DefaultButton">Das obige Beispiel enthält das Wort <strong>Default</strong> in dessen <em>Optionen</em>, um "OK" zur Standardschaltfläche zu machen. Das <a href="GuiOnEvent.htm#Click">Click-Ereignis</a> der Standardschaltfläche wird jedes Mal automatisch ausgelöst, wenn der Benutzer <kbd>Enter</kbd> drückt, es sei denn, der Tastaturfokus liegt auf einer anderen Schaltfläche oder einem mehrzeiligen Eingabefeld mit aktiviertem <a href="#WantReturn">WantReturn</a>-Style. Um später eine andere Schaltfläche zur Standardschaltfläche zu machen, gehen Sie wie folgt vor: <code>MeineGui["Abbrechen"].<a href="GuiControl.htm#Opt">Opt</a>("+Default")</code>. Um das Fenster später so zu ändern, dass es keine Standardschaltfläche hat, gehen Sie wie folgt vor: <code>MeineGui["OK"].Opt("-Default")</code>.</p> <p>Sie können ein Und-Zeichen (&amp;) im Namen der Schaltfläche verwenden, um einen Buchstaben zu unterstreichen. Zum Beispiel:</p> <pre>MeineGui.Add("Button",, "&amp;Pause")</pre> <p>Das obige Beispiel führt dazu, dass der Buchstabe P unterstrichen und der <a href="Gui.htm#ShortcutKey">Tastaturkurzbefehl</a> <kbd>Alt</kbd>+<kbd>P</kbd> aktiviert wird. Um ein direkt geschriebenes Und-Zeichen anzuzeigen, geben Sie zwei aufeinanderfolgende Und-Zeichen (&amp;&amp;) an.</p> <p>Bekannte Einschränkung: Bestimmte Desktop-Designs können den Text einer Schaltfläche nicht ordnungsgemäß darstellen. Sollte dies der Fall sein, versuchen Sie, <code>-Wrap</code> (minus Wrap) in die Optionen des Steuerelements einzufügen. Dies verhindert aber auch, dass mehr als eine Textzeile angezeigt wird.</p> <a id="Checkbox"></a><h2 id="CheckBox">CheckBox</h2> <p>Ein Kästchen, das durch Setzen oder Entfernen eines Häkchens für Ein/Aus, Ja/Nein usw. verwendet werden kann.</p> <p>Zum Beispiel:</p> <pre>MeineGui.Add("CheckBox", "vSendenAnRechnungsadresse", "An Rechnungsadresse versenden?")</pre> <p>Oder:</p> <pre>MeineGui.AddCheckBox("vSendenAnRechnungsadresse", "An Rechnungsadresse versenden?")</pre> <p>Erscheinungsbild:</p> <img src="../static/ctrl_check.png" alt="CheckBox" /> <p>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 Zeilenvorschübe (`n) zum Starten neuer Zeilen enthalten. Wenn in <em>Optionen</em> eine Breite (W), aber keine <a href="Gui.htm#R">Zeilen (R)</a> oder Höhe (H) angegeben ist, werden Textzeilen bei Bedarf umbrochen und die Höhe des Steuerelements automatisch gesetzt.</p> <p><a href="GuiControl.htm#Value">GuiControl.Value</a> gibt 1 zurück, wenn das Steuerelement eingeschaltet ist, 0, wenn es ausgeschaltet ist, oder -1, wenn es grau/unbestimmt ist.</p> <p>Fügen Sie das Wort <strong>Check3</strong> in <em>Optionen</em> ein, um den dritten "unbestimmten" Zustand in Form eines grauen Häkchens oder eines Quadrats zu aktivieren (dieser Zustand zeigt an, dass die CheckBox weder ein- noch ausgeschaltet ist). Fügen Sie das Wort <strong>Checked</strong> oder <strong>CheckedGray</strong> in <em>Optionen</em> ein, um die CheckBox vorerst im eingeschalteten bzw. unbestimmten Zustand darzustellen. Direkt nach dem Wort Checked kann optional eine 0, 1 oder -1 angegeben werden, um den Startzustand zu bestimmen. Mit anderen Worten, <code>"Checked"</code> ist dasselbe wie <code>"Checked" VarMitEins</code>.</p> <p>Jedes Mal, wenn die CheckBox angeklickt wird, wechselt sie in den nächsten ihrer insgesamt zwei oder drei Zustände und löst dann das <a href="GuiOnEvent.htm#Click">Click</a>-Ereignis aus, damit das Skript sofort auf die Benutzereingabe reagieren kann.</p> <p>Die Ereignisse <a href="GuiOnEvent.htm#DoubleClick">DoubleClick</a>, <a href="GuiOnEvent.htm#Focus">Focus</a> und <a href="GuiOnEvent.htm#LoseFocus">LoseFocus</a> werden ebenfalls unterstützt. Da diese Ereignisse nur ausgelöst werden, wenn das Steuerelement den BS_NOTIFY-Style (0x4000) hat, fügt <a href="GuiOnEvent.htm">OnEvent</a> diesen Style automatisch hinzu. Dieser Style ist standardmäßig nicht vorhanden, da er verhindert, dass schnelle Klicks den Zustand des Häkchens ändern (z.B. wenn der Benutzer es doppelt anklickt, um von ausgeschaltet zu eingeschaltet und dann zu unbestimmt zu wechseln).</p> <p>Bekannte Einschränkung: Bestimmte Desktop-Designs können den Text einer CheckBox nicht ordnungsgemäß darstellen. Sollte dies der Fall sein, versuchen Sie, <code>-Wrap</code> (minus Wrap) in die Optionen des Steuerelements einzufügen. Dies verhindert aber auch, dass mehr als eine Textzeile angezeigt wird.</p> <h2 id="ComboBox">ComboBox</h2> <p>Eine aufklappbare Liste mit Auswahlmöglichkeiten und ein Eingabefeld zum Eintragen eines formatlosen Textes. Geben Sie im letzten Parameter von <a href="Gui.htm#Add">Gui.Add</a> ein <a href="Array.htm">Array</a> in Form von <code>["Auswahl1", "Auswahl2", "Auswahl3"]</code> an.</p> <p>Zum Beispiel:</p> <pre>MeineGui.Add("ComboBox", "vFarbauswahl", ["Rot", "Grün", "Blau", "Schwarz", "Weiß"])</pre> <p>Oder:</p> <pre>MeineGui.AddComboBox("vFarbauswahl", ["Rot", "Grün", "Blau", "Schwarz", "Weiß"])</pre> <p>Erscheinungsbild:</p> <img src="../static/ctrl_combo.png" alt="ComboBox" /> <p>Zusätzlich zu den <a href="#DropDownList">DropDownList-Optionen</a> kann das Wort <strong>Limit</strong> in <em>Optionen</em> eingefügt werden, um die Benutzereingabe auf die sichtbare Breite des Eingabefeldes der ComboBox zu beschränken. Außerdem kann das Wort <strong>Simple</strong> eingefügt werden, um die aufklappbare Liste der ComboBox als ListBox unterhalb des Eingabefeldes darzustellen.</p> <p><a href="GuiControl.htm#Value">GuiControl.Value</a> gibt die Positionsnummer des aktuell ausgewählten Listeneintrags zurück (der erste Eintrag ist 1, der zweite 2 usw.), oder 0, wenn das Steuerelement Text enthält, der mit keinem Listeneintrag übereinstimmt, während <a href="GuiControl.htm#Text">GuiControl.Text</a> den Inhalt des Eingabefeldes der ComboBox zurückgibt. <a href="Gui.htm#Submit">Gui.Submit</a> speichert den Text, es sei denn, das Wort <strong>AltSubmit</strong> ist in den <em>Optionen</em> des Steuerelements vorhanden und der Text stimmt mit einem Listeneintrag überein, dann wird die Positionsnummer des Listeneintrags gespeichert.</p> <p>Jedes Mal, wenn der Benutzer einen anderen Listeneintrag auswählt oder den Text des Steuerelements ändert, wird das <a href="GuiOnEvent.htm#Change">Change</a>-Ereignis ausgelöst. Die Ereignisse <a href="GuiOnEvent.htm#Focus">Focus</a> und <a href="GuiOnEvent.htm#LoseFocus">LoseFocus</a> werden ebenfalls unterstützt.</p> <h2 id="Custom">Custom</h2> <p>Bietet die Möglichkeit, ein AutoHotkey-fremdes Steuerelement in ein GUI-Fenster einzubetten. Um das zu bewerkstelligen, müssen Sie in <em>Optionen</em> das Wort <strong>Class</strong> einfügen und direkt danach den Win32-Klassennamen des gewünschten Steuerelements angeben. Beispiele:</p> <pre>MeineGui.Add("Custom", "ClassComboBoxEx32") <em>; <a href="https://learn.microsoft.com/windows/win32/controls/comboboxex-control-reference">ComboBoxEx</a>-Steuerelement.</em> MeineGui.Add("Custom", "ClassScintilla") <em>; <a href="https://scintilla.org/">Scintilla</a>-Steuerelement. Die SciLexer.dll-Bibliothek muss vorab geladen sein.</em></pre> <p>AutoHotkey verwendet die Standard-Textroutinen des Systems beim Abrufen/Setzen von Texten im Steuerelement via <a href="Gui.htm#Add">Gui.Add</a> oder <a href="GuiControl.htm#Value">GuiControl.Value</a>.</p> <p><strong>Ereignisse:</strong> Da die Bedeutung eines Benachrichtigungscodes vom Steuerelement abhängt, das diesen gesendet hat, unterstützen Custom-Steuerelemente kein <a href="GuiOnEvent.htm">OnEvent</a>. Wenn das Steuerelement jedoch Benachrichtigungen in Form von WM_NOTIFY- oder WM_COMMAND-Meldungen sendet, kann das Skript <a href="GuiOnNotify.htm">OnNotify</a> oder <a href="GuiOnCommand.htm">OnCommand</a> verwenden, um diese abzufangen und zu verarbeiten.</p> <p>Das folgende Beispiel zeigt, wie ein <a href="https://learn.microsoft.com/windows/win32/controls/ip-address-control-reference">IP-Adressen-Steuerelement</a> hinzugefügt und verwendet werden kann:</p> <pre>MeineGui := Gui() IP := MeineGui.Add("Custom", "ClassSysIPAddress32 r1 w150") IP.OnCommand(0x300, IP_EditChange) <em>; 0x300 = EN_CHANGE</em> IP.OnNotify(-860, IP_FieldChange) <em>; -860 = IPN_FIELDCHANGED</em> IPText := MeineGui.Add("Text", "wp") IPField := MeineGui.Add("Text", "wp y+m") MeineGui.Add("Button", "Default", "OK").OnEvent("Click", OK_Click) MeineGui.Show() IPCtrlSetAddress(IP, SysGetIPAddresses()[1]) OK_Click(*) { MeineGui.Hide() MsgBox("Sie haben " IPCtrlGetAddress(IP)) " ausgewählt.") ExitApp() } IP_EditChange(*) { IPText.Text := "Neuer Text: " IP.Text } IP_FieldChange(thisCtrl, NMIPAddress) { <em>; Infos aus der NMIPAddress-Struktur extrahieren.</em> iField := NumGet(NMIPAddress, 3*A_PtrSize + 0, "int") iValue := NumGet(NMIPAddress, 3*A_PtrSize + 4, "int") if (iValue &gt;= 0) IPField.Text := "Feld Nr. " iField " geändert: " iValue else IPField.Text := "Feld Nr. " iField " leer gelassen" } IPCtrlSetAddress(GuiCtrl, IPAddress) { static WM_USER := 0x0400 static IPM_SETADDRESS := WM_USER + 101 <em>; IP-Adresse in ein 32-Bit-Wort zur Nutzung mit SendMessage packen.</em> IPAddrWord := 0 Loop Parse IPAddress, "." IPAddrWord := (IPAddrWord * 256) + A_LoopField SendMessage(IPM_SETADDRESS, 0, IPAddrWord, GuiCtrl) } IPCtrlGetAddress(GuiCtrl) { static WM_USER := 0x0400 static IPM_GETADDRESS := WM_USER + 102 AddrWord := Buffer(4) SendMessage(IPM_GETADDRESS, 0, AddrWord, GuiCtrl) IPPart := [] Loop 4 IPPart.Push(NumGet(AddrWord, 4 - A_Index, "UChar")) return IPPart[1] "." IPPart[2] "." IPPart[3] "." IPPart[4] }</pre> <h2 id="DateTime">DateTime</h2> <p>Ein Eingabefeld, das der Benutzer zur Eingabe eines Datums und/oder einer Uhrzeit verwenden kann. Ein ausklappbarer Kalender ist ebenfalls vorhanden.</p> <p>Zum Beispiel:</p> <pre>MeineGui.Add("DateTime", "vMeinDateTime", "LongDate")</pre> <p>Oder:</p> <pre>MeineGui.AddDateTime("vMeinDateTime", "LongDate")</pre> <p>Erscheinungsbild:</p> <img src="../static/ctrl_datetime.png" alt="DateTime" /> <p>Der letzte Parameter ist eine formatierte Zeichenkette, wie unten in der SetFormat-Methode beschrieben. Diese Methode ermöglicht es, das Anzeigeformat zu ändern, nachdem das DateTime-Steuerelement erstellt wurde.</p> <h3 id="DateTime_Methods">DateTime-Methoden</h3> <div class="methodShort" id="DateTime_SetFormat"> <h3>SetFormat</h3> <p>Setzt das Anzeigeformat eines DateTime-Steuerelements.</p> <pre class="Syntax"><a href="GuiControl.htm">GuiCtrl</a>.<span class="func">SetFormat</span>(<span class="optional">Format</span>)</pre> <h4 id="DateTime_Parameters">Parameter</h4> <dl><dt>Format</dt><dd id="DateTimeFormat"> <p>Typ: <a href="../Concepts.htm#strings">Zeichenkette</a></p> <p>Wenn leer oder weggelassen, wird standardmäßig <em>ShortDate</em> verwendet. Andernfalls geben Sie eines der folgenden Formate an:</p> <p><strong>ShortDate:</strong> Verwendet das kurze Datumsformat gemäß den aktuellen Sprach- und Regionseinstellungen des Benutzers. Zum Beispiel: 01.06.2005</p> <p><strong>LongDate:</strong> Verwendet das lange Datumsformat gemäß den aktuellen Sprach- und Regionseinstellungen des Benutzers. Zum Beispiel: Mittwoch, 1. Juni 2005</p> <p><strong>Time:</strong> 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 <a href="FileSetTime.htm#YYYYMMDD">YYYYMMDDHH24MISS</a>-Format abgerufen. Zum Beispiel: 21:37:45</p> <p><strong>(benutzerdefiniertes Format):</strong> Geben Sie eine beliebige Kombination von <a href="FormatTime.htm">Datums- und Zeitformaten</a> an. Zum Beispiel bewirkt <code>"d.M.yy HH:mm"</code>, dass 1.6.05 21:37 angezeigt wird, oder <code>"dddd MMMM d, yyyy hh:mm:ss"</code>, 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: <code>"'Datum:' dd.MM.yy 'Zeit:' hh:mm:ss tt"</code>. 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.</p> </dd></dl> </div> <h3 id="DateTime_Usage">DateTime-Verwendung</h3> <p id="ChooseDT">Wenn ein anderes Datum als das heutige vorab ausgewählt sein soll, fügen Sie in <em>Optionen</em> das Wort <strong>Choose</strong> gefolgt von einem Datum im YYYYMMDD-Format ein. Zum Beispiel bewirkt <code>Choose20050531</code>, dass der 31. Mai 2005 vorab ausgewählt wird (wie bei anderen Optionen kann das auch eine Variable sein, z.B. <code>"Choose" Var</code>). Fügen Sie <strong>ChooseNone</strong> ein, damit weder das heutige Datum noch ein anderes ausgewählt ist. <em>ChooseNone</em> stattet das Steuerelement zudem mit einer CheckBox aus, die vorerst eingeschaltet ist. Wenn kein Datum im Steuerelement ausgewählt ist, wird <a href="Gui.htm#Submit">Gui.Submit</a> und <a href="GuiControl.htm#Value">GuiControl.Value</a> einen leeren Wert (leere Zeichenkette) abrufen.</p> <p>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 <a href="FileSetTime.htm#YYYYMMDD">YYYYMMDDHH24MISS</a>-Format.</p> <p>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.</p> <p>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.</p> <p id="DateTime_Keyboard_Navigation"><strong>Navigation mit der Tastatur:</strong> Mit den Pfeiltasten <kbd>↑</kbd>/<kbd>↓</kbd>, den Ziffernblocktasten <kbd>+</kbd>/<kbd>-</kbd> und <kbd>Pos1</kbd>/<kbd>Ende</kbd> können die Werte des Steuerelements erhöht oder verringert werden. Verwenden Sie <kbd>←</kbd> und <kbd>→</kbd>, 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; <kbd>Bild↑</kbd>/<kbd>Bild↓</kbd>, um zum vorherigen/nächsten Monat zu navigieren; und <kbd>Pos1</kbd>/<kbd>Ende</kbd>, um den ersten/letzten Tag des Monats auszuwählen.</p> <p>Wenn <a href="Gui.htm#Submit">Gui.Submit</a> oder <a href="GuiControl.htm#Value">GuiControl.Value</a> verwendet wird, ist der Rückgabewert das Datum und die Uhrzeit des aktuell ausgewählten Feldes im <a href="FileSetTime.htm#YYYYMMDD">YYYYMMDDHH24MISS</a>-Format. Die Zeichenkette enthält immer das Datum und die Uhrzeit, egal ob diese im Steuerelement tatsächlich sichtbar sind oder nicht.</p> <p>Jedes Mal, wenn der Benutzer das Datum oder die Uhrzeit ändert, wird das <a href="GuiOnEvent.htm#Change">Change</a>-Ereignis ausgelöst. Die Ereignisse <a href="GuiOnEvent.htm#Focus">Focus</a> und <a href="GuiOnEvent.htm#LoseFocus">LoseFocus</a> werden ebenfalls unterstützt.</p> <h3 id="DateTime_Options">DateTime-Optionen</h3> <p><strong>Choose:</strong> Siehe <a href="#ChooseDT">oben</a>.</p> <p><strong>Range:</strong> 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 <code class="no-highlight">Range20050101-20050615</code>, 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 <code>Range20010101</code>, dass kein Datum vor 2001 ausgewählt werden kann, oder <code class="no-highlight">Range-20091231</code> (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.</p> <p><strong>Right:</strong> Bewirkt, dass der Kalender auf der rechten statt linken Seite des Steuerelements aufgeklappt wird.</p> <p><strong>1:</strong> Fügen Sie die Zahl 1 in <em>Optionen</em> 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.</p> <p id="ChooseNone"><strong>2:</strong> Fügen Sie die Zahl 2 in <em>Optionen</em> 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.</p> <p><strong>Farben im aufklappbaren Kalender:</strong> Die Farben der Tageszahlen im aufklappbaren Kalender richten sich nach den Farben, die via <a href="Gui.htm#SetFont">Gui.SetFont</a> oder <a href="Gui.htm#OtherOptions">c-Option</a> festgelegt wurden. Um die Farben der anderen Bereiche des Kalenders zu ändern, gehen Sie wie folgt vor:</p> <pre><a href="SendMessage.htm">SendMessage</a> 0x1006, 4, 0xFFAA99, "SysDateTimePick321" <em>; 0x1006 ist DTM_SETMCCOLOR. 4 ist MCSC_MONTHBK (Hintergrundfarbe). Die Farbe muss im BGR- statt RGB-Format angegeben werden (Rot- und Blauanteile sind vertauscht).</em></pre> <a id="DDL"></a><h2 id="DropDownList">DropDownList (oder DDL)</h2> <p>Eine aufklappbare Liste mit Auswahlmöglichkeiten. Geben Sie im letzten Parameter von <a href="Gui.htm#Add">Gui.Add</a> ein <a href="Array.htm">Array</a> in Form von <code>["Auswahl1", "Auswahl2", "Auswahl3"]</code> an.</p> <p>Zum Beispiel:</p> <pre>MeineGui.Add("DropDownList", "vFarbauswahl", ["Schwarz", "Weiß", "Rot", "Grün", "Blau"])</pre> <p>Oder:</p> <pre>MeineGui.AddDropDownList("vFarbauswahl", ["Schwarz", "Weiß", "Rot", "Grün", "Blau"])</pre> <p>Erscheinungsbild:</p> <img src="../static/ctrl_ddl.png" alt="DDL" /> <p>Um einen Listeneintrag im Steuerelement vorab auszuwählen, fügen Sie in <em>Optionen</em> das Wort <strong>Choose</strong> ein, gefolgt von der Nummer des gewünschten Listeneintrags. Zum Beispiel bewirkt <code>Choose5</code>, dass der fünfte Listeneintrag vorab ausgewählt wird (wie bei anderen Optionen kann das auch eine Variable sein, z.B. <code>"Choose" Var</code>). Nach der Erstellung des Steuerelements kann mit <a href="GuiControl.htm#Value">GuiControl.Value</a>, <a href="GuiControl.htm#Text">GuiControl.Text</a> oder <a href="GuiControl.htm#Choose">GuiControl.Choose</a> ein anderer Listeneintrag ausgewählt werden und mit <a href="GuiControl.htm#Add">GuiControl.Add</a> oder <a href="GuiControl.htm#Delete">GuiControl.Delete</a> Listeneinträge hinzugefügt oder entfernt werden.</p> <p>Fügen Sie das Wort <strong>Uppercase</strong> oder <strong>Lowercase</strong> in <em>Optionen</em> ein, um alle Listeneinträge automatisch in Groß- oder Kleinbuchstaben umzuwandeln. Fügen Sie das Wort <strong>Sort</strong> ein, um die Listeneinträge automatisch in alphabetischer Reihenfolge zu sortieren (dies hat auch Einfluss auf Listeneinträge, die nachträglich via <a href="GuiControl.htm#Add">GuiControl.Add</a> 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.</p> <p><a href="GuiControl.htm#Value">GuiControl.Value</a> gibt die Positionsnummer des aktuell ausgewählten Listeneintrags zurück (der erste Eintrag ist 1, der zweite 2 usw.), oder 0, wenn keiner ausgewählt ist, während <a href="GuiControl.htm#Text">GuiControl.Text</a> den Text des aktuell ausgewählten Listeneintrags zurückgibt. <a href="Gui.htm#Submit">Gui.Submit</a> speichert den Text, es sei denn, das Wort <strong>AltSubmit</strong> ist in den <em>Optionen</em> des Steuerelements vorhanden, dann wird die Positionsnummer des Listeneintrags gespeichert.</p> <p>Jedes Mal, wenn der Benutzer einen anderen Listeneintrag auswählt, wird das <a href="GuiOnEvent.htm#Change">Change</a>-Ereignis ausgelöst. Die Ereignisse <a href="GuiOnEvent.htm#Focus">Focus</a> und <a href="GuiOnEvent.htm#LoseFocus">LoseFocus</a> werden ebenfalls unterstützt.</p> <p>Verwenden Sie die <a href="Gui.htm#R">R- oder H-Option</a>, um die Höhe der aufklappbaren Liste zu bestimmen. Zum Beispiel bewirkt <code>R5</code>, dass die Liste 5 Zeilen hoch gemacht wird, oder <code>H400</code>, 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.</p> <p id="ComboBoxHeight">Das folgende Beispiel zeigt, wie die Höhe des Auswahlfeldes oder die Höhe jedes Listeneintrags mit der <a href="https://learn.microsoft.com/windows/win32/controls/cb-setitemheight">CB_SETITEMHEIGHT</a>-Meldung geändert werden kann:</p> <pre>MeineGui := Gui() DDL := MeineGui.Add("DDL", "vcbx w200 Choose1", ["Eins", "Zwei"]) <em>; CB_SETITEMHEIGHT = 0x0153</em> PostMessage(0x0153, -1, 50, DDL) <em>; Höhe des Auswahlfeldes setzen.</em> PostMessage(0x0153, 0, 50, DDL) <em>; Höhe jedes Listeneintrags setzen.</em> MeineGui.Show("h70")</pre> <h2 id="Edit">Edit</h2> <p>Ein Eingabefeld, das der Benutzer zum Eintragen eines formatlosen Textes verwenden kann.</p> <p>Zum Beispiel:</p> <pre>MeineGui.Add("Edit", "r9 vMeinEdit w135", "Der Text innerhalb des Eingabefelds (lassen Sie diesen Parameter weg, um ein leeres Feld anzuzeigen).")</pre> <p>Oder:</p> <pre>MeineGui.AddEdit("r9 vMeinEdit w135", "Der Text innerhalb des Eingabefelds (lassen Sie diesen Parameter weg, um ein leeres Feld anzuzeigen).")</pre> <p>Erscheinungsbild:</p> <img src="../static/ctrl_edit.png" alt="Edit" /> <p>Das Steuerelement wird als mehrzeilig erkannt, wenn es mehr als eine Textzeile enthält. Zum Beispiel bewirkt <code>r3</code> in <em>Optionen</em>, dass ein dreizeiliges Eingabefeld standardmäßig mit folgenden Eigenschaften erstellt wird: vertikaler Scrollbalken; automatischer Zeilenumbruch; <kbd>Enter</kbd> erzeugt einen Zeilenumbruch, anstatt die <a href="#DefaultButton">Standardschaltfläche</a> des Fensters auszulösen.</p> <p>Fügen Sie im letzten Parameter entweder einen einzelnen Zeilenvorschub (`n) oder ein Wagenrücklauf-Zeilenvorschub-Paar (`r`n) ein, um eine neue Zeile innerhalb eines mehrzeiligen Eingabefeldes zu beginnen. Beide Varianten erzeugen direkt geschriebene `r`n-Paare innerhalb des Eingabefeldes. Wenn Sie jedoch <a href="Gui.htm#Submit">Gui.Submit</a> oder <a href="GuiControl.htm#Value">GuiControl.Value</a> verwenden, um den Inhalt des Steuerelements abzurufen, wird jedes `r`n im Text immer in ein einzelnes `n übersetzt. Mit <a href="GuiControl.htm#Text">GuiControl.Text</a> kann diese Zeilenumbruchübersetzung umgangen werden. Um den Inhalt des Eingabefeldes in eine Datei zu schreiben, gehen Sie wie folgt vor: <code><a href="FileAppend.htm">FileAppend</a>(MeinEingabefeld.Text, "C:\Gespeicherte Datei.txt")</code>.</p> <p>Ein beim Schreiben verursachter automatischer Zeilenumbruch, sofern aktiv (Standard bei mehrzeiligen Eingabefeldern), ist rein visueller Natur - es werden keine Zeilenvorschubzeichen erzeugt (nur <kbd>Enter</kbd> ist dazu in der Lage).</p> <p>Jedes Mal, wenn der Benutzer den Inhalt des Steuerelements ändert, wird das <a href="GuiOnEvent.htm#Change">Change</a>-Ereignis ausgelöst.</p> <p>TIPP: Mit <a href="FileRead.htm">FileRead</a> und <a href="GuiControl.htm#Value">GuiControl.Value</a> können Sie den Inhalt einer Textdatei in ein Eingabefeld laden. Zum Beispiel:</p> <pre>MeinEdit := MeineGui.Add("Edit", "R20") MeinEdit.Value := FileRead("C:\Meine Datei.txt")</pre> <h3 id="Edit_Options">Edit-Optionen</h3> <p>Um eine der folgenden Optionen zu entfernen statt hinzuzufügen, setzen Sie ein Minuszeichen davor:</p> <p><strong>Limit:</strong> 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 <code>Limit10</code>, dass der Benutzer nur maximal 10 Zeichen in das Eingabefeld eintragen kann.</p> <p><strong>Lowercase:</strong> Alle Zeichen, die der Benutzer einträgt, werden automatisch in Kleinbuchstaben umgewandelt.</p> <p id="EditMulti"><strong>Multi:</strong> Ermöglicht mehr als eine Textzeile im Eingabefeld. Normalerweise muss diese Option nicht angegeben werden, da sie automatisch anhand der Höhe (H), der <a href="Gui.htm#R">Zeilen (R)</a> oder des Inhalts (<em>Text</em>) erkannt wird.</p> <p id="EditNum"><strong>Number:</strong> 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 <a href="#UpDown">UpDown</a>-Steuerelements an das Eingabefeld erzwungen werden.</p> <p><strong>Password:</strong> 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 <code>Password*</code>, dass das Sternchen als Maskierungszeichen verwendet wird, nicht der ausgefüllte Kreis. Hinweis: Diese Option funktioniert nicht bei mehrzeiligen Eingabefeldern.</p> <p><strong>ReadOnly:</strong> Verhindert, dass der Benutzer den Inhalt des Steuerelements ändern kann. Der Text kann jedoch immer noch gescrollt, markiert und in die Zwischenablage kopiert werden.</p> <p><strong>T</strong><em>n</em>: Mit dem Buchstaben T können Tabstopps innerhalb eines <a href="#EditMulti">mehrzeiligen Eingabefeldes</a> 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 <em>n</em> Dialogeinheiten innerhalb der verfügbaren Breite des Steuerelements gesetzt. Zum Beispiel bewirkt <code>MeineGui.Add("Edit", "vMeinEdit r16 t64")</code> eine Verdopplung des Standardabstands zwischen den Tabstopps. Geben Sie den Buchstaben T mehrmals wie folgt an, um benutzerdefinierte Tabstopps zu setzen: <code>MeineGui.Add("Edit", "vMeinEdit r16 t8 t16 t32 t64 t128")</code>. 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.</p> <p><strong>Uppercase:</strong> Alle Zeichen, die der Benutzer einträgt, werden automatisch in Großbuchstaben umgewandelt.</p> <p><strong>WantCtrlA:</strong> Geben Sie <code>-WantCtrlA</code> (minus WantCtrlA) an, um zu verhindern, dass der Benutzer den gesamten Text im Eingabefeld mit <kbd>Strg</kbd>+<kbd>A</kbd> markieren kann.</p> <p id="WantReturn"><strong>WantReturn:</strong> Geben Sie <code>-WantReturn</code> (minus WantReturn) an, um zu verhindern, dass <kbd>Enter</kbd> von einem mehrzeiligen Eingabefeld erfasst wird. Das Drücken von <kbd>Enter</kbd> wäre dann das gleiche wie, als würde man die <a href="#DefaultButton">Standardschaltfläche</a> des Fensters (falls vorhanden) drücken. Um trotzdem eine neue Zeile zu beginnen, kann der Benutzer <kbd>Strg</kbd>+<kbd>Enter</kbd> drücken.</p> <p><strong>WantTab:</strong> Bewirkt, dass <kbd>Tab</kbd> ein Tabulatorzeichen erzeugt, anstatt zum nächsten Steuerelement zu navigieren. Wenn diese Option nicht angegeben ist, kann der Benutzer <kbd>Strg</kbd>+<kbd>Tab</kbd> drücken, um ein Tabulatorzeichen innerhalb eines mehrzeiligen Eingabefeldes zu erzeugen. Hinweis: <em>WantTab</em> funktioniert auch in einem einzeiligen Eingabefeld.</p> <p><strong>Wrap:</strong> Geben Sie <code>-Wrap</code> (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) <a href="Gui.htm#Destroy">Zerstören</a> 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.</p> <p>Unter <a href="Gui.htm#OtherOptions">Allgemeine Optionen</a> finden Sie weitere Optionen wie <em>Right</em>, <em>Center</em> und <em>Hidden</em>. Siehe auch: <a href="Gui.htm#PosSize">Position und Größe von Steuerelementen ändern</a>.</p> <p><strong>Ein umfangreicheres Eingabefeld:</strong> 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 <a href="https://github.com/majkinetor/mm-autohotkey/tree/master/HiEdit">HiEdit auf GitHub</a>.</p> <h2 id="GroupBox">GroupBox</h2> <p>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.</p> <p>Zum Beispiel:</p> <pre>MeineGui.Add("GroupBox", "w200 h100", "Geographische Kriterien")</pre> <p>Oder:</p> <pre>MeineGui.AddGroupBox("w200 h100", "Geographische Kriterien")</pre> <p>Erscheinungsbild:</p> <img src="../static/ctrl_group.png" alt="GroupBox" /> <p>Standardmäßig kann der Titel einer GroupBox nur eine Textzeile enthalten. Um mehrere Zeilen zu erlauben, fügen Sie <code>Wrap</code> in <em>Optionen</em> ein.</p> <p>Optionen zum Ändern der Anzahl von Zeilen innerhalb des Steuerelements (oder der Höhe und Breite) finden Sie unter <a href="Gui.htm#PosSize">Position und Größe von Steuerelementen ändern</a>.</p> <h2 id="Hotkey">Hotkey</h2> <p>Ein Eingabefeld, das der Benutzer zur Eingabe einer Tastenkombination verwenden kann. Wenn der Benutzer z.B. <kbd>Strg</kbd>+<kbd>Alt</kbd>+<kbd>C</kbd> drückt, wird "STRG + ALT + C" im Eingabefeld angezeigt.</p> <p>Zum Beispiel:</p> <pre>MeineGui.Add("Hotkey", "vGewählterHotkey")</pre> <p>Oder:</p> <pre>MeineGui.AddHotkey("vGewählterHotkey")</pre> <p>Erscheinungsbild:</p> <img src="../static/ctrl_hotkey.png" alt="Hotkey" /> <p><a href="GuiControl.htm#Value">GuiControl.Value</a> gibt die Modifikatoren und den Namen des Hotkeys zurück, die kompatibel mit der <a href="Hotkey.htm">Hotkey</a>-Funktion sind. Beispiele: <code>^!C</code>, <code>+!Home</code>, <code>+^Down</code>, <code>^Numpad1</code>, <code>!NumpadEnd</code>. Wenn das Steuerelement keine Tastenkombination enthält, wird eine leere Zeichenkette zurückgegeben.</p> <p class="note"><strong>Hinweis:</strong> Einige Tasten werden unter demselben Namen angezeigt, aber unter verschiedenen Namen abgerufen. Zum Beispiel wird sowohl <code>^Numpad7</code> als auch <code>^NumpadHome</code> als "STRG + 7 (ZEHNERTASTATUR)" angezeigt.</p> <p>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. <code>MeineGui.Add("Hotkey", "vGewählterHotkey", "^!p")</code>. Es werden nur die Modifikatoren ^ (STRG), ! (ALT) und + (UMSCHALT) unterstützt. Weitere verfügbare Tastennamen finden Sie in der <a href="../KeyList.htm">Tastenliste</a>.</p> <p>Jedes Mal, wenn der Benutzer den Inhalt des Steuerelements ändert (durch Drücken einer Taste), wird das <a href="GuiOnEvent.htm#Change">Change</a>-Ereignis ausgelöst.</p> <p class="note"><strong>Hinweis:</strong> Das Ereignis wird auch bei einem unvollständigen Hotkey ausgelöst. Wenn der Benutzer z.B. <kbd>Strg</kbd> gedrückt hält, wird das Ereignis einmal ausgelöst und <a href="GuiControl.htm#Value">GuiControl.Value</a> nur ein Zirkumflex (^) zurückgeben. Wenn der Benutzer dann den Hotkey vervollständigt, wird das Ereignis erneut ausgelöst und <a href="GuiControl.htm#Value">GuiControl.Value</a> den vollständigen Hotkey zurückgeben.</p> <p>Fügen Sie das Wort <strong>Limit</strong> gefolgt von einer Summe der folgenden Zahlen ein, um die Benutzereingabe auf bestimmte Hotkeys zu beschränken:</p> <ul> <li>1: Ignoriert Tasten ohne Modifikatoren</li> <li>2: Ignoriert nur via <kbd>Umschalt</kbd> modifizierte Tasten</li> <li>4: Ignoriert nur via <kbd>Strg</kbd> modifizierte Tasten</li> <li>8: Ignoriert nur via <kbd>Alt</kbd> modifizierte Tasten</li> <li>16: Ignoriert via <kbd>Umschalt</kbd>+<kbd>Strg</kbd> modifizierte Tasten</li> <li>32: Ignoriert via <kbd>Umschalt</kbd>+<kbd>Alt</kbd> modifizierte Tasten</li> <li>64: Dieser Wert wird nicht unterstützt (verhält sich falsch)</li> <li>128: Ignoriert via <kbd>Umschalt</kbd>+<kbd>Strg</kbd>+<kbd>Alt</kbd> modifizierte Tasten</li> </ul> <p>Zum Beispiel bewirkt <code>Limit1</code>, dass der Benutzer keine modifikatorlosen Hotkeys wie z.B. Buchstaben und Zahlen eingeben kann, oder <code>Limit15</code>, dass der Benutzer mindestens zwei Modifikatortasten drücken muss. Gibt der Benutzer eine verbotene Modifikatorkombination ein, wird diese automatisch und visuell mit <kbd>Strg</kbd>+<kbd>Alt</kbd> ersetzt.</p> <p>Das Hotkey-Steuerelement hat nur begrenzte Möglichkeiten. Es unterstützt z.B. keine Maus/Controller-Hotkeys oder <kbd>Win</kbd> (LWin und RWin). Stellen Sie stattdessen eine oder mehrere <a href="#CheckBox">CheckBoxes</a> zur Verfügung, die der Benutzer verwenden kann, um zusätzliche Modifikatoren wie z.B. <kbd>Win</kbd> zu aktivieren.</p> <h2 id="Link">Link</h2> <p>Ein Text-Steuerelement, das Links enthalten kann, die denen in einem Webbrowser ähneln. Um einen anklickbaren Link im Steuerelement zu erstellen, umschließen Sie einen beliebigen Text mit <code>&lt;A&gt;</code> und <code>&lt;/A&gt;</code>. Obwohl dies wie HTML aussieht, unterstützen Link-Steuerelemente nur den Start-Tag <code>&lt;A&gt;</code> (optional mit einem ID- und/oder HREF-Attribut) und den End-Tag <code>&lt;/A&gt;</code>.</p> <p>Zum Beispiel:</p> <pre>MeineGui.Add("Link",, 'Das ist ein &lt;a href="https://www.autohotkey.com"&gt;Link&lt;/a&gt;') MeineGui.Add("Link",, 'Links können überall im Text angegeben werden, wie &lt;a id="A"&gt;hier&lt;/a&gt; oder &lt;a id="B"&gt;dort&lt;/a&gt;')</pre> <p>Oder:</p> <pre>MeineGui.AddLink(, 'Das ist ein &lt;a href="https://www.autohotkey.com"&gt;Link&lt;/a&gt;') MeineGui.AddLink(, 'Links können überall im Text angegeben werden, wie &lt;a id="A"&gt;hier&lt;/a&gt; oder &lt;a id="B"&gt;dort&lt;/a&gt;')</pre> <p>Erscheinungsbild:</p> <img src="../static/ctrl_link.png" alt="Link" /> <p>Jedes Mal, wenn der Benutzer einen Link anklickt, wird das <a href="GuiOnEvent.htm#Click">Click</a>-Ereignis ausgelöst. Wenn das Steuerelement keine Click-Rückruffunktion hat (das mit <a href="GuiOnEvent.htm">OnEvent</a> registriert wurde), wird der HREF-Wert des Links automatisch ausgeführt, als hätte man ihn an die <a href="Run.htm">Run</a>-Funktion übergeben.</p> <pre>MeineGui := Gui() LinkText := 'Klicken Sie auf die folgenden Links, um &lt;a href="notepad" id="notepad"&gt;Notepad&lt;/a&gt; auszuführen oder die &lt;a id="help" href="https://www.autohotkey.com/docs/"&gt;Online-Hilfe&lt;/a&gt; zu öffnen.' Link := MeineGui.Add("Link", "w200", LinkText) Link.OnEvent("Click", Link_Click) Link_Click(Ctrl, ID, HREF) { MsgText := Format(" ( ID: {1} HREF: {2} Diesen Link ausführen? )", ID, HREF) if MsgBox(MsgText,, "y/n") = "yes" Run(HREF) } MeineGui.Show()</pre> <h2 id="ListBox">ListBox</h2> <p>Ein Listenfeld mit Auswahlmöglichkeiten. Geben Sie im letzten Parameter von <a href="Gui.htm#Add">Gui.Add</a> ein <a href="Array.htm">Array</a> in Form von <code>["Auswahl1", "Auswahl2", "Auswahl3"]</code> an.</p> <p>Zum Beispiel:</p> <pre>MeineGui.Add("ListBox", "r5 vFarbwahl", ["Rot", "Grün", "Blau", "Schwarz", "Weiß"])</pre> <p>Oder:</p> <pre>MeineGui.AddListBox("r5 vFarbwahl", ["Rot", "Grün", "Blau", "Schwarz", "Weiß"])</pre> <p>Erscheinungsbild:</p> <img src="../static/ctrl_list.png" alt="ListBox" /> <p id="ChooseLB">Um einen Listeneintrag im Steuerelement vorab auszuwählen, fügen Sie in <em>Optionen</em> das Wort <strong>Choose</strong> ein, gefolgt von der Nummer des gewünschten Listeneintrags. Zum Beispiel bewirkt <code>Choose5</code>, dass der fünfte Listeneintrag vorab ausgewählt wird. Um mehrere Listeneinträge vorab auszuwählen, verwenden Sie <a href="GuiControl.htm#Choose">GuiControl.Choose</a> mehrmals (erfordert die <a href="#ListBoxMulti">Multi</a>-Option). Nach der Erstellung des Steuerelements kann mit <a href="GuiControl.htm#Value">GuiControl.Value</a>, <a href="GuiControl.htm#Text">GuiControl.Text</a> oder <a href="GuiControl.htm#Choose">GuiControl.Choose</a> ein anderer Listeneintrag ausgewählt werden und mit <a href="GuiControl.htm#Add">GuiControl.Add</a> oder <a href="GuiControl.htm#Delete">GuiControl.Delete</a> Listeneinträge hinzugefügt oder entfernt werden.</p> <p>Wenn die <a href="#ListBoxMulti">Multi</a>-Option fehlt, gibt <a href="GuiControl.htm#Value">GuiControl.Value</a> die Positionsnummer des aktuell ausgewählten Listeneintrags zurück (der erste Eintrag ist 1, der zweite 2 usw.), oder 0, wenn keiner ausgewählt ist, während <a href="GuiControl.htm#Text">GuiControl.Text</a> den Text des aktuell ausgewählten Listeneintrags zurückgibt. Wenn die <a href="#ListBoxMulti">Multi</a>-Option verwendet wird, gibt <a href="GuiControl.htm#Value">GuiControl.Value</a> und <a href="GuiControl.htm#Text">GuiControl.Text</a> ein Array von Listeneinträgen zurück, nicht einen einzelnen Listeneintrag.</p> <p><a href="Gui.htm#Submit">Gui.Submit</a> speichert <a href="GuiControl.htm#Text">GuiControl.Text</a>, es sei denn, das Wort <strong>AltSubmit</strong> ist in den <em>Optionen</em> des Steuerelements vorhanden, dann wird <a href="GuiControl.htm#Value">GuiControl.Value</a> gespeichert.</p> <p>Jedes Mal, wenn der Benutzer einen oder mehrere Listeneinträge aus- oder abwählt, wird das <a href="GuiOnEvent.htm#Change">Change</a>-Ereignis ausgelöst. Die Ereignisse <a href="GuiOnEvent.htm#DoubleClick">DoubleClick</a>, <a href="GuiOnEvent.htm#Focus">Focus</a> und <a href="GuiOnEvent.htm#LoseFocus">LoseFocus</a> werden ebenfalls unterstützt.</p> <p id="LBRedraw">Um das Hinzufügen sehr vieler Listeneinträge performanter zu machen, verwenden Sie <code>MeineListBox.Opt("-Redraw")</code>, bevor Sie die Operation durchführen, und danach <code>MeineListBox.Opt("+Redraw")</code>. Weitere Informationen finden Sie unter <a href="GuiControl.htm#redraw-remarks">Neuzeichnung</a>.</p> <h3 id="ListBox_Options">ListBox-Optionen</h3> <p><strong>Choose:</strong> Siehe <a href="#ChooseLB">oben</a>.</p> <p id="ListBoxMulti"><strong>Multi:</strong> Ermöglicht die Auswahl mehrerer Listeneinträge mit UMSCHALT- oder STRG-modifizierten Klicks (um eine modifikatorlose Mehrfachauswahl zu ermöglichen, geben Sie <a href="../misc/Styles.htm#LBS_MULTIPLESEL">die Zahl 8</a> anstelle des Wortes Multi an). In diesem Fall gibt <a href="Gui.htm#Submit">Gui.Submit</a> oder <a href="GuiControl.htm#Value">GuiControl.Value</a> ein Array von ausgewählten Positionsnummern zurück. Zum Beispiel bedeutet <code>[1, 2, 3]</code>, dass die ersten drei Listeneinträge ausgewählt sind. Mit <a href="GuiControl.htm#Text">GuiControl.Text</a> kann stattdessen ein Array von ausgewählten Texten abgerufen werden. Um einzelne Listeneinträge aus dem Array zu extrahieren, können Sie <code>MeineListBox.Text[1]</code> (wobei 1 der erste Listeneintrag ist) oder wie folgt eine <a href="For.htm">For-Schleife</a> verwenden:</p> <pre>For Index, Feld in MeineListBox.Text { MsgBox "Auswahl Nr. " Index " ist " Feld }</pre> <p><strong>ReadOnly:</strong> Verhindert, dass Listeneinträge beim Auswählen farblich hervorgehoben werden (<a href="Gui.htm#Submit">Gui.Submit</a>, <a href="GuiControl.htm#Value">GuiControl.Value</a> oder <a href="GuiControl.htm#Text">GuiControl.Text</a> geben aber weiterhin die ausgewählten Listeneinträge zurück).</p> <p><strong>Sort:</strong> Sortiert die Listeneinträge automatisch in alphabetischer Reihenfolge (dies hat auch Einfluss auf Listeneinträge, die nachträglich via <a href="GuiControl.htm#Add">GuiControl.Add</a> 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.</p> <p><strong>T</strong><em>n</em>: 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 <em>n</em> Dialogeinheiten innerhalb der verfügbaren Breite des Steuerelements gesetzt. Zum Beispiel bewirkt <code>MeineGui.Add("ListBox", "vMeineListBox t64")</code> eine Verdopplung des Standardabstands zwischen den Tabstopps. Geben Sie den Buchstaben T mehrmals wie folgt an, um benutzerdefinierte Tabstopps zu setzen: <code>MeineGui.Add("ListBox", "vMeineListBox t8 t16 t32 t64 t128")</code>. Für jede absolute Spaltenposition in der Liste wird ein Tabstopp gesetzt, bis zu einem Maximum von 50 Tabstopps.</p> <p><strong>0x100:</strong> Fügen Sie 0x100 in <em>Optionen</em> 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.</p> <p>Optionen zum Ändern der Anzahl von Textzeilen (oder der Höhe und Breite) finden Sie unter <a href="Gui.htm#PosSize">Position und Größe von Steuerelementen ändern</a>.</p> <h2 id="ListView">ListView</h2> <p>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.</p> <p>Zum Beispiel:</p> <pre>MeineGui.Add("ListView", "r20 w700", ["Name", "Ordner", "Größe (KB)", "Typ"])</pre> <p>Oder:</p> <pre>MeineGui.AddListView("r20 w700", ["Name", "Ordner", "Größe (KB)", "Typ"])</pre> <p>Erscheinungsbild:</p> <img src="../static/ctrl_listview.png" alt="ListView" /> <p>Weitere Informationen finden Sie auf der separaten <a href="ListView.htm">ListView</a>-Seite.</p> <h2 id="MonthCal">MonthCal</h2> <p>Ein hohes und breites Steuerelement, das alle Tage eines Monats im Kalenderformat anzeigt. Der Benutzer kann ein einzelnes Datum oder einen Datumsbereich auswählen.</p> <p>Zum Beispiel:</p> <pre>MeineGui.Add("MonthCal", "vMeinKalender")</pre> <p>Oder:</p> <pre>MeineGui.AddMonthCal("vMeinKalender")</pre> <p>Erscheinungsbild:</p> <img src="../static/ctrl_monthcal.png" alt="MonthCal" /> <p>Wenn ein anderes Datum als das heutige vorab ausgewählt sein soll, geben Sie im dritten Parameter ein Datum im YYYYMMDD-Format an (z.B. <code>20050531</code>). Ein Datumsbereich kann durch Einfügen eines Bindestrichs zwischen zwei Datumsangaben vorab ausgewählt werden (z.B. <code>"20050525-20050531"</code>).</p> <p>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 <code>R2</code> oder höher in <em>Optionen</em> an. Um mehrere Monate horizontal darzustellen, geben Sie <code class="no-highlight">W-2</code> (W minus 2) oder höher an. Diese Optionen können gleichzeitig vorhanden sein, um das Steuerelement in beide Richtungen zu erweitern.</p> <p>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.</p> <p><strong>Navigation mit der Tastatur:</strong> Die Tastaturnavigation im MonthCal-Steuerelement wird vollständig unterstützt, sofern es den Tastaturfokus hat. Alle unterstützten Tastaturkurzbefehle finden Sie unter <a href="#DateTime_Keyboard_Navigation">DateTime-Tastaturnavigation</a> (innerhalb des aufklappbaren Kalenders).</p> <p>Wenn <a href="Gui.htm#Submit">Gui.Submit</a> oder <a href="GuiControl.htm#Value">GuiControl.Value</a> verwendet wird, ist der Rückgabewert das Datum des aktuell ausgewählten Feldes im YYYYMMDD-Format (ohne die Zeitkomponente HH24MISS). Wenn die <a href="#MonthCalMulti">Mehrfachauswahl</a>-Option aktiv ist, wird stattdessen das Start- und Enddatum mit einem Bindestrich dazwischen gespeichert (z.B. <code class="no-highlight">20050101-20050108</code>). Wenn in einem Mehrfachauswahl-Kalender nur ein Datum ausgewählt wurde, sind Start- und Enddatum zwar vorhanden, aber identisch. Mit <a href="StrSplit.htm">StrSplit</a> können Start- und Enddatum voneinander getrennt werden. Das folgende Beispiel speichert das Startdatum in Datum[1] und das Enddatum in Datum[2]: <code>Datum := StrSplit(MeinMonthCal.Value, "-")</code>.</p> <p>Jedes Mal, wenn der Benutzer die Auswahl ändert, wird das <a href="GuiOnEvent.htm#Change">Change</a>-Ereignis ausgelöst.</p> <p>Bei Datumsangaben im YYYYMMDD-Format kann MM und/oder DD weggelassen werden, so dass diese jeweils als 1 interpretiert werden. Zum Beispiel wird <code class="no-highlight">200205</code> als 20020501 und <code class="no-highlight">2005</code> als 20050101 behandelt.</p> <h3 id="MonthCal_Options">MonthCal-Optionen</h3> <p id="MonthCalMulti"><strong>Multi:</strong> 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: <code>MeineGui.Add("MonthCal", "vMeinKalender", "20050101-20050108")</code>. Diese Option kann nach der Erstellung des Steuerelements nicht mehr geändert werden.</p> <p><strong>Range:</strong> 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 <code class="no-highlight">Range20050101-20050615</code>, 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 <code>Range20010101</code>, dass kein Datum vor 2001 ausgewählt werden kann, oder <code class="no-highlight">Range-20091231</code> (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.</p> <p><strong>4:</strong> Fügen Sie die Zahl 4 in <em>Optionen</em> ein, um die Kalenderwochen (1-53) auf der linken Seite jeder Tageszeile anzuzeigen. Die Wochennummerierung wird durch die lokalen Benutzereinstellungen des Betriebssystems bestimmt. Die drei möglichen Modi sind in der Dokumentation zu <a href="https://learn.microsoft.com/windows/win32/intl/locale-ifirstweekofyear">LOCALE_IFIRSTWEEKOFYEAR</a> beschrieben.</p> <p><strong>8:</strong> Fügen Sie die Zahl 8 in <em>Optionen</em> ein, um das Hervorheben des heutigen Datums im Steuerelement zu verhindern.</p> <p><strong>16:</strong> Fügen Sie die Zahl 16 in <em>Optionen</em> ein, um die Anzeige des heutigen Datums im unteren Bereich des Steuerelements zu verhindern.</p> <p><strong>Farben:</strong> Die Farben der Tageszahlen im Kalender richten sich nach den Farben, die via <a href="Gui.htm#SetFont">Gui.SetFont</a> oder <a href="Gui.htm#OtherOptions">c-Option</a> festgelegt wurden. Um die Farben der anderen Bereiche des Kalenders zu ändern, gehen Sie wie folgt vor:</p> <pre><a href="SendMessage.htm">SendMessage</a> 0x100A, 5, 0xFFAA99, "SysMonthCal321" <em>; 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).</em></pre> <a id="Pic"></a><h2 id="Picture">Picture (oder Pic)</h2> <p>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 href="../Variables.htm#WorkingDir">A_WorkingDir</a>-Verzeichnis vermutet.</p> <p>Zum Beispiel:</p> <pre>MeineGui.Add("Picture", "w300 h-1", "C:\Meine Bilder\Firmenlogo.gif")</pre> <p>Oder:</p> <pre>MeineGui.AddPicture("w300 h-1", "C:\Meine Bilder\Firmenlogo.gif")</pre> <p>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 <code>"w200 h-1"</code>, 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 ein Fehler ausgelöst und das Steuerelement nicht hinzugefügt.</p> <p>Picture-Steuerelemente unterstützen das <a href="GuiOnEvent.htm#Click">Click</a>- und <a href="GuiOnEvent.htm#DoubleClick">DoubleClick</a>-Ereignis, mit der gleichen <a href="#SS_NOTIFY">Einschränkung</a> wie bei Text-Steuerelementen.</p> <p>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 den <a href="#SS_NOTIFY">SS_NOTIFY-Style</a> hat (der automatisch via <a href="GuiOnEvent.htm">OnEvent</a> hinzugefügt wird), muss das Bild nach diesen Steuerelementen erstellt werden und 0x4000000 (WS_CLIPSIBLINGS) in den <em>Optionen</em> des Picture-Steuerelements eingefügt werden. Dieser Trick kann auch verwendet werden, um ein Bild als Hintergrund für ein <a href="#Tab">Tab</a>- oder <a href="ListView.htm">ListView</a>-Steuerelement zu definieren.</p> <p id="IconSupport"><strong>Symbole, Cursor und animierte Cursor:</strong> 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 <em>Optionen</em> das Wort Icon gefolgt von der Nummer der Gruppe ein. Das folgende Beispiel lädt das Standardsymbol aus der zweiten Symbolgruppe: <code>MeineGui.Add("Picture", "Icon2", "C:\Meine Anwendung.exe")</code>.</p> <p id="PicAltSubmit">Die Angabe des Wortes <strong>AltSubmit</strong> in <em>Optionen</em> 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 GIF-Bild mit transparentem Hintergrund als transparente Bitmap geladen wird, die den Effekt von <a href="Gui.htm#BackgroundTrans">BackgroundTrans</a> zulässt (Symbole unterstützen Transparenz ohne AltSubmit).</p> <p>Die ohne GDIPlus unterstützten Bildformate sind GIF, JPG, BMP, ICO, CUR und ANI. GDIPlus wird standardmäßig für andere Bildformate wie PNG, TIF, Exif, WMF und EMF verwendet.</p> <p><strong>Animierte GIF-Bilder:</strong> 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 <a href="https://www.autohotkey.com/boards/viewtopic.php?t=6457">AutoHotkey-Foren</a> gezeigt. Alternativ können Sie auch das <a href="#ActiveX">ActiveX</a>-Steuerelement verwenden. Zum Beispiel:</p> <pre><em>; Geben Sie unten den Pfad zur GIF-Datei an, die animiert werden soll (lokale Dateien sind auch möglich):</em> pic := "http://www.animatedgif.net/cartoons/A_5odie_e0.gif" MeineGui := Gui() MeineGui.Add("ActiveX", "w100 h150", "mshtml:&lt;img src='" pic "' /&gt;") MeineGui.Show()</pre> <p>Anstelle eines Dateinamens kann auch ein <a href="../misc/ImageHandles.htm">Bitmap- oder Symbol-Handle</a> verwendet werden. Zum Beispiel <code>"HBITMAP:" handle</code>.</p> <h2 id="Progress">Progress</h2> <p>Ein zweifarbiger Balken, der den Fortschritt einer Operation visuell darstellt.</p> <p>Zum Beispiel:</p> <pre>MeineGui.Add("Progress", "w200 h20 cBlue vMeinFortschritt", 75)</pre> <p>Oder:</p> <pre>MeineGui.AddProgress("w200 h20 cBlue vMeinFortschritt", 75)</pre> <p>Erscheinungsbild:</p> <img src="../static/ctrl_progress.png" alt="Progress" /> <p>Geben Sie im dritten 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 <a href="GuiControl.htm#Name">Namen</a> MeinFortschritt):</p> <pre>MeineGui["MeinFortschritt"].<a href="GuiControl.htm#Value">Value</a> += 20 <em>; Aktuelle Position um 20 erhöhen.</em> MeineGui["MeinFortschritt"].Value := 50 <em>; Aktuelle Position auf 50 setzen.</em></pre> <p>Bei horizontalen Fortschrittsbalken ist die Dicke des Balkens identisch zur Höhe des Steuerelements. Bei vertikalen Fortschrittsbalken ist sie identisch zur Breite des Steuerelements.</p> <h3 id="Progress_Options">Progress-Optionen</h3> <p><strong>C</strong><em>n</em>: Ändert die Farbe des Balkens. Geben Sie für <em>n</em> einen der 16 primären <a href="../misc/Colors.htm">HTML-Farbnamen</a> oder einen 6-stelligen RGB-Farbwert an. Beispiele: <code>cRed</code>, <code>cFFFF33</code>, <code>cDefault</code>. Wenn die C-Option nie verwendet wird (oder <code>cDefault</code> angegeben ist), wird die Standardbalkenfarbe des Systems verwendet.</p> <p><strong>Background</strong><em>N</em>: Ändert die Hintergrundfarbe des Balkens. Geben Sie für <em>N</em> einen der 16 primären <a href="../misc/Colors.htm">HTML-Farbnamen</a> oder einen 6-stelligen RGB-Farbwert an. Beispiele: <code>BackgroundGreen</code>, <code>BackgroundFFFF33</code>, <code>BackgroundDefault</code>. Wenn die Background-Option nie verwendet wird (oder <code>BackgroundDefault</code> angegeben ist), wird die Hintergrundfarbe des Fensters oder die des darunter liegenden <a href="#Tab">Tab-Steuerelements</a> verwendet.</p> <p><strong>Range:</strong> 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 <code class="no-highlight">Range0-1000</code> Zahlen zwischen 0 und 1000; <code class="no-highlight">Range-50-50</code> Zahlen zwischen -50 und 50; und <code class="no-highlight">Range-10--5</code> Zahlen zwischen -10 und -5.</p> <p><strong>Smooth:</strong> Zeigt einen einfachen durchgehenden Balken an. Wenn diese Option fehlt und der Balken keine benutzerdefinierten Farben hat, wird der Balken an das aktuelle Windows-Design angepasst. Andernfalls wird der Balken in mehreren Segmenten dargestellt.</p> <p><strong>Vertical:</strong> Bewirkt, dass der Balken steigt oder fällt, anstatt sich horizontal zu bewegen.</p> <p>Alle oben genannten Optionen können via <a href="GuiControl.htm#Opt">GuiControl.Opt</a> geändert werden, nachdem das Steuerelement erstellt wurde.</p> <h2 id="Radio">Radio</h2> <p>Ein Optionsfeld in Form eines kleinen leeren Kreises, das ein- oder ausgeschaltet sein kann.</p> <p>Zum Beispiel:</p> <pre>MeineGui.Add("Radio", "vMeineRadioGruppe", "Artikel erst versenden, wenn sie auf Lager sind.")</pre> <p>Oder:</p> <pre>MeineGui.AddRadio("vMeineRadioGruppe", "Artikel erst versenden, wenn sie auf Lager sind.")</pre> <p>Erscheinungsbild:</p> <img src="../static/ctrl_radio.png" alt="Radio" /> <p>Solche Steuerelemente befinden sich üblicherweise in <em>Radio-Gruppen</em>, 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 <strong>Group</strong> in die <em>Optionen</em> des ersten Radio-Steuerelements ein - oder fügen Sie einfach ein Nicht-Radio-Steuerelement dazwischen ein, was automatisch eine neue Gruppe beginnt.</p> <p>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 Zeilenvorschübe (`n) zum Starten neuer Zeilen enthalten. Wenn in <em>Optionen</em> eine Breite (W), aber keine <a href="Gui.htm#R">Zeilen (R)</a> oder Höhe (H) angegeben ist, werden Textzeilen bei Bedarf umbrochen und die Höhe des Steuerelements automatisch gesetzt.</p> <p>Fügen Sie das Wort <strong>Checked</strong> in <em>Optionen</em> 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, <code>"Checked"</code> ist dasselbe wie <code>"Checked" VarMitEins</code>.</p> <p><a href="GuiControl.htm#Value">GuiControl.Value</a> gibt 1 zurück, wenn das Steuerelement eingeschaltet ist, oder 0, wenn es ausgeschaltet ist. Um stattdessen die Positionsnummer des eingeschalteten Radio-Steuerelements in einer Radio-Gruppe abzurufen, geben Sie einem dieser Steuerelemente einen <a href="GuiControl.htm#Name">Namen</a> und verwenden Sie <a href="Gui.htm#submit-radio">Gui.Submit</a>.</p> <p>Jedes Mal, wenn der Benutzer das Radio-Steuerelement einschaltet, wird das <a href="GuiOnEvent.htm#Click">Click</a>-Ereignis ausgelöst. Im Gegensatz zum Einzelvariablenmodus, der im vorigen Absatz beschrieben wurde, muss die Ereignis-Rückruffunktion für jedes Radio-Steuerelement in einer Radio-Gruppe registriert werden, bei dem sie aufgerufen werden soll. Auf diese Weise ist es möglich, das Anklicken bestimmter Radio-Steuerelemente zu ignorieren. </p> <p>Die Ereignisse <a href="GuiOnEvent.htm#DoubleClick">DoubleClick</a>, <a href="GuiOnEvent.htm#Focus">Focus</a> und <a href="GuiOnEvent.htm#LoseFocus">LoseFocus</a> werden ebenfalls unterstützt. Da diese Ereignisse nur ausgelöst werden, wenn das Steuerelement den BS_NOTIFY-Style (0x4000) hat, fügt <a href="GuiOnEvent.htm">OnEvent</a> diesen Style automatisch hinzu.</p> <p>Bekannte Einschränkung: Bestimmte Desktop-Designs können den Text eines Radio-Steuerelements nicht ordnungsgemäß darstellen. Sollte dies der Fall sein, versuchen Sie, <code>-Wrap</code> (minus Wrap) in die Optionen des Steuerelements einzufügen. Dies verhindert aber auch, dass mehr als eine Textzeile angezeigt wird.</p> <h2 id="Slider">Slider</h2> <p>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.</p> <p>Zum Beispiel:</p> <pre>MeineGui.Add("Slider", "vMeinSchieberegler", 50)</pre> <p>Oder:</p> <pre>MeineGui.AddSlider("vMeinSchieberegler", 50)</pre> <p>Erscheinungsbild:</p> <img src="../static/ctrl_slider.png" alt="Slider" /> <p>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.</p> <p>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: <kbd>↑</kbd>, <kbd>→</kbd>, <kbd>↓</kbd>, <kbd>←</kbd>, <kbd>Bild↑</kbd>, <kbd>Bild↓</kbd>, <kbd>Pos1</kbd> und <kbd>Ende</kbd>.</p> <p>Wenn <a href="GuiControl.htm#Value">GuiControl.Value</a> oder <a href="Gui.htm#Submit">Gui.Submit</a> verwendet wird, wird die aktuelle numerische Position des Schiebereglers zurückgegeben bzw. gespeichert.</p> <h3 id="slider-change">Erkennen von Änderungen</h3> <p>Standardmäßig wird das <a href="GuiOnEvent.htm#Change">Change</a>-Ereignis des Schiebereglers ausgelöst, wenn der Benutzer aufgehört hat, den Regler zu verschieben, z.B. beim Loslassen der linken Maustaste nach einem Ziehvorgang. Wenn das Wort <strong>AltSubmit</strong> in den Optionen des Steuerelements vorhanden ist, wird das Change-Ereignis auch (sehr häufig) nach jeder sichtbaren Bewegung des Reglers ausgelöst, während der Benutzer ihn mit der Maus zieht.</p> <pre class="Syntax">Ctrl_<span class="func">Change</span>(GuiCtrlObj, Info)</pre> <dl> <dt>Info</dt> <dd> <p>Typ: <a href="../Concepts.htm#numbers">Integer</a></p> <p>Ein numerischer Wert aus den unteren Tabellen, der angibt, wie der Schieberegler verschoben wurde. Diese Werte und ihre Namen sind im Windows SDK definiert.</p> </dd> </dl> <table class="info"> <tr><th>Wert</th><th style="width: 11em;">Name</th><th>Bedeutung</th></tr> <tr><td>0</td><td>TB_LINEUP</td><td>Der Benutzer hat <kbd>←</kbd> oder <kbd>↑</kbd> gedrückt.</td></tr> <tr><td>1</td><td>TB_LINEDOWN</td><td>Der Benutzer hat <kbd>→</kbd> oder <kbd>↓</kbd> gedrückt.</td></tr> <tr><td>2</td><td>TB_PAGEUP</td><td>Der Benutzer hat <kbd>Bild↑</kbd> gedrückt.</td></tr> <tr><td>3</td><td>TB_PAGEDOWN</td><td>Der Benutzer hat <kbd>Bild↓</kbd> gedrückt.</td></tr> <tr><td>4</td><td>TB_THUMBPOSITION</td><td>Der Benutzer hat den Regler via Mausrad oder Ziehen-und-Ablegen verschoben.</td></tr> <tr><td>6</td><td>TB_TOP</td><td>Der Benutzer hat <kbd>Pos1</kbd> gedrückt, um den Schieberegler ganz links oder oben zu positionieren. </td></tr> <tr><td>7</td><td>TB_BOTTOM</td><td>Der Benutzer hat <kbd>Ende</kbd> gedrückt, um den Schieberegler ganz rechts oder unten zu positionieren. </td></tr> </table> <p><strong>Nur wenn die AltSubmit-Option vorhanden ist:</strong></p> <table class="info"> <tr><th>Wert</th><th style="width: 11em;">Name</th><th>Bedeutung</th></tr> <tr><td>5</td><td>TB_THUMBTRACK</td><td>Der Benutzer zieht den Regler momentan mit der Maus, d.h. die Maustaste wird aktuell gedrückt gehalten.</td></tr> <tr><td>8</td><td>TB_ENDTRACK</td><td>Der Benutzer hat aufgehört, den Regler via Maus oder Tastatur zu verschieben. Hinweis: Das Change-Ereignis wird, außer beim Verschieben via Mausrad (#4), für #8 erneut ausgelöst, auch dann, wenn es bereits für eine der anderen Ziffern ausgelöst wurde.</td></tr> </table> <h3 id="Slider_Options">Slider-Optionen</h3> <p><strong>Buddy1</strong> und <strong>Buddy2</strong>: 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 <a href="GuiControl.htm#Name">Namen</a> oder die <a href="GuiControl.htm#Hwnd">HWND-Nummer (eindeutige ID)</a> eines existierenden Steuerelements an. Zum Beispiel bewirkt <code>Buddy1MeinObertext</code>, dass das Steuerelement mit dem Namen MeinObertext zugewiesen wird. Der Text oder die ClassNN-Bezeichnung eines Steuerelements kann ebenfalls verwendet werden, allerdings nur bis zum ersten Leer- oder Tabulatorzeichen.</p> <p><strong>Center:</strong> Der Regler (verschiebbare Knopf) ist nicht wie üblich an einem Ende spitzförmig, sondern wird als Rechteck dargestellt.</p> <p><strong>Invert:</strong> 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.</p> <p><strong>Left:</strong> 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.</p> <p><strong>Line:</strong> 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: <code>Line2</code>.</p> <p><strong>NoTicks:</strong> Entfernt die Teilstriche entlang der Linie.</p> <p><strong>Page:</strong> Bestimmt die Anzahl der Positionen, die verschoben werden, wenn der Benutzer <kbd>Bild↑</kbd> oder <kbd>Bild↓</kbd> drückt. Geben Sie nach dem Wort Page die Anzahl der zu verschiebenden Positionen an. Zum Beispiel: <code>Page10</code>.</p> <p><strong>Range:</strong> 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 <code class="no-highlight">Range1-1000</code> die Auswahl einer Zahl zwischen 1 und 1000; <code class="no-highlight">Range-50-50</code> eine Zahl zwischen -50 und 50; und <code class="no-highlight">Range-10--5</code> eine Zahl zwischen -10 und -5.</p> <p><strong>Thick:</strong> Bestimmt die Länge des Reglers (verschiebbaren Knopfs). Geben Sie nach dem Wort Thick die Dicke in Pixel an (z.B. <code>Thick30</code>). Um den Regler dicker zu machen, ist es wahrscheinlich notwendig, entweder die Center-Option anzugeben oder das Design des Steuerelements zu entfernen (dazu muss <code>-Theme</code> in den Optionen des Steuerelements angegeben werden).</p> <p><strong>TickInterval:</strong> 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 <code>TickInterval10</code>, dass an jede 10. Position ein Teilstrich angezeigt wird.</p> <p><strong>ToolTip:</strong> 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: <code>ToolTipLeft</code> oder <code>ToolTipRight</code> (für vertikale Schieberegler); <code>ToolTipTop</code> oder <code>ToolTipBottom</code> (für horizontale Schieberegler).</p> <p><strong>Vertical:</strong> Bewirkt, dass der Regler hoch oder runter statt nach links oder rechts geschoben werden muss.</p> <p>Alle oben genannten Optionen können via <a href="GuiControl.htm#Opt">GuiControl.Opt</a> geändert werden, nachdem das Steuerelement erstellt wurde.</p> <h2 id="StatusBar">StatusBar</h2> <p>Eine Leiste mit Text und/oder Symbolen am unteren Rand eines Fensters, die üblicherweise verwendet wird, um geänderte Zustände zu melden.</p> <p>Zum Beispiel:</p> <pre>SB := MeineGui.Add("StatusBar",, "Starttext der Leiste (kann leer gelassen werden).") SB.SetText("Es sind " . ReihenAnzahl . " Reihen markiert.")</pre> <p>Oder:</p> <pre>SB := MeineGui.AddStatusBar(, "Starttext der Leiste (kann leer gelassen werden).") SB.SetText("Es sind " . ReihenAnzahl . " Reihen markiert.")</pre> <p>Erscheinungsbild:</p> <img src="../static/ctrl_status.png" alt="StatusBar" /> <p>Für eine einfache Statusleiste genügt es, die <a href="#SB_SetText">SetText-Methode</a> aufzurufen, um dem Benutzer mitzuteilen, das sich etwas geändert hat. Um mehr als eine Information zu melden, kann die Leiste mit der <a href="#SB_SetParts">SetParts-Methode</a> in mehrere Segmente aufgeteilt werden. Mit der <a href="#SB_SetIcon">SetIcon-Methode</a> können Symbole in die Leiste eingefügt werden.</p> <h3 id="StatusBar_Methods">StatusBar-Methoden</h3> <div class="methodShort" id="SB_SetText"> <h3>SetText</h3> <p>Zeigt <em>NeuerText</em> in einem bestimmten Segment der Statusleiste an.</p> <pre class="Syntax"><a href="GuiControl.htm">GuiCtrl</a>.<span class="func">SetText</span>(NeuerText <span class="optional">, SegmentNummer, Style</span>)</pre> <h4 id="SB_SetText_Parameters">Parameter</h4> <dl><dt>NeuerText</dt><dd> <p>Typ: <a href="../Concepts.htm#strings">Zeichenkette</a></p> <p>Es können bis zu zwei Tabulatorzeichen (`t) in <em>NeuerText</em> 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.</p></dd><dt>SegmentNummer</dt><dd> <p>Typ: <a href="../Concepts.htm#numbers">Integer</a></p> <p>Wenn weggelassen, wird standardmäßig 1 verwendet. Andernfalls geben Sie einen Integer im Bereich von 1 bis 256 an.</p></dd><dt>Style</dt><dd> <p>Typ: <a href="../Concepts.htm#numbers">Integer</a></p> <p>Wenn weggelassen, 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.</p></dd></dl> </div> <div class="methodShort" id="SB_SetParts"> <h3>SetParts</h3> <p>Unterteilt die Leiste in mehrere Segmente mit bestimmten Breiten (in Pixel).</p> <pre class="Syntax"><a href="GuiControl.htm">GuiCtrl</a>.<span class="func">SetParts</span>(<span class="optional">Breite1, Breite2, ... Breite255</span>)</pre> <h4 id="SB_SetParts_Parameters">Parameter</h4> <dl><dt>Breite1 ... Breite255</dt><dd> <p>Typ: <a href="../Concepts.htm#numbers">Integer</a></p> <p>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 <code>SB.SetParts(50, 50)</code>, dass drei Segmente erstellt werden: Die ersten zwei mit einer Breite von 50 und das letzte mit der verbleibenden Breite.</p></dd></dl> <h4 id="SB_SetParts_Return_Value">Rückgabewert</h4> <p>Typ: <a href="../Concepts.htm#numbers">Integer</a></p> <p>Diese Methode gibt das Fensterhandle (HWND) der Statusleiste zurück. Die HWND-Nummer (eindeutige ID) eines Steuerelements wird oft in Verbindung mit <a href="PostMessage.htm">PostMessage</a>, <a href="SendMessage.htm">SendMessage</a> und <a href="DllCall.htm">DllCall</a> verwendet. Diese Nummer kann auch direkt in einem <a href="Control.htm#Parameter">Steuerelement-Parameter</a> verwendet werden.</p> <h4 id="SB_SetParts_Remarks">Bemerkungen</h4> <p>Alle Segmente, die mit dieser Methode "gelöscht" wurden, werden das nächste Mal, wenn sie angezeigt werden, vorerst ohne Text dargestellt (außerdem werden ihre Symbole automatisch zerstört).</p></div> <div class="methodShort" id="SB_SetIcon"> <h3>SetIcon</h3> <p>Zeigt ein kleines Symbol links neben dem Text eines bestimmten Segments an.</p> <pre class="Syntax"><a href="GuiControl.htm">GuiCtrl</a>.<span class="func">SetIcon</span>(DateiName <span class="optional">, SymbolNummer, SegmentNummer</span>)</pre> <h4 id="SB_SetIcon_Parameters">Parameter</h4> <dl><dt>DateiName</dt><dd> <p>Typ: <a href="../Concepts.htm#strings">Zeichenkette</a></p> <p>Der Pfad zu einer Symbol- oder Bilddatei, oder ein <a href="../misc/ImageHandles.htm">Bitmap- oder Symbol-Handle</a> wie <code>"HICON:" handle</code>. Eine Liste unterstützter Formate finden Sie unter <a href="#IconSupport">Picture</a>.</p></dd> <dt>SymbolNummer</dt><dd> <p>Typ: <a href="../Concepts.htm#numbers">Integer</a></p> <p>Wenn weggelassen, wird standardmäßig 1 verwendet (die erste Symbolgruppe). Andernfalls geben Sie die Nummer der Symbolgruppe an, die in der Datei verwendet werden soll. Zum Beispiel bewirkt <code>SB.SetIcon("Shell32.dll", 2)</code>, dass das Standardsymbol aus der zweiten Symbolgruppe geladen wird. Wenn negativ, wird dessen Absolutwert als Ressourcen-ID eines Symbols innerhalb einer EXE-Datei vermutet.</p></dd><dt>SegmentNummer</dt><dd> <p>Typ: <a href="../Concepts.htm#numbers">Integer</a></p> <p>Wenn weggelassen, wird standardmäßig 1 verwendet. Andernfalls geben Sie einen Integer im Bereich von 1 bis 256 an.</p></dd></dl> <h4 id="SB_SetIcon_Return_Value">Rückgabewert</h4> <p>Typ: <a href="../Concepts.htm#numbers">Integer</a></p> <p>Diese Methode gibt das Handle des Symbols (HICON) 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 mit dieser Methode durch ein neues Symbol ersetzt wird. Dies lässt sich wie folgt vermeiden:</p> <pre><a href="SendMessage.htm">SendMessage</a>(0x040F, SegmentNummer - 1, HICON, SB) <em>; 0x040F ist SB_SETICON.</em></pre></div> <h3 id="StatusBar_Usage">StatusBar-Verwendung</h3> <p><strong>Reaktion auf Mausklicks:</strong> Jedes Mal, wenn der Benutzer auf die Leiste klickt, wird das <a href="GuiOnEvent.htm#Click">Click</a>-, <a href="GuiOnEvent.htm#DoubleClick">DoubleClick</a>- oder <a href="GuiOnEvent.htm#ContextMenu">ContextMenu</a>-Ereignis ausgelöst und der <em>Info</em>- oder <em>Element</em>-Parameter auf die Segmentnummer gesetzt. Allerdings kann die Nummer ein sehr großer Integer sein, wenn der Benutzer in der Nähe des Größenziehpunkts auf der rechten Seite der Leiste klickt.</p> <p><strong>Schrift und Farbe:</strong> Obwohl Schriftgröße, Schriftart und Schriftstil über <a href="Gui.htm#SetFont">Gui.SetFont</a> festgelegt werden können (wie bei den meisten anderen Steuerelementen auch), kann die Textfarbe nicht geändert werden. Um die Hintergrundfarbe der Statusleiste zu ändern, fügen Sie in <em>Optionen</em> das Wort <strong>Background</strong> gefolgt von einem Farbnamen (siehe <a href="../misc/Colors.htm">Farbentabelle</a>) oder einem RGB-Wert (mit oder ohne 0x-Präfix) ein. Beispiele: <code>BackgroundSilver</code>, <code>BackgroundFFDD99</code>, <code>BackgroundDefault</code>. Beachten Sie, dass das Steuerelement das klassische Design haben muss. Daher muss die <code>-Theme</code>-Option zusammen mit der Background-Option angegeben werden, z.B. <code>-Theme BackgroundSilver</code>.</p> <p><strong>Statusleiste verstecken:</strong> Um die Leiste versteckt zu erstellen, verwenden Sie <code>SB := MeineGui.Add("StatusBar", "Hidden")</code>. Um die Leiste irgendwann nach ihrer Erstellung zu verstecken, verwenden Sie <code>SB.Visible := false</code>. Mit <code>SB.Visible := true</code> 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 <code>MeineGui.Show("<a href="Gui.htm#AutoSize">AutoSize</a>")</code>.</p> <p><strong>Styles (selten verwendet):</strong> Weitere Styles finden Sie in der <a href="../misc/Styles.htm#StatusBar">Style-Tabelle der Statusleiste</a>.</p> <p><strong>Bekannte Einschränkungen:</strong> 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 <a href="GuiOnEvent.htm#Size">Size</a>-Ereignis dynamisch zu verkleinern. 2) Optionen zum Ändern der Position und Größe werden ignoriert. 3) Jedes Fenster kann maximal eine Statusleiste enthalten.</p> <p><strong>Beispiel:</strong> <a href="TreeView.htm#ExAdvanced">Beispiel #1</a> im unteren Bereich der TreeView-Seite zeigt eine segmentierte Statusleiste.</p> <a id="Tab2"></a><h2 id="Tab">Tab3 / Tab2 / Tab</h2> <p>Ein großes Steuerelement, das dazu dient, auf mehreren Ebenen unterschiedliche Steuerelemente anzuzeigen. Von nun an werden diese Ebenen "Tabs" genannt.</p> <p>Es gibt drei Arten von Tab-Steuerelementen:</p> <ul> <li><strong>Tab3:</strong> Tab3 behebt einige Probleme bzgl. Tab2 und Tab. Steuerelemente werden innerhalb eines unsichtbaren "Tab-Dialogfensters" platziert, das zusammen mit dem Tab-Steuerelement verschoben oder vergrößert/verkleinert wird. Das Tab-Steuerelement wird standardmäßig im aktuellen Windows-Design dargestellt.</li> <li><strong>Tab2:</strong> Tab2 behebt seltene Neuzeichnungsprobleme im originalen Tab-Steuerelement, aber verursacht <a href="#Tab2_Issues">einige andere Probleme</a>.</li> <li><strong>Tab:</strong> Tab wird aus Gründen der Abwärtskompatibilität beibehalten, da Tab2/Tab3 und Tab <a href="#Tab_vs">unterschiedliche Verhaltensmerkmale</a> aufweisen.</li> </ul> <p>Zum Beispiel:</p> <pre>MeineGui.Add("Tab3",, ["Allgemein", "Ansicht", "Einstellungen"])</pre> <p>Oder:</p> <pre>MeineGui.AddTab3(, ["Allgemein", "Ansicht", "Einstellungen"])</pre> <p>Erscheinungsbild:</p> <img src="../static/ctrl_tab.png" alt="Tab" /> <p>Geben Sie im letzten Parameter ein <a href="Array.htm">Array</a> von Tabnamen an. Standardmäßig werden alle Steuerelemente, die nach dem Erstellen eines Tab-Steuerelements hinzugefügt werden, dem ersten Tab zugeordnet. Um dies zu ändern, verwenden Sie die unten beschriebene UseTab-Methode. Weitere Informationen und ein Beispiel finden Sie unter <a href="#Tab_Usage">Tab-Verwendung</a>.</p> <h3 id="Tab_Methods">Tab-Methoden</h3> <div class="methodShort" id="Tab_UseTab"> <h3>UseTab</h3> <p>Gibt den übergeordneten Tab für danach erstellte Steuerelemente an.</p> <pre class="Syntax"><a href="GuiControl.htm">GuiCtrl</a>.<span class="func">UseTab</span>(<span class="optional">Wert, GenaueÜbereinstimmung</span>)</pre> <h4 id="Tab_UseTab_Parameters">Parameter</h4> <dl> <dt>Wert</dt><dd> <p>Typ: <a href="../Concepts.htm#numbers">Integer</a> oder <a href="../Concepts.htm#strings">Zeichenkette</a></p> <p>Wenn leer oder weggelassen, wird standardmäßig 0 verwendet, was dazu führt, dass danach erstellte Steuerelemente außerhalb des Tab-Steuerelements platziert werden. Andernfalls geben Sie 1 für den ersten Tab, 2 für den zweiten und so weiter an.</p> <p>Wenn <em>Wert</em> eine Zeichenkette (oder numerische Zeichenkette) ist, wird ein Tab verwendet, dessen Name mit <em>Wert</em> beginnt. Die Suche erfolgt nicht Groß-/Kleinschreibung-sensitiv. Wenn z.B. das Steuerelement den Tab "UNIX-Text" enthält, genügt die Angabe des Wortes unix (kleingeschrieben), um diesen Tab zu verwenden. Mit <em>GenaueÜbereinstimmung</em> kann dieses Verhalten geändert werden.</p> </dd> <dt>GenaueÜbereinstimmung</dt><dd> <p>Typ: <a href="../Concepts.htm#boolean">Boolesch</a></p> <p>Wenn weggelassen, wird standardmäßig false verwendet.</p> <p>Wenn <strong>false</strong>, wird ein Tab verwendet, dessen Name mit <em>Wert</em> beginnt, wie oben beschrieben.</p> <p>Wenn <strong>true</strong>, muss <em>Wert</em> exakt mit dem Namen des Tabs übereinstimmen (ist aber weiterhin nicht Groß-/Kleinschreibung-sensitiv).</p> </dd> </dl> </div> <h3 id="Tab_Usage">Tab-Verwendung</h3> <p id="ChooseTab">Um einen Tab im Steuerelement vorab auszuwählen, fügen Sie in <em>Optionen</em> das Wort <strong>Choose</strong> ein, gefolgt von der Nummer des gewünschten Tabs. Zum Beispiel bewirkt <code>Choose5</code>, dass der fünfte Tab vorab ausgewählt wird (wie bei anderen Optionen kann das auch eine Variable sein, z.B. <code>"Choose" Var</code>). Nach der Erstellung des Steuerelements kann mit <a href="GuiControl.htm#Value">GuiControl.Value</a>, <a href="GuiControl.htm#Text">GuiControl.Text</a> oder <a href="GuiControl.htm#Choose">GuiControl.Choose</a> ein anderer Tab ausgewählt werden und mit <a href="GuiControl.htm#Add">GuiControl.Add</a> oder <a href="GuiControl.htm#Delete">GuiControl.Delete</a> Tabs hinzugefügt oder entfernt werden.</p> <p id="UseTab_Usage">Standardmäßig werden alle Steuerelemente, die nach dem Erstellen eines Tab-Steuerelements hinzugefügt werden, dem ersten Tab zugeordnet. Dies kann jederzeit mit der <a href="#Tab_UseTab">UseTab-Methode</a> geändert werden (in diesem Fall ist <em>Tab</em> das <a href="GuiControl.htm">GuiControl-Objekt</a> des ersten Tab-Steuerelements und <em>Tab2</em> das des zweiten):</p> <pre>Tab.UseTab() <em>; Zukünftige Steuerelemente werden keinem Tab-Steuerelement zugeordnet.</em> Tab.UseTab(3) <em>; Zukünftige Steuerelemente werden dem dritten Tab des aktuellen Tab-Steuerelements zugeordnet.</em> Tab2.UseTab(3) <em>; Zukünftige Steuerelemente werden dem dritten Tab des zweiten Tab-Steuerelements zugeordnet.</em> Tab.UseTab("Name") <em>; Zukünftige Steuerelemente werden einem Tab zugeordnet, dessen Name mit <i>Name</i> beginnt (nicht Groß-/Kleinschreibung-sensitiv).</em> Tab.UseTab("Name", true) <em>; Dasselbe wie oben, aber mit exakter Übereinstimmung (nicht Groß/Kleinschreibung-sensitiv).</em></pre> <p>Alle obigen Beispiele (außer <em>Name</em>) 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.</p> <p id="Tab_Positioning1"><strong>Positionierung:</strong> 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 <a href="Gui.htm#MarginX">Abständen</a>) und nachfolgende Untersteuerelemente unterhalb des vorherigen Steuerelements positioniert; 2) die Positionierungsoptionen <a href="Gui.htm#PosPlus">X+n und/oder Y+n</a> angegeben sind - in diesem Fall wird das Untersteuerelement relativ zur oberen linken Innenecke des Tab-Steuerelements positioniert. Zum Beispiel bewirkt <code class="no-highlight">x+10 y+10</code>, dass das Steuerelement von der oberen linken Ecke aus 10 Pixel nach rechts und 10 Pixel nach unten positioniert wird.</p> <p><strong>Aktueller Tab:</strong> <a href="GuiControl.htm#Value">GuiControl.Value</a> gibt die Positionsnummer des aktuell ausgewählten Tabs zurück (der erste Tab ist 1, der zweite 2 usw.), während <a href="GuiControl.htm#Text">GuiControl.Text</a> den Text des aktuell ausgewählten Tabs zurückgibt. <a href="Gui.htm#Submit">Gui.Submit</a> speichert den Text, es sei denn, das Wort <strong>AltSubmit</strong> ist in den <em>Optionen</em> des Steuerelements vorhanden, dann wird die Positionsnummer des Tabs gespeichert.</p> <p><strong>Tab-Auswahl-Erkennung:</strong> Jedes Mal, wenn der Benutzer zu einem anderen Tab wechselt, wird das <a href="GuiOnEvent.htm#Change">Change</a>-Ereignis ausgelöst.</p> <p id="Tab_Keyboard"><strong>Navigation mit der Tastatur:</strong> Der Benutzer kann <kbd>Strg</kbd>+<kbd>Bild↑</kbd>/<kbd>Bild↓</kbd> 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. <kbd>Strg</kbd>+<kbd>Tab</kbd> und <kbd>Strg</kbd>+<kbd>Umschalt</kbd>+<kbd>Tab</kbd> können ebenfalls verwendet werden, funktionieren aber nicht, wenn das aktuell fokussierte Steuerelement ein mehrzeiliges Eingabefeld ist.</p> <p id="Tab_Limits"><strong>Einschränkungen:</strong> 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.</p> <h3 id="Tab_vs">Tab3 vs. Tab2 vs. Tab</h3> <p id="Tab_Parent"><strong>Übergeordnetes Fenster:</strong> 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.</p> <p id="Tab_Positioning"><strong>Positionierung:</strong> 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.</p> <p>Im Falle von Tab3 verhalten sich Untersteuerelemente, die einem Tab <em>vor</em> 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.</p> <p>Beim Verschieben eines Tab3-Steuerelements werden auch seine Untersteuerelemente verschoben. Dieses Verhalten gilt nicht für Tab- und Tab2-Steuerelemente.</p> <p>Sollte der seltene Fall auftreten, dass <a href="WinMove.htm">WinMove</a> (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 <a href="#Tab_Parent">oben</a>). <a href="GuiControl.htm#Move">GuiControl.Move</a> dagegen verwendet immer GUI-Koordinaten und <a href="ControlMove.htm">ControlMove</a> immer Fensterkoordinaten, unabhängig davon, welchem Fenster das Steuerelement übergeordnet ist.</p> <p id="Tab_Autosize"><strong>Größenberechnung:</strong> 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):</p> <ul> <li>Das erste Mal, wenn das Tab3-Steuerelement nicht mehr das aktuelle Tab-Steuerelement ist. Zum Beispiel, wenn die <a href="#Tab_UseTab">UseTab-Methode</a> (mit oder ohne Parameter) aufgerufen wird oder wenn ein anderes Tab-Steuerelement erstellt wird.</li> <li>Das erste Mal, wenn <a href="Gui.htm#Show">Gui.Show</a> für diese bestimmte GUI aufgerufen wird.</li> </ul> <p>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.</p> <p>Die Größe von Tab- und Tab2-Steuerelementen wird nicht automatisch angepasst; sie erhalten eine willkürliche Standardgröße.</p> <p id="Tab_TabOrder"><strong>Navigationsreihenfolge via TAB:</strong> Die Navigationsreihenfolge via <kbd>Tab</kbd> 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:</p> <ul> <li>Tab und Tab2 erlauben das Vermischen von Untersteuerelementen und anderen Steuerelementen innerhalb der Navigationsreihenfolge.</li> <li>Tab2 fügt die Tab-Schaltflächen nach den Untersteuerelementen in die Navigationsreihenfolge ein.</li> <li>Tab3 gruppiert seine Untersteuerelemente innerhalb der Navigationsreihenfolge und fügt sie nach den Tab-Schaltflächen ein.</li> </ul> <p id="Tab_Notifs"><strong>Benachrichtigungsmeldungen (Tab3):</strong> Gewöhnliche und <a href="#Custom">benutzerdefinierte</a> Steuerelemente senden in der Regel Benachrichtigungsmeldungen an ihre <a href="#Tab_Parent">übergeordneten Fenster</a>. Alle WM_COMMAND-, WM_NOTIFY-, WM_VSCROLL-, WM_HSCROLL- oder WM_CTLCOLOR...-Meldungen, die an das <a href="#Tab_Parent">Tab-Dialogfenster</a> eines Tab3-Steuerelements gesendet wurden, werden an das GUI-Fenster weitergeleitet und können via <a href="OnMessage.htm">OnMessage</a> erkannt und verarbeitet werden. Wenn das Tab-Steuerelement das aktuelle Windows-Design verwendet und das Untersteuerelement ohne die <a href="Gui.htm#BackgroundTrans">BackgroundTrans</a>-Option erstellt wurde, wird WM_CTLCOLORSTATIC vom Tab-Dialogfenster verarbeitet und nicht weitergeleitet. Andere Benachrichtigungsmeldungen (z.B. benutzerdefinierte Meldungen) werden nicht unterstützt.</p> <p id="Tab2_Issues"><strong>Bekannte Probleme mit Tab2:</strong></p> <ul> <li><a href="Gui.htm#BackgroundTrans">BackgroundTrans</a> funktioniert nicht in einem Tab2-Steuerelement.</li> <li><a href="#ActiveX">WebBrowser</a>-Steuerelemente werden nicht korrekt neu gezeichnet.</li> <li>AnimateWindow und möglicherweise andere Win32-API-Aufrufe können dazu führen, dass die Steuerelemente des Tabs plötzlich verschwinden.</li> </ul> <p id="Tab_Issues"><strong>Bekannte Probleme mit Tab:</strong></p> <ul> <li>Das Aktivieren eines GUI-Fensters durch Anklicken bestimmter Teile seiner Steuerelemente, wie z.B. Scrollbalken, kann zu einer fehlerhaften Neuzeichnung führen.</li> <li><a href="Gui.htm#BackgroundTrans">BackgroundTrans</a> funktioniert nicht, wenn das Tab-Steuerelement eine ListView enthält.</li> <li><a href="#ActiveX">WebBrowser</a>-Steuerelemente sind unsichtbar.</li> </ul> <h3 id="Tab_Options">Tab-Optionen</h3> <p><strong>Choose:</strong> Siehe <a href="#ChooseTab">oben</a>.</p> <p><strong>Background:</strong> Geben Sie <code>-Background</code> (minus Background) an, um die <a href="Gui.htm#BackColor">benutzerdefinierte Hintergrundfarbe des Fensters</a> zu überschreiben und die Standardfarbe des Systems für Tab-Steuerelemente zu verwenden. Geben Sie <code>+Theme -Background</code> 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. <a href="#Text">Text</a>) zu beheben, fügen Sie BackgroundTrans in ihren Optionen ein.</p> <p><strong>Buttons:</strong> 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).</p> <p><strong>Left/Right/Bottom:</strong> 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 <a href="../misc/Styles.htm#TCS_VERTICAL">TCS_VERTICAL</a>.</p> <p><strong>Wrap:</strong> Geben Sie <code>-Wrap</code> (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).</p> <p>Optionen zum Ändern der Anzahl von Textzeilen innerhalb des Steuerelements (oder der Höhe und Breite) finden Sie unter <a href="Gui.htm#PosSize">Position und Größe von Steuerelementen ändern</a>.</p> <p><strong>Tabs mit Symbolen:</strong> Mit <a href="SendMessage.htm">SendMessage</a> kann ein Symbol neben dem Tabnamen angezeigt werden. Informationen und Beispiele finden Sie im archivierten Forumsthread <a href="https://www.autohotkey.com/board/topic/5692-">Icons in tabs</a>.</p> <h2 id="Text">Text</h2> <p>Ein randloser Textbereich, der vom Benutzer nicht editiert werden kann. Wird oft zur Beschriftung anderer Steuerelemente verwendet.</p> <p>Zum Beispiel:</p> <pre>MeineGui.Add("Text",, "Bitte tragen Sie Ihren Namen ein:")</pre> <p>Oder:</p> <pre>MeineGui.AddText(, "Bitte tragen Sie Ihren Namen ein:")</pre> <p>Erscheinungsbild:</p> <img src="../static/ctrl_text.png" alt="Text" /> <p>Geben Sie im letzten Parameter eine Zeichenkette an, die im Steuerelement angezeigt werden soll. Die Zeichenkette kann Zeilenvorschübe (`n) zum Starten neuer Zeilen enthalten. Außerdem kann via <a href="../Scripts.htm#continuation">Fortsetzungsbereich</a> eine lange Zeile in mehrere kurze Zeilen aufgeteilt werden.</p> <p>Wenn in <em>Optionen</em> eine Breite (W), aber keine <a href="Gui.htm#R">Zeilen (R)</a> oder Höhe (H) angegeben ist, werden Textzeilen bei Bedarf umbrochen und die Höhe des Steuerelements automatisch gesetzt.</p> <p>Das <a href="GuiOnEvent.htm#Click">Click-Ereignis</a> kann verwendet werden, um das Anklicken des Textes abzufangen und zu verarbeiten. Zum Beispiel:</p> <pre>MeineGui := Gui() FakeLink := MeineGui.Add("Text", "", "Klicken Sie hier, um Google zu starten.") FakeLink.SetFont("underline cBlue") FakeLink.OnEvent("Click", LaunchGoogle) <em>; Alternativ kann auch das <a href="#Link">Link</a>-Steuerelement verwendet werden:</em> MeineGui.Add("Link",, 'Klicken Sie &lt;a href="www.google.com"&gt;hier&lt;/a&gt;, um Google zu starten.') MeineGui.Show() LaunchGoogle(*) { Run("www.google.com") }</pre> <p>Text-Steuerelemente unterstützen auch das <a href="GuiOnEvent.htm#DoubleClick">DoubleClick-Ereignis</a>.</p> <p id="SS_NOTIFY">Nur Text-Steuerelemente mit dem SS_NOTIFY-Style (0x100) senden Klick- und Doppelklickbenachrichtigungen, daher wird <a href="GuiOnEvent.htm">OnEvent</a> automatisch diesen Style hinzufügen, wenn eine Click- oder DoubleClick-Rückruffunktion registriert wird. Der SS_NOTIFY-Style bewirkt, dass der Text des Steuerelements bei einem Doppelklick in die Zwischenablage kopiert wird.</p> <p>Sie können ein Und-Zeichen (&amp;) im Text verwenden, um einen Buchstaben zu unterstreichen. Zum Beispiel:</p> <pre>MeineGui.Add("Text",, "&amp;Vorname:") MeineGui.Add("Edit")</pre> <p>Das obige Beispiel führt dazu, dass der Buchstabe V unterstrichen und der <a href="Gui.htm#ShortcutKey">Tastaturkurzbefehl</a> <kbd>Alt</kbd>+<kbd>V</kbd> 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 (&amp;&amp;) an. Fügen Sie <a href="../misc/Styles.htm#SS_NOPREFIX">0x80</a> in die Optionen des Steuerelements ein, um die Sonderbehandlung der Und-Zeichen komplett zu deaktivieren.</p> <p>Unter <a href="Gui.htm#OtherOptions">Allgemeine Optionen</a> finden Sie weitere Optionen wie <em>Right</em>, <em>Center</em> und <em>Hidden</em>. Siehe auch: <a href="Gui.htm#PosSize">Position und Größe von Steuerelementen ändern</a>.</p> <h2 id="TreeView">TreeView</h2> <p>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.</p> <p>Zum Beispiel:</p> <pre>MeineGui.Add("TreeView", "r10")</pre> <p>Oder:</p> <pre>MeineGui.AddTreeView("r10")</pre> <p>Erscheinungsbild:</p> <img src="../static/ctrl_treeview.png" alt="TreeView" /> <p>Weitere Informationen finden Sie auf der separaten <a href="TreeView.htm">TreeView</a>-Seite.</p> <h2 id="UpDown">UpDown</h2> <p>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 <em>Buddy</em> bezeichnet. Das bekannteste Beispiel dafür ist der "Spinner" (Drehrad) - ein <a href="#Edit">Eingabefeld</a> mit UpDown-Steuerelement.</p> <p>Zum Beispiel:</p> <pre>MeineGui.Add("Edit") MeineGui.Add("UpDown", "vMeinUpDown Range1-10", 5)</pre> <p>Oder:</p> <pre>MeineGui.AddEdit() MeineGui.AddUpDown("vMeinUpDown Range1-10", 5)</pre> <p>Erscheinungsbild:</p> <img src="../static/ctrl_updown.png" alt="UpDown" /> <p>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.</p> <p>Das Buddy-Steuerelement kann auch ein <a href="#Text">Text</a>- oder <a href="#ListBox">ListBox</a>-Steuerelement sein. Bei anderen Steuerelementen (wie z.B. ComboBox oder DropDownList) kann es aufgrund von OS-Einschränkungen vorkommen, dass sie nicht ordnungsgemäß mit dem <a href="GuiOnEvent.htm#Change">Change</a>-Ereignis oder anderen Features funktionieren.</p> <p>Geben Sie im letzten Parameter die Startposition des UpDown-Steuerelements an (wenn weggelassen, wird standardmäßig 0 oder der niedrigste zulässige Bereichswert verwendet).</p> <p>Wenn <a href="Gui.htm#Submit">Gui.Submit</a> oder <a href="GuiControl.htm#Value">GuiControl.Value</a> verwendet wird, ist der Rückgabewert die aktuelle numerische Position des UpDown-Steuerelements. 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 <a href="../misc/Styles.htm#UpDownSep">Tausendertrennzeichen</a> (z.B. Punkt) in Dreiergruppen unterteilt werden. Diese Trennzeichen werden vom Eingabefeld zurückgegeben, nicht vom UpDown-Steuerelement.</p> <p>Jedes Mal, wenn der Benutzer auf eine der Pfeilschaltflächen klickt oder eine Pfeiltaste auf der Tastatur drückt, wird das <a href="GuiOnEvent.htm#Change">Change</a>-Ereignis ausgelöst.</p> <h3 id="UpDown_Options">UpDown-Optionen</h3> <p id="Horz"><strong>Horz:</strong> Richtet die Schaltflächen des Steuerelements nach links/rechts statt oben/unten aus. Standardmäßig bewirkt <em>Horz</em> aber auch, dass das Steuerelement isoliert bzw. vom Buddy-Steuerelement getrennt wird. Um dieses Verhalten zu überschreiben, geben Sie <code class="no-highlight">Horz 16</code> in den Optionen des Steuerelements an.</p> <p><strong>Left:</strong> Positioniert das UpDown-Steuerelement auf der linken statt rechten Seite des Buddy-Steuerelements.</p> <p><strong>Range:</strong> 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 <code class="no-highlight">Range1-1000</code> die Auswahl einer Zahl zwischen 1 und 1000; <code class="no-highlight">Range-50-50</code> eine Zahl zwischen -50 und 50; und <code class="no-highlight">Range-10--5</code> 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 <a href="#ListBox">ListBox</a>, ist der vertikale Bereich standardmäßig 32767-0 und der horizontale Bereich (<a href="#Horz">Horz</a>) standardmäßig 0-32767.</p> <p><strong>Wrap:</strong> Veranlasst das Steuerelement, zum anderen Ende des gültigen Bereichs zu springen, wenn der Benutzer versucht, den Minimal- oder Maximalwert zu überschreiten. Wenn <em>Wrap</em> nicht angegeben ist, stoppt das Steuerelement beim Erreichen des Minimal- oder Maximalwerts.</p> <p><strong>16:</strong> 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 <a href="Gui.htm#Submit">Gui.Submit</a> oder <a href="GuiControl.htm#Value">GuiControl.Value</a> kann diese Position abgerufen werden.</p> <p id="UpDownSep"><strong>0x80:</strong> Fügen Sie 0x80 in <em>Optionen</em> 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.</p> <p><strong>Andere Schrittweiten als 1:</strong> <a href="../scripts/index.htm#Custom_Increments_for_UpDown_Controls">Dieses Skript</a> zeigt, wie man die Schrittweite eines UpDown-Steuerelements auf einen anderen Wert als 1 ändert (z.B. 5 oder 0.1).</p> <p><strong>Hexadezimales Zahlenformat:</strong> Das im Buddy-Steuerelement angezeigte Zahlenformat kann wie folgt von dezimal auf hexadezimal umgestellt werden:</p> <pre>SendMessage 0x046D, 16, 0, "msctls_updown321" <em>; 0x046D ist UDM_SETBASE</em></pre> <p>Dies wirkt sich nur auf das Buddy-Steuerelement aus, nicht auf die von UpDown gemeldete Position.</p> <p>Siehe auch: <a href="Gui.htm#PosSize">Position und Größe von Steuerelementen ändern</a>.</p> <h2 id="Related">Siehe auch</h2> <p><a href="ListView.htm">ListView</a>, <a href="TreeView.htm">TreeView</a>, <a href="Gui.htm#Call">Gui()</a>, <a href="Gui.htm">Gui-Objekt</a>, <a href="GuiControl.htm">GuiControl-Objekt</a>, <a href="Menu.htm">Menu-Objekt</a></p> </body> </html>