In den User-Language-Dialogfeldern können Sie Ihr eigenes Front-End für ein User-Language-Programm definieren. In den folgenden Abschnitten werden die User-Language-Dialogfelder ausführlich beschrieben:
Vordefinierte Dialogfelder implementieren die üblichen Standarddialogfelder, die häufig zur Auswahl von Dateinamen oder zur Ausgabe von Fehlermeldungen verwendet werden.
Informationen zum Definieren eigener komplexer Benutzerdialogfelder finden Sie unter Dialogfeldobjekte.
Funktion
Zeigt ein Verzeichnisdialogfeld an.
Syntax
string dlgDirectory(string Title[, string Start])Gibt Folgendes zurück
Die dlgDirectory-Funktion gibt den vollständigen Pfadnamen des ausgewählten Verzeichnisses zurück. Wenn der Benutzer das Dialogfeld abgebrochen hat, ist das Ergebnis eine leere Zeichenfolge.
Siehe auch dlgFileOpen.
Die dlgDirectory-Funktion zeigt ein Verzeichnisdialogfeld an, in dem der Benutzer ein Verzeichnis auswählen kann. Title wird als Titel des Dialogfelds verwendet.
Wenn Start nicht leer ist, wird dies als Ausgangspunkt für dlgDirectory verwendet.
Beispiel
string dirName;
dirName = dlgDirectory("Select a directory", "");Funktion
Zeigt ein Datei-Dialogfeld an.
Syntax
string dlgFileOpen(string Title[, string Start[, string Filter]])
string dlgFileSave(string Title[, string Start[, string Filter]])Gibt Folgendes zurück
Die Funktionen dlgFileOpen und dlgFileSave geben den vollständigen Pfadnamen der ausgewählten Datei zurück. Wenn der Benutzer das Dialogfeld abgebrochen hat, ist das Ergebnis eine leere Zeichenfolge.
Siehe auch dlgDirectory.
Die Funktionen dlgFileOpen und dlgFileSave zeigen ein Datei-Dialogfeld an, in dem der Benutzer eine Datei auswählen kann. Title wird als Titel des Dialogfelds verwendet.
Wenn Start nicht leer ist, wird dies als Ausgangspunkt für das Datei-Dialogfeld verwendet. Andernfalls wird das aktuelle Verzeichnis verwendet.
Es werden nur Dateien angezeigt, die dem Wert Filter entsprechen. Wenn Filter leer ist, werden alle Dateien angezeigt.
Filter kann entweder ein einfaches Platzhalterzeichen (z. B. *.brd) bzw. eine Liste von Platzhaltern (z. B. *.bmp *.jpg) sein oder sogar beschreibenden Text enthalten, wie z. B. Bitmap-Dateien (*.bmp). Wenn das Kombinationsfeld Dateityp des Dialogfelds Datei mehrere Einträge enthalten soll, müssen diese durch doppelte Semikolons getrennt werden, z. B. Bitmap-Dateien (*.bmp);; Andere Bilder (*.jpg *.png).
Beispiel
string fileName;
fileName = dlgFileOpen("Select a file", "", "*.brd");Funktion
Zeigt ein Meldungsfeld an.
Syntax
int dlgMessageBox(string Message[, button_list])Gibt Folgendes zurück
Die dlgMessageBox-Funktion gibt den Index der Schaltfläche zurück, die der Benutzer ausgewählt hat. Die erste Schaltfläche in button_list hat den Index 0.
Siehe auch status().
Die dlgMessageBox-Funktion zeigt die angegebene Meldung in einem modalen Dialogfeld an, und es wird gewartet, bis der Benutzer eine der in button_list definierten Schaltflächen auswählt.
Wenn Message HTML-Tags enthält, müssen die Zeichen '<', '>' und '&' als <, > bzw. & angegeben werden, wenn sie als solche angezeigt werden sollen.
button_list ist eine optionale Liste mit kommagetrennten Zeichenfolgen, die den Schaltflächensatz definiert, der am unteren Rand des Meldungsfelds angezeigt wird. Es können maximal drei Schaltflächen definiert werden. Wenn kein Wert für button_list angegeben ist, wird vorgabemäßig OK festgelegt.
Die erste Schaltfläche in button_list wird zur Vorgabeschaltfläche (die ausgewählt wird, wenn der Benutzer die EINGABETASTE drückt). Die letzte Schaltfläche in der Liste wird zur Schaltfläche zum Abbrechen. Diese Schaltfläche wird ausgewählt, wenn der Benutzer die ESC-Taste drückt oder das Meldungsfeld schließt. Sie können eine andere Schaltfläche als Vorgabe festlegen, indem Sie deren Namen mit einem '+' beginnen. Sie können eine andere Schaltfläche als Schaltfläche zum Abbrechen festlegen, indem Sie deren Namen mit einem '-' beginnen. Um einen Schaltflächentext tatsächlich mit dem Zeichen '+' oder '-' zu beginnen, müssen Sie dieses maskieren.
Wenn ein Schaltflächentext ein '&' enthält, wird das Zeichen nach dem kaufmännischen Und zu einem Kurzbefehl. Wenn der Benutzer die entsprechende Taste drückt, wird die jeweilige Schaltfläche ausgewählt. Damit tatsächlich das Zeichen '&' im Text angezeigt wird, müssen Sie dieses maskieren.
Für das Meldungsfeld kann ein Symbol festgelegt werden, indem Sie das erste Zeichen von Message auf Folgendes setzen:
';' - for an Information
'!' - for a Warning
':' - for an ErrorWenn die Meldung jedoch mit einem dieser Zeichen beginnen soll, müssen Sie diese maskieren.
Unter Mac OS X wird nur das Zeichen ':' tatsächlich als Symbol angezeigt. Alle anderen Zeichen werden ignoriert.
Beispiel
if (dlgMessageBox("!Are you sure?", "&Yes", "&No") == 0) {
// let's do it!
}Ein User-Language-Dialogfeld besteht aus den folgenden Dialogfeldobjekten:
| dlgCell | Rasterzellenkontext |
| dlgCheckBox | Kontrollkästchen |
| dlgComboBox | Auswahlfeld für Kombinationsfeld |
| dlgDialog | Basiscontainer eines beliebigen Dialogfelds |
| dlgGridLayout | Rasterbasierter Layoutkontext |
| dlgGroup | Gruppenfeld |
| dlgHBoxLayout | Horizontaler Feldlayoutkontext |
| dlgIntEdit | Eingabefeld für Ganzzahl |
| dlgLabel | Textbeschriftung |
| dlgListBox | Listenfeld |
| dlgListView | Listenansicht |
| dlgPushButton | Drucktaster |
| dlgRadioButton | Optionsfeld |
| dlgRealEdit | Eingabefeld für reelle Zahlen |
| dlgSpacing | Layout-Abstandsobjekt |
| dlgSpinBox | Auswahlfeld für Drehfeld |
| dlgStretch | Layout-Streckungsobjekt |
| dlgStringEdit | Zeichenfolge-Eingabefeld |
| dlgTabPage | Registerkartenseite |
| dlgTabWidget | Registerkartenseiten-Container |
| dlgTextEdit | Texteingabefeld |
| dlgTextView | Text-Viewer-Feld |
| dlgVBoxLayout | Vertikaler Feldlayoutkontext |
Funktion
Definiert eine Zellenposition in einem Rasterlayoutkontext.
Syntax
dlgCell(int row, int column[, int row2, int column2]) statementSiehe auch dlgGridLayout, dlgHBoxLayout, dlgVBoxLayout, Layout-Informationen, Vollständiges Beispiel.
Die dlgCell-Anweisung definiert die Position einer Zelle in einem Rasterlayoutkontext.
Die Zeilen- und Spaltenindizes beginnen bei 0, sodass die obere linke Zelle den Index (0, 0) aufweist.
Mit zwei Parametern wird das durch die Anweisung definierte Dialogfeld in der einzelnen Zelle platziert, die von row und column adressiert wird. Mit vier Parametern spannt sich das Dialogfeldobjekt über alle Zellen von row/column bis row2/column2.
Vorgabemäßig enthält dlgCell den Eintrag dlgHBoxLayout. Wenn die Zelle also mehr als ein Dialogfeldobjekt enthält, werden diese horizontal nebeneinander platziert.
Beispiel
string Text;
dlgGridLayout {
dlgCell(0, 0) dlgLabel("Cell 0,0");
dlgCell(1, 2, 4, 7) dlgTextEdit(Text);
}Funktion
Definiert ein Kontrollkästchen.
Syntax
dlgCheckBox(string Text, int &Checked) [ statement ]Siehe auch dlgRadioButton, dlgGroup, Layout-Informationen, Vollständiges Beispiel.
Die dlgCheckBox-Anweisung definiert ein Kontrollkästchen mit dem angegebenen Text.
Wenn Text ein '&' enthält, wird das Zeichen nach dem kaufmännischen Und zu einem Kurzbefehl. Wenn der Benutzer ALT+Kurzbefehl drückt, wird das Kontrollkästchen umgeschaltet. Damit tatsächlich das Zeichen '&' im Text angezeigt wird, müssen Sie dieses maskieren.
dlgCheckBox wird hauptsächlich mit einem dlgGroup-Objekt verwendet, kann aber auch anderweitig eingesetzt werden. Alle Kontrollkästchen im selben Dialogfeld müssen über verschiedene Checked-Variablen verfügen.
Wenn der Benutzer ein dlgCheckBox-Objekt aktiviert, wird die zugehörige Checked-Variable auf 1 gesetzt, andernfalls wird sie auf 0 festgelegt. Der Anfangswert von Checked legt fest, ob ein Kontrollkästchen zu Beginn aktiviert ist. Wenn Checked nicht 0 entspricht, ist das Kontrollkästchen anfangs aktiviert.
Die optionale Anweisung wird jedes Mal ausgeführt, wenn dlgCheckBox umgeschaltet wird.
Beispiel
int mirror = 0;
int rotate = 1;
int flip = 0;
dlgGroup("Orientation") {
dlgCheckBox("&Mirror", mirror);
dlgCheckBox("&Rotate", rotate);
dlgCheckBox("&Flip", flip);
}Funktion
Definiert ein Auswahlfeld für ein Kombinationsfeld.
Syntax
dlgComboBox(string array[], int &Selected) [ statement ]
Siehe auch dlgListBox, dlgLabel, Layout-Informationen, Vollständiges Beispiel.
Die dlgComboBox-Anweisung definiert ein Auswahlfeld für ein Kombinationsfeld mit dem Inhalt der angegebenen Anordnung.
Selected gibt den Index des ausgewählten Kombinationsfeldeintrags wieder. Der erste Eintrag hat den Index 0.
Jedes Element der Anordnung definiert den Inhalt eines Eintrags im Kombinationsfeld. Keine der Zeichenfolgen in der Anordnung darf leer sein (wenn eine leere Zeichenfolge vorhanden ist, werden alle Zeichenfolgen hinter dieser Zeichenfolge (und einschließlich dieser) gelöscht).
Die optionale Anweisung wird immer dann ausgeführt, wenn sich die Auswahl im dlgComboBox-Objekt ändert. Vor der Ausführung der Anweisung werden alle Variablen, die mit Dialogfeldobjekten verwendet wurden, auf ihre aktuellen Werte aktualisiert. Änderungen an diesen Variablen innerhalb der Anweisung werden im Dialogfeld wiedergegeben, wenn die Anweisung zurückgegeben wird.
Wenn sich der Anfangswert von Selected außerhalb des Bereichs der Anordnungsindizes befindet, wird er auf 0 gesetzt.
Beispiel
string Colors[] = { "red", "green", "blue", "yellow" };
int Selected = 2; // initially selects "blue"
dlgComboBox(Colors, Selected) dlgMessageBox("You have selected " + Colors[Selected]);Funktion
Führt ein User-Language-Dialogfeld aus.
Syntax
int dlgDialog(string Title) block ;Gibt Folgendes zurück
Die dlgDialog-Funktion gibt einen ganzzahligen Wert zurück, dem über einen Aufruf der dlgAccept()-Funktion eine benutzerdefinierte Bedeutung zugewiesen werden kann.
Wenn das Dialogfeld einfach geschlossen wird, lautet der Rückgabewert -1.
Siehe auch dlgGridLayout, dlgHBoxLayout, dlgVBoxLayout, dlgAccept, dlgReset, dlgReject, Vollständiges Beispiel.
Die dlgDialog-Funktion führt das durch den Block definierte Dialogfeld aus. Dies ist das einzige Dialogfeldobjekt, das tatsächlich einer User-Language-Builtin-Funktion entspricht. Daher kann es überall verwendet werden, wo ein Funktionsaufruf zulässig ist.
Der Block enthält normalerweise nur andere Dialogfeldobjekte. Es ist jedoch auch möglich, andere User-Language-Anweisungen zu verwenden, um z. B. dem Dialogfeld Objekte bedingt hinzuzufügen (siehe zweites Beispiel unten).
Vorgabemäßig enthält ein dlgDialog-Objekt den Wert dlgVBoxLayout, sodass bei einem einfachen Dialogfeld nicht auf das Layout geachtet werden muss.
An einem Punkt sollte ein dlgDialog-Objekt einen Aufruf der dlgAccept()-Funktion enthalten, damit der Benutzer das Dialogfeld schließen und den Inhalt akzeptieren kann.
Wenn Sie lediglich ein einfaches Meldungs- oder Dateidialogfeld benötigen, können Sie stattdessen eines der vordefinierten Dialogfelder verwenden.
Beispiele
int Result = dlgDialog("Hello") {
dlgLabel("Hello world");
dlgPushButton("+OK") dlgAccept();
};
int haveButton = 1;
dlgDialog("Test") {
dlgLabel("Start");
if (haveButton)
dlgPushButton("Here") dlgAccept();
};Funktion
Öffnet einen Rasterlayoutkontext.
Syntax
dlgGridLayout statementSiehe auch dlgCell, dlgHBoxLayout, dlgVBoxLayout, Layout-Informationen, Vollständiges Beispiel.
Die dlgGridLayout-Anweisung öffnet einen Rasterlayoutkontext.
Das einzige Dialogfeldobjekt, das direkt in der Anweisung verwendet werden kann, ist dlgCell, das die Position eines bestimmten Dialogfeldobjekts im Rasterlayout definiert.
Die Zeilen- und Spaltenindizes beginnen bei 0, sodass die obere linke Zelle den Index (0, 0) aufweist.
Die Anzahl der Zeilen und Spalten wird automatisch entsprechend der Position der Dialogfeldobjekte, die im Rasterlayoutkontext definiert sind, erweitert. Sie müssen daher die Anzahl der Zeilen und Spalten nicht explizit definieren.
Beispiel
dlgGridLayout {
dlgCell(0, 0) dlgLabel("Row 0/Col 0");
dlgCell(1, 0) dlgLabel("Row 1/Col 0");
dlgCell(0, 1) dlgLabel("Row 0/Col 1");
dlgCell(1, 1) dlgLabel("Row 1/Col 1");
}Funktion
Definiert ein Gruppenfeld.
Syntax
dlgGroup(string Title) statement
Siehe auch dlgCheckBox, dlgRadioButton, Layout-Informationen, Vollständiges Beispiel.
Die dlgGroup-Anweisung definiert eine Gruppe mit dem angegebenen Titel.
Vorgabemäßig enthält ein dlgGroup-Objekt den Wert dlgVBoxLayout, sodass bei einer einfachen Gruppe nicht auf das Layout geachtet werden muss.
dlgGroup wird hauptsächlich verwendet, um eine Reihe von Optionsfeldern oder Kontrollkästchen aufzunehmen, kann aber auch andere Objekte in der Anweisung enthalten. Optionsfelder innerhalb eines dlgGroup-Objekts werden beginnend mit 0 nummeriert.
Beispiel
int align = 1;
dlgGroup("Alignment") {
dlgRadioButton("&Top", align);
dlgRadioButton("&Center", align);
dlgRadioButton("&Bottom", align);
}Funktion
Öffnet einen horizontalen Feldlayoutkontext.
Syntax
dlgHBoxLayout statementSiehe auch dlgGridLayout, dlgVBoxLayout, Layout-Informationen, Vollständiges Beispiel.
Die dlgHBoxLayout-Anweisung öffnet einen horizontalen Feldlayoutkontext für die angegebene Anweisung.
Beispiel
dlgHBoxLayout {
dlgLabel("Box 1");
dlgLabel("Box 2");
dlgLabel("Box 3");
}Funktion
Definiert ein Eingabefeld für eine Ganzzahl.
Syntax
dlgIntEdit(int &Value, int Min, int Max)Siehe auch dlgRealEdit, dlgStringEdit, dlgLabel, Layout-Informationen, Vollständiges Beispiel.
Die dlgIntE*dit-Anweisung definiert ein Eingabefeld für eine Ganzzahl mit dem angegebenen Wert.
Wenn Value zunächst außerhalb des durch Min und Max definierten Bereichs liegt, wird er auf diese Werte beschränkt.
Beispiel
int Value = 42;
dlgHBoxLayout {
dlgLabel("Enter a &Number between 0 and 99");
dlgIntEdit(Value, 0, 99);
}Funktion
Definiert eine Textbeschriftung.
Syntax
dlgLabel(string Text [, int Update])Siehe auch Layout-Informationen, Vollständiges Beispiel, dlgRedisplay().
Die dlgLabel-Anweisung definiert eine Beschriftung mit dem angegebenen Text.
Text kann entweder ein Zeichenfolgen-Literal, wie Hello, oder eine Zeichenfolgenvariable sein.
Wenn Text HTML-Tags enthält, müssen die Zeichen '<', '>' und '&' als <, > bzw. & angegeben werden, wenn sie als solche angezeigt werden sollen.
Externe Hyperlinks in Text werden mit dem entsprechenden Anwendungsprogramm geöffnet.
Wenn der Parameter Update nicht 0 und Text eine Zeichenfolgenvariable ist, kann der Inhalt z. B. in der Anweisung für dlgPushButton geändert werden, und die Beschriftung wird automatisch aktualisiert. Dies ist natürlich nur dann hilfreich, wenn Text eine dedizierte string-Variable ist (und z. B. nicht die loop-Variable einer for-Anweisung).
Wenn Text ein '&' enthält und das Objekt nach der Beschriftung den Tastaturfokus haben kann, wird das Zeichen nach dem kaufmännischen Und zu einem Kurzbefehl. Wenn der Benutzer ALT+Kurzbefehl drückt, wechselt der Fokus zum Objekt, das unmittelbar nach dem dlgLabel-Objekt definiert wurde. Damit tatsächlich das Zeichen '&' im Text angezeigt wird, müssen Sie dieses maskieren.
Beispiel
string OS = "Windows";
dlgHBoxLayout {
dlgLabel(OS, 1);
dlgPushButton("&Change OS") { OS = "Linux"; }
}Funktion
Definiert ein Auswahlfeld für ein Listenfeld.
Syntax
dlgListBox(string array[], int &Selected) [ statement ]Siehe auch dlgComboBox, dlgListView, dlgSelectionChanged, dlgLabel, Layout-Informationen, Vollständiges Beispiel.
Die dlgListBox-Anweisung definiert ein Auswahlfeld für ein Listenfeld mit dem Inhalt der angegebenen Anordnung.
Selected gibt den Index des ausgewählten Listenfeldeintrags wieder. Der erste Eintrag hat den Index 0.
Jedes Element der Anordnung definiert den Inhalt einer Zeile im Listenfeld. Keine der Zeichenfolgen in der Anordnung darf leer sein (wenn eine leere Zeichenfolge vorhanden ist, werden alle Zeichenfolgen hinter dieser Zeichenfolge (und einschließlich dieser) gelöscht).
Die optionale Anweisung wird immer dann ausgeführt, wenn der Benutzer auf einen Eintrag von dlgListBox doppelklickt (Informationen dazu, wie die Anweisung aufgerufen wird, wenn sich nur die Auswahl in der Liste ändert, finden Sie unter dlgSelectionChanged). Vor der Ausführung der Anweisung werden alle Variablen, die mit Dialogfeldobjekten verwendet wurden, auf ihre aktuellen Werte aktualisiert. Änderungen an diesen Variablen innerhalb der Anweisung werden im Dialogfeld wiedergegeben, wenn die Anweisung zurückgegeben wird.
Wenn sich der Anfangswert von Selected außerhalb des Bereichs der Anordnungsindizes befindet, wird kein Eintrag ausgewählt.
Beispiel
string Colors[] = { "red", "green", "blue", "yellow" };
int Selected = 2; // initially selects "blue"
dlgListBox(Colors, Selected) dlgMessageBox("You have selected " + Colors[Selected]);Funktion
Definiert ein Auswahlfeld für die Ansicht einer Mehrspaltenliste.
Syntax
dlgListView(string Headers, string array[], int &Selected[, int &Sort]) [ statement ]
Siehe auch dlgListBox, dlgSelectionChanged, dlgLabel, Layout-Informationen, Vollständiges Beispiel.
Die dlgListView-Anweisung definiert ein Auswahlfeld für die Ansicht einer Mehrspaltenliste mit dem Inhalt der angegebenen Anordnung.
Header bezieht sich auf die durch Tabulatoren getrennte Liste der Spaltenüberschriften.
Selected gibt den Index des ausgewählten Listenansichtseintrags in der Anordnung wieder (die Reihenfolge, in der die Einträge tatsächlich angezeigt werden, kann unterschiedlich sein, da der Inhalt eines dlgListView-Objekts nach den verschiedenen Spalten sortiert werden kann). Der erste Eintrag hat den Index 0.
Wenn anfangs kein bestimmter Eintrag ausgewählt werden soll, sollte Selected auf -1 initialisiert werden. Wenn der Wert auf -2 eingestellt ist, wird das erste Element entsprechend der aktuellen Sortierspalte zum aktuellen Element. Wenn kein Ansichtseintrag ausgewählt wurde, wird -1 zurückgegeben.
Sort definiert, welche Spalte zum Sortieren der Listenansicht verwendet werden soll. Die Spalte ganz links hat die Nummer 1. Das Vorzeichen dieses Parameters definiert die Richtung, in der sortiert werden soll (positive Werte werden in aufsteigender Reihenfolge sortiert). Wenn Sort 0 ist oder außerhalb der gültigen Anzahl von Spalten liegt, wird keine Sortierung durchgeführt. Der zurückgegebene Wert von Sort gibt die Spalte und den Sortiermodus wieder, die vom Benutzer durch Klicken auf die Spaltenüberschriften der Liste ausgewählt wurden. Vorgabemäßig wird dlgListView nach der ersten Spalte in aufsteigender Reihenfolge sortiert.
Jedes Element der Anordnung definiert den Inhalt einer Zeile in der Listenansicht und muss durch Tabulatoren getrennte Werte enthalten. Wenn ein Element einer Anordnung weniger Werte enthält als Einträge in der Header-Zeichenfolge vorhanden sind, sind die übrigen Felder leer. Wenn ein Element einer Anordnung mehr Werte enthält als Einträge in der Header-Zeichenfolge vorhanden sind, werden die überflüssigen Elemente automatisch entfernt. Keine der Zeichenfolgen in der Anordnung darf leer sein (wenn eine leere Zeichenfolge vorhanden ist, werden alle Zeichenfolgen hinter dieser Zeichenfolge (und einschließlich dieser) gelöscht).
Ein Listeneintrag mit Zeilenvorschüben ('\n') wird entsprechend in mehreren Zeilen angezeigt.
Die optionale Anweisung wird immer dann ausgeführt, wenn der Benutzer auf einen Eintrag von dlgListView doppelklickt (Informationen dazu, wie die Anweisung aufgerufen wird, wenn sich nur die Auswahl in der Liste ändert, finden Sie unter dlgSelectionChanged). Vor der Ausführung der Anweisung werden alle Variablen, die mit Dialogfeldobjekten verwendet wurden, auf ihre aktuellen Werte aktualisiert. Änderungen an diesen Variablen innerhalb der Anweisung werden im Dialogfeld wiedergegeben, wenn die Anweisung zurückgegeben wird.
Wenn sich der Anfangswert von Selected außerhalb des Bereichs der Anordnungsindizes befindet, wird kein Eintrag ausgewählt.
Wenn Headers eine leere Zeichenfolge ist, wird das erste Element der Anordnung als Header-Zeichenfolge verwendet. Folglich lautet der Index des ersten Eintrags 1.
Der Inhalt eines dlgListView-Objekts kann durch Klicken auf die Überschrift dieser Spalte nach einer beliebigen Spalte sortiert werden. Spalten können auch durch Klicken und Ziehen einer Spaltenüberschrift ausgetauscht werden. Beachten Sie, dass keine dieser Änderungen Auswirkungen auf den Inhalt der Anordnung hat. Wenn der Inhalt alphanumerisch sortiert werden soll, kann eine Anordnung mit einer numerischen Zeichenfolge[] verwendet werden.
Beispiel
string Colors[] = { "red\tThe color RED", "green\tThe color GREEN", "blue\tThe color BLUE" };
int Selected = 0; // initially selects "red"
dlgListView("Name\tDescription", Colors, Selected) dlgMessageBox("You have selected " + Colors[Selected]);Funktion
Definiert einen Drucktaster.
Syntax
dlgPushButton(string Text) statementSiehe auch Layout-Informationen, Dialogfeldfunktionen, Vollständiges Beispiel.
Die dlgPushButton-Anweisung definiert einen Drucktaster mit dem angegebenen Text.
Wenn Text ein '&' enthält, wird das Zeichen nach dem kaufmännischen Und zu einem Kurzbefehl. Wenn der Benutzer ALT+Kurzbefehl drückt, wird die Schaltfläche ausgewählt. Damit tatsächlich das Zeichen '&' im Text angezeigt wird, müssen Sie dieses maskieren.
Wenn Text mit dem Zeichen '+' beginnt, wird diese Schaltfläche als Vorgabe-Schaltfläche festgelegt, die ausgewählt wird, wenn der Benutzer die EINGABETASTE drückt. Wenn Text mit dem Zeichen '-' beginnt, wird diese Schaltfläche als Schaltfläche Abbrechen festgelegt, die ausgewählt wird, wenn der Benutzer das Dialogfeld schließt.
Stellen Sie sicher, dass die Anweisung einer solchen markierten Schaltfläche zum Abbrechen einen Aufruf von dlgReject() enthält. Andernfalls kann der Benutzer das Dialogfeld möglicherweise überhaupt nicht schließen.
Damit tatsächlich das Zeichen '+' oder '-' als erstes Zeichen im Text angezeigt wird, müssen Sie dieses maskieren.
Wenn der Benutzer ein dlgPushButton-Objekt auswählt, wird die angegebene Anweisung ausgeführt. Vor der Ausführung der Anweisung werden alle Variablen, die mit Dialogfeldobjekten verwendet wurden, auf ihre aktuellen Werte aktualisiert. Änderungen an diesen Variablen innerhalb der Anweisung werden im Dialogfeld wiedergegeben, wenn die Anweisung zurückgegeben wird.
Beispiel
int defaultWidth = 10;
int defaultHeight = 20;
int width = 5;
int height = 7;
dlgPushButton("&Reset defaults") {
width = defaultWidth;
height = defaultHeight;
}
dlgPushButton("+&Accept") dlgAccept();
dlgPushButton("-Cancel") { if (dlgMessageBox("Are you sure?", "Yes", "No") == 0) dlgReject(); }Funktion
Definiert ein Optionsfeld.
Syntax
dlgRadioButton(string Text, int &Selected) [ statement ]Siehe auch dlgCheckBox, dlgGroup, Layout-Informationen, Vollständiges Beispiel.
Die dlgRadioButton-Anweisung definiert ein Optionsfeld mit dem angegebenen Text.
Wenn Text ein '&' enthält, wird das Zeichen nach dem kaufmännischen Und zu einem Kurzbefehl. Wenn der Benutzer ALT+Kurzbefehl drückt, wird die Schaltfläche ausgewählt. Damit tatsächlich das Zeichen '&' im Text angezeigt wird, müssen Sie dieses maskieren.
dlgRadioButton kann nur in einem dlgGroup-Objekt verwendet werden. Alle Optionsfelder in derselben Gruppe müssen dieselbe Variable Selected verwenden.
Wenn der Benutzer ein dlgRadioButton-Objekt auswählt, wird der Index dieser Schaltfläche im dlgGroup-Objekt in der Selected-Variable gespeichert. Der Anfangswert von Selected definiert, welches Optionsfeld anfänglich ausgewählt ist. Wenn Selected außerhalb des gültigen Bereichs für diese Gruppe liegt, wird kein Optionsfeld ausgewählt. Um die korrekte Optionsfeldauswahl zu erhalten, muss Selected festgelegt werden, bevor das erste dlgRadioButton-Objekt definiert wird, und darf zwischen dem Hinzufügen weiterer Optionsfelder nicht geändert werden. Andernfalls ist nicht definiert, welches Optionsfeld ausgewählt wird (falls zutreffend).
Die optionale Anweisung wird jedes Mal ausgeführt, wenn dlgRadioButton ausgewählt wird.
Beispiel
int align = 1;
dlgGroup("Alignment") {
dlgRadioButton("&Top", align);
dlgRadioButton("&Center", align);
dlgRadioButton("&Bottom", align);
}Funktion
Definiert ein reales Eingabefeld.
Syntax
dlgRealEdit(real &Value, real Min, real Max)Siehe auch dlgIntEdit, dlgStringEdit, dlgLabel, Layout-Informationen, Vollständiges Beispiel.
Die dlgRealEdit-Anweisung definiert ein Eingabefeld für reelle Zahlen mit dem angegebenen Wert.
Wenn Value zunächst außerhalb des durch Min und Max definierten Bereichs liegt, wird er auf diese Werte beschränkt.
Beispiel
real Value = 1.4142;
dlgHBoxLayout {
dlgLabel("Enter a &Number between 0 and 99");
dlgRealEdit(Value, 0.0, 99.0);
}Funktion
Definiert zusätzlichen Platz in einem Feldlayoutkontext.
Syntax
dlgSpacing(int Size)Siehe auch dlgHBoxLayout, dlgVBoxLayout, dlgStretch, Layout-Informationen, Vollständiges Beispiel.
Die dlgSpacing-Anweisung definiert zusätzlichen Platz in einem vertikalen oder horizontalen Feldlayoutkontext.
Size definiert die Anzahl der Pixel des zusätzlichen Platzes.
Beispiel
dlgVBoxLayout {
dlgLabel("Label 1");
dlgSpacing(40);
dlgLabel("Label 2");
}Funktion
Definiert ein Auswahlfeld für ein Drehfeld.
Syntax
dlgSpinBox(int &Value, int Min, int Max)Siehe auch dlgIntEdit, dlgLabel, Layout-Informationen, Vollständiges Beispiel.
Die dlgSpinBox-Anweisung definiert ein Eingabefeld für ein Drehfeld mit dem angegebenen Wert.
Wenn Value zunächst außerhalb des durch Min und Max definierten Bereichs liegt, wird er auf diese Werte beschränkt.
Beispiel
int Value = 42;
dlgHBoxLayout {
dlgLabel("&Select value");
dlgSpinBox(Value, 0, 99);
}Funktion
Definiert einen leeren dehnbaren Bereich in einem Feldlayoutkontext.
Syntax
dlgStretch(int Factor)Siehe auch dlgHBoxLayout, dlgVBoxLayout, dlgSpacing, Layout-Informationen, Vollständiges Beispiel.
Die dlgStretch-Anweisung definiert einen leeren dehnbaren Bereich in einem vertikalen oder horizontalen Feldlayoutkontext.
Factor definiert den Dehnungsfaktor des Platzes.
Beispiel
dlgHBoxLayout {
dlgStretch(1);
dlgPushButton("+OK") { dlgAccept(); };
dlgPushButton("Cancel") { dlgReject(); };
}Funktion
Definiert ein Zeichenfolge-Eingabefeld.
Syntax
dlgStringEdit(string &Text[, string &History[][, int Size]])Siehe auch dlgRealEdit, dlgIntEdit, dlgTextEdit, dlgLabel, Layout-Informationen, Vollständiges Beispiel.
Die dlgStringEdit-Anweisung definiert ein einzeiliges Texteingabefeld mit dem angegebenen Text.
Wenn History angegeben ist, werden die Zeichenfolgen, die der Benutzer im Zeitverlauf eingegeben hat, in dieser Zeichenfolgenanordnung gespeichert. Das Eingabefeld enthält dann eine Schaltfläche, mit der der Benutzer aus zuvor eingegebenen Zeichenfolgen auswählen kann. Wenn ein Wert für Size größer als null angegeben wird, wird nur höchstens diese Anzahl an Zeichenfolgen in der Anordnung gespeichert. Wenn beim erneuten Öffnen des Dialogfelds History Daten enthält, werden diese Daten zum Initialisieren des Verlaufs verwendet. Die zuletzt eingegebene Benutzereingabe wird im Index 0 gespeichert. Keine der Zeichenfolgen in History darf leer sein. Wenn eine leere Zeichenfolge vorhanden ist, werden alle Zeichenfolgen hinter dieser Zeichenfolge (und einschließlich dieser) gelöscht.
Beispiel
string Name = "Linus";
dlgHBoxLayout {
dlgLabel("Enter &Name");
dlgStringEdit(Name);
}Funktion
Definiert eine Registerkartenseite.
Syntax
dlgTabPage(string Title) statementSiehe auch dlgTabWidget, Layout-Informationen, Vollständiges Beispiel.
Die dlgTabPage-Anweisung definiert eine Registerkartenseite mit dem angegebenen Titel, der die angegebene Anweisung enthält.
Wenn Title ein '&' enthält, wird das Zeichen nach dem kaufmännischen Und zu einem Kurzbefehl. Wenn der Benutzer ALT+Kurzbefehl drückt, wird diese Registerkartenseite geöffnet. Damit tatsächlich das Zeichen '&' im Text angezeigt wird, müssen Sie dieses maskieren.
Registerkartenseiten können nur innerhalb eines dlgTabWidget-Objekts verwendet werden.
Vorgabemäßig enthält ein dlgTabPage-Objekt den Wert dlgVBoxLayout, sodass bei einer einfachen Registerkartenseite nicht auf das Layout geachtet werden muss.
Beispiel
dlgTabWidget {
dlgTabPage("Tab &1") {
dlgLabel("This is page 1");
}
dlgTabPage("Tab &2") {
dlgLabel("This is page 2");
}
}Funktion
Definiert einen Container für Registerkartenseiten.
Syntax
dlgTabWidget { tabpages }
dlgTabWidget(int &Index) { tabpages }Siehe auch dlgTabPage, Layout-Informationen, Vollständiges Beispiel.
Das dlgTabWidget-Objekt definiert einen Container für eine Reihe von Registerkartenseiten.
tabpages muss eine Folge eines oder mehrerer dlgTabPage-Objekte sein. In dieser Folge dürfen keine anderen Dialogfeldobjekte vorhanden sein.
Index definiert, welche Registerkarte anfänglich ausgewählt werden soll. Wenn sich diese Auswahl ändert, wird die Index-Variable entsprechend festgelegt. Die erste Seite hat den Index 0 (unabhängig vom Titel).
Beispiele
dlgTabWidget {
dlgTabPage("Tab &1") {
dlgLabel("This is page 1");
}
dlgTabPage("Tab &2") {
dlgLabel("This is page 2");
}
}
dlgDialog("test")
{
int TabNr = 0;
int CheckBoxValue[];
dlgTabWidget(TabNr) {
for (int i = 0; i <= 9; i++) {
string s;
sprintf(s, "%d", i);
dlgTabPage("Tab " + s) {
dlgLabel("This is page " + s);
dlgCheckBox(s, CheckBoxValue[i]) {
string Msg;
sprintf(Msg, "Value #%d: %d\n", TabNr, CheckBoxValue[TabNr]);
dlgMessageBox(Msg);
}
}
}
}
};Funktion
Definiert ein Eingabefeld für mehrzeiligen Text.
Syntax
dlgTextEdit(string &Text)Siehe auch dlgStringEdit, dlgTextView, dlgLabel, Layout-Informationen, Vollständiges Beispiel.
Die dlgTextEdit-Anweisung definiert ein Eingabefeld für mehrzeiligen Text mit dem angegebenen Text.
Die Zeilen in Text müssen durch ein Zeilenumbruchzeichen ('\n') getrennt werden. Leerzeichen am Ende der in Text enthaltenen Zeilen werden entfernt. Beim Zurückgeben sind keine Leerzeichen am Ende der Zeilen mehr vorhanden. Leere Zeilen am Ende des Texts werden vollständig entfernt.
Beispiel
string Text = "This is some text.\nLine 2\nLine 3";
dlgVBoxLayout {
dlgLabel("&Edit the text");
dlgTextEdit(Text);
}Funktion
Definiert ein mehrzeiliges Text-Viewer-Feld.
Syntax
dlgTextView(string Text) dlgTextView(string Text, string &Link) statement
Siehe auch dlgTextEdit, dlgLabel, Layout-Informationen, Vollständiges Beispiel.
Die dlgTextView-Anweisung definiert ein mehrzeiliges Text-Viewer-Feld mit dem angegebenen Text.
Text kann HTML-Tags enthalten.
Externe Hyperlinks in Text werden mit dem entsprechenden Anwendungsprogramm geöffnet.
Wenn Link angegeben ist und Text Hyperlinks enthält, wird die Anweisung jedes Mal ausgeführt, wenn der Benutzer auf einen Hyperlink klickt. Dabei wird der Wert von Link auf den Wert gesetzt, der im <a href=...>-Tag als Wert für href definiert ist. Wenn die Link-Variable nach der Ausführung der Anweisung nicht leer ist, werden Hyperlinks gemäß der Vorgabe behandelt. Dies ist auch der Fall, wenn Link Text enthält, bevor dlgTextView geöffnet wird. Dies ermöglicht einen anfänglichen Bildlauf zu einer bestimmten Position. Wenn Link angegeben ist, werden externe Hyperlinks nicht geöffnet.
Beispiel
string Text = "This is some text.\nLine 2\nLine 3"; dlgVBoxLayout { dlgLabel("&View the text"); dlgTextView(Text); }
Funktion
Öffnet einen vertikalen Feldlayoutkontext.
Syntax
dlgVBoxLayout statementSiehe auch dlgGridLayout, dlgHBoxLayout, Layout-Informationen, Vollständiges Beispiel.
Die dlgVBoxLayout-Anweisung öffnet einen vertikalen Feldlayoutkontext für die angegebene Anweisung.
Vorgabemäßig enthält ein dlgDialog-Objekt den Wert dlgVBoxLayout, sodass bei einem einfachen Dialogfeld nicht auf das Layout geachtet werden muss.
Beispiel
dlgVBoxLayout {
dlgLabel("Box 1");
dlgLabel("Box 2");
dlgLabel("Box 3");
}Alle Objekte in einem User-Language-Dialogfeld werden in einem Layoutkontext platziert.
Zu den Layoutkontexten gehören Raster, horizontal und vertikal.
Objekte in einem Rasterlayoutkontext müssen die Rasterkoordinaten der Zelle oder Zellen angeben, in die sie platziert werden sollen. Um eine Textbeschriftung in Zeile 5, Spalte 2, zu platzieren, würden Sie Folgendes schreiben:
dlgGridLayout {
dlgCell(5, 2) dlgLabel("Text");
}Wenn sich das Objekt über mehrere Zellen erstrecken soll, müssen Sie die Koordinaten der Startzelle und der Endzelle angeben. Um eine Gruppe zu platzieren, die sich von Zeile 1, Spalte 2, bis Zeile 3, Spalte 5, erstreckt, würden Sie Folgendes schreiben:
dlgGridLayout {
dlgCell(1, 2, 3, 5) dlgGroup("Title") {
//...
}
}Objekte in einem horizontalen Layoutkontext werden von links nach rechts platziert. Die speziellen Objekte dlgStretch und dlgSpacing können verwendet werden, um die Verteilung des verfügbaren Platzes weiter zu verfeinern.
Um zwei Schaltflächen zu definieren, die bis zur rechten Kante des Dialogfelds verschoben werden, würden Sie Folgendes schreiben:
dlgHBoxLayout {
dlgStretch(1);
dlgPushButton("+OK") dlgAccept();
dlgPushButton("Cancel") dlgReject();
}Objekte in einem vertikalen Layoutkontext folgen denselben Regeln wie beim horizontalen Layoutkontext, mit dem Unterschied, dass die Objekte von oben nach unten platziert werden.
Die vertikalen, horizontalen und Rasterlayoutkontexte können gemischt werden, um die gewünschte Layoutstruktur eines Dialogfelds zu erstellen. Eine Demonstration dazu finden Sie unter Vollständiges Beispiel.
Die folgenden Funktionen können in User-Language-Dialogfeldern verwendet werden:
Funktion
Schließt das Dialogfeld und übernimmt die Inhalte.
Syntax
void dlgAccept([ int Result ]);Siehe auch dlgReject, dlgDialog, Vollständiges Beispiel.
Die dlgAccept-Funktion führt dazu, dass das dlgDialog-Objekt geschlossen und nach Abschluss der aktuellen Anweisungssequenz zurückgegeben wird.
Alle Änderungen, die der Benutzer an den Dialogfeldwerten vorgenommen hat, werden übernommen und in die Variablen kopiert, die beim Definieren der Dialogfeldobjekte angegeben wurden.
Der optionale Wert für Result ist der Wert, der im Dialogfeld zurückgegeben wird. In der Regel sollte dies ein positiver ganzzahliger Wert sein. Wenn kein Wert angegeben ist, wird vorgabemäßig 1 festgelegt.
Beachten Sie, dass dlgAccept() zur normalen Programmausführung zurückkehrt. In einer Sequenz wie
dlgPushButton("OK") {
dlgAccept();
dlgMessageBox("Accepting!");
}wird die Anweisung nach dlgAccept() daher weiterhin ausgeführt.
Beispiel
int Result = dlgDialog("Test") {
dlgPushButton("+OK") dlgAccept(42);
dlgPushButton("Cancel") dlgReject();
};Funktion
Zeigt das Dialogfeld nach dem Ändern der Werte erneut an.
Syntax
void dlgRedisplay(void);Siehe auch dlgReset, dlgDialog, Vollständiges Beispiel.
Die dlgRedisplay-Funktion kann aufgerufen werden, um das dlgDialog-Objekt sofort zu aktualisieren, nachdem die beim Definieren der Dialogfeldobjekte verwendeten Variablen geändert wurden.
Sie müssen dlgRedisplay() nur dann aufrufen, wenn das Dialogfeld aktualisiert werden soll, während der Programmcode noch ausgeführt wird. Im folgenden Beispiel wird der Status in Running... geändert, und dlgRedisplay() muss aufgerufen werden, damit diese Änderung wirksam wird, bevor die Programmaktion durchgeführt wird. Nach dem letzten Statuswechsel wird der Status in Finished geändert. Es ist nicht erforderlich, dlgRedisplay() aufzurufen, da alle Dialogfeldobjekte automatisch aktualisiert werden, nachdem Sie die Anweisung verlassen haben.
Beispiel
string Status = "Idle";
int Result = dlgDialog("Test") {
dlgLabel(Status, 1); // note the '1' to tell the label to be updated!
dlgPushButton("+OK") dlgAccept(42);
dlgPushButton("Cancel") dlgReject();
dlgPushButton("Run") {
Status = "Running...";
dlgRedisplay();
// some program action here...
Status = "Finished.";
}
};Funktion
Setzt alle Dialogfeldobjekte auf ihre Anfangswerte zurück.
Syntax
void dlgReset(void);Siehe auch dlgReject, dlgDialog, Vollständiges Beispiel.
Die dlgReset-Funktion kopiert die Anfangswerte wieder in alle Dialogfeldobjekte des aktuellen dlgDialog-Objekts.
Alle Änderungen, die der Benutzer an den Dialogfeldwerten vorgenommen hat, werden verworfen.
Beim Aufruf von dlgReject() wird ein Aufruf von dlgReset() impliziert.
Beispiel
int Number = 1;
int Result = dlgDialog("Test") {
dlgIntEdit(Number);
dlgPushButton("+OK") dlgAccept(42);
dlgPushButton("Cancel") dlgReject();
dlgPushButton("Reset") dlgReset();
};Funktion
Schließt das Dialogfeld und verwirft die Inhalte.
Syntax
void dlgReject([ int Result ]);Siehe auch dlgAccept, dlgReset, dlgDialog, Vollständiges Beispiel.
Die dlgReject-Funktion führt dazu, dass das dlgDialog-Objekt geschlossen und nach Abschluss der aktuellen Anweisungssequenz zurückgegeben wird.
Alle Änderungen, die der Benutzer an den Dialogfeldwerten vorgenommen hat, werden verworfen. Die Variablen, die beim Definieren der Dialogfeldobjekte angegeben wurden, werden auf ihre ursprünglichen Werte zurückgesetzt, wenn das Dialogfeld wieder angezeigt wird.
Der optionale Wert für Result ist der Wert, der im Dialogfeld zurückgegeben wird. In der Regel sollte dies 0 oder ein negativer ganzzahliger Wert sein. Wenn kein Wert angegeben ist, wird vorgabemäßig 0 festgelegt.
Beachten Sie, dass dlgReject() zur normalen Programmausführung zurückkehrt. In einer Sequenz wie
dlgPushButton("Cancel") {
dlgReject();
dlgMessageBox("Rejecting!");
}wird die Anweisung nach dlgReject() daher weiterhin ausgeführt.
Beim Aufruf von dlgReject() wird ein Aufruf von dlgReset() impliziert.
Beispiel
int Result = dlgDialog("Test") {
dlgPushButton("+OK") dlgAccept(42);
dlgPushButton("Cancel") dlgReject();
};Funktion
Gibt an, ob die sich die aktuelle Auswahl in einem dlgListView- oder dlgListBox-Objekt geändert hat.
Syntax
int dlgSelectionChanged(void);Gibt Folgendes zurück
Die dlgSelectionChanged-Funktion gibt einen Wert ungleich null zurück, wenn sich nur die Auswahl in der Liste geändert hat.
Siehe auch dlgListView, dlgListBox.
Die dlgSelectionChanged-Funktion kann in einem Listenkontext verwendet werden, um zu bestimmen, ob die Anweisung von dlgListView oder dlgListBox aufgerufen wurde, da der Benutzer auf ein Element doppelgeklickt hat, oder ob nur die aktuelle Auswahl in der Liste geändert wurde.
Wenn die Anweisung eines dlgListView- oder dlgListBox-Objekts keinen Aufruf von dlgSelectionChanged enthält, wird diese Anweisung nur ausgeführt, wenn der Benutzer auf ein Element in der Liste doppelklickt. Wenn jedoch ein ULP auf Änderungen an der aktuellen Auswahl in der Liste reagieren muss, kann dlgSelectionChanged in der Anweisung der Liste aufgerufen werden. Dadurch wird die Anweisung auch dann aufgerufen, wenn sich die aktuelle Auswahl in der Liste ändert.
Wenn ein Listenelement beim ersten Öffnen des Dialogfelds ausgewählt wird und die Anweisung der Liste einen Aufruf von dlgSelectionChanged enthält, wird die Anweisung mit dlgSelectionChanged ausgeführt, und es wird True zurückgegeben, um die anfängliche Änderung von Keine Auswahl in eine tatsächliche Auswahl anzugeben. Spätere programmbezogene Änderungen an den Zeichenfolgen oder der Auswahl der Liste lösen keine automatische Ausführung der Anweisung der Liste aus. Dies ist wichtig zu wissen, wenn das aktuelle Listenelement ein anderes Dialogfeldobjekt steuert, z. B. ein dlgTextView-Objekt, das eine erweiterte Darstellung des aktuell ausgewählten Elements anzeigt.
Beispiel
string Colors[] = { "red\tThe color RED", "green\tThe color GREEN", "blue\tThe color BLUE" };
int Selected = 0; // initially selects "red"
string MyColor;
dlgLabel(MyColor, 1);
dlgListView("Name\tDescription", Colors, Selected) {
if (dlgSelectionChanged())
MyColor = Colors[Selected];
else
dlgMessageBox("You have chosen " + Colors[Selected]);
}Einige Zeichen haben spezielle Bedeutungen in Schaltflächen- oder Beschriftungstexten, sodass sie mit Escape-Zeichen versehen werden müssen, wenn sie wörtlich angezeigt werden sollen. Dazu müssen Sie dem Zeichen einen umgekehrten Schrägstrich voranstellen. Beispiel:
dlgLabel("Miller \\& Co.");Dies führt dazu, dass im Dialogfeld "Miller & Co." angezeigt wird. Beachten Sie, dass hier zwei umgekehrte Schrägstriche existieren, da diese Zeile zuerst den User-Language-Parser durchläuft, der den ersten umgekehrten Schrägstrich entfernt.
Hier sehen Sie ein vollständiges Beispiel für ein User-Language-Dialogfeld:
int hor = 1;
int ver = 1;
string fileName;
int Result = dlgDialog("Enter Parameters") {
dlgHBoxLayout {
dlgStretch(1);
dlgLabel("This is a simple dialog");
dlgStretch(1);
}
dlgHBoxLayout {
dlgGroup("Horizontal") {
dlgRadioButton("&Top", hor);
dlgRadioButton("&Center", hor);
dlgRadioButton("&Bottom", hor);
}
dlgGroup("Vertical") {
dlgRadioButton("&Left", ver);
dlgRadioButton("C&enter", ver);
dlgRadioButton("&Right", ver);
}
}
dlgHBoxLayout {
dlgLabel("File &name:");
dlgStringEdit(fileName);
dlgPushButton("Bro&wse") {
fileName = dlgFileOpen("Select a file", fileName);
}
}
dlgGridLayout {
dlgCell(0, 0) dlgLabel("Row 0/Col 0");
dlgCell(1, 0) dlgLabel("Row 1/Col 0");
dlgCell(0, 1) dlgLabel("Row 0/Col 1");
dlgCell(1, 1) dlgLabel("Row 1/Col 1");
}
dlgSpacing(10);
dlgHBoxLayout {
dlgStretch(1);
dlgPushButton("+OK") dlgAccept();
dlgPushButton("Cancel") dlgReject();
}
};