Le finestre di dialogo Linguaggio utente consentono di definire un proprio front-end a un ULP (User Language Program). Nelle sezioni seguenti vengono descritte in dettaglio le finestre di dialogo Linguaggio utente:
Le finestre di dialogo predefinite implementano le finestre di dialogo standard tipiche utilizzate di frequente per selezionare nomi di file o inviare messaggi di errore.
Per informazioni su come definire le proprie finestre di dialogo utente complesse, vedere Oggetti della finestra di dialogo.
Funzione
Visualizza una finestra di dialogo di directory.
Sintassi
string dlgDirectory(string Title[, string Start])Valori restituiti
La funzione dlgDirectory restituisce il nome di percorso completo della directory selezionata. Se l'utente ha annullato la finestra di dialogo, il risultato sarà una stringa vuota.
Vedere anche dlgFileOpen
La funzione dlgDirectory visualizza una finestra di dialogo di directory da cui l'utente può selezionare una directory. La variabile Title verrà utilizzata come il titolo della finestra di dialogo.
Se la variabile Start non è vuota, verrà utilizzata come il punto di partenza per dlgDirectory.
Esempio
string dirName;
dirName = dlgDirectory("Select a directory", "");Funzione
Visualizza una finestra di dialogo del file.
Sintassi
string dlgFileOpen(string Title[, string Start[, string Filter]])
string dlgFileSave(string Title[, string Start[, string Filter]])Valori restituiti
Le funzioni dlgFileOpen e dlgFileSave restituiscono il nome di percorso completo del file selezionato. Se l'utente ha annullato la finestra di dialogo, il risultato sarà una stringa vuota.
Vedere anche dlgDirectory
Le funzioni dlgFileOpen e dlgFileSave visualizzano una finestra di dialogo del file da cui l'utente può selezionare un file. La variabile Title verrà utilizzata come il titolo della finestra di dialogo.
Se la variabile Start non è vuota, verrà utilizzata come il punto di partenza per la finestra di dialogo file. In caso contrario verrà utilizzata la directory corrente.
Verranno visualizzati solo i file che soddisfano la variabile Filter. Se la variabile Filter è vuota, verranno visualizzati tutti i file.
La variabile Filter può essere un carattere jolly semplice (come in "*.brd"), un elenco di caratteri jolly (come in "*.bmp *.jpg") o può anche contenere testo descrittivo, come in "File bitmap (*.bmp)". Se la casella combinata "Tipo di file" della finestra di dialogo del file deve contenere diverse voci, queste devono essere separate da doppi punti e virgola, come in "File bitmap (*.bmp);; Altre immagini (*.jpg *.png)".
Esempio
string fileName;
fileName = dlgFileOpen("Select a file", "", "*.brd");Funzione
Visualizza una finestra di messaggio.
Sintassi
int dlgMessageBox(string Message[, button_list])Valori restituiti
La funzione dlgMessageBox restituisce l'indice del pulsante selezionato dall'utente. L'indice del primo pulsante in button_list è 0.
Vedere anche status()
La funzione dlgMessageBox visualizza il messaggio specificato in una finestra di dialogo modale e attende che l'utente selezioni uno dei pulsanti definiti in* button_list*.
Se la variabile Message contiene tag HTML, i caratteri '<', '>' e '&' devono essere specificati, rispettivamente, come <, > e &, se devono essere visualizzati come tali.
button_list è un elenco facoltativo di stringhe separate da virgola che definisce l'insieme di pulsanti che verranno visualizzati nella parte inferiore della finestra di messaggio. È possibile definire un massimo di tre pulsanti. Se button_list non è specificato, l'impostazione predefinita è "OK".
Il primo pulsante in button_list diventerà il pulsante di default (che verrà selezionato se l'utente preme INVIO) e l'ultimo pulsante dell'elenco diventerà il "pulsante di annullamento", che viene selezionato se l'utente preme ESCape o chiude la finestra di messaggio. È possibile impostare un pulsante diverso come predefinito precedendo il suo nome con un segno "+" ed è possibile rendere un pulsante diverso il pulsante di annullamento precedendo il suo nome con il carattere "-". Per iniziare un testo del pulsante con un carattere "+" o "-" effettivo, è necessario eseguire l'escape.
Se il testo di un pulsante contiene un carattere '&', il carattere che segue la e commerciale diventerà un tasto di scelta rapida e tale pulsante verrà selezionato quando l'utente preme il pulsante corrispondente. Per avere un carattere '&' effettivo nel testo, è necessario eseguire l'escape.
È possibile assegnare alla finestra di messaggio un'icona impostando il primo carattere del messaggio su
';' - for an Information
'!' - for a Warning
':' - for an ErrorSe, tuttavia, il messaggio deve iniziare con uno di questi caratteri, è necessario eseguire l'escape.
In Mac OS X, solo il carattere ':' restituirà come risultato la visualizzazione di un'icona. Tutti gli altri vengono ignorati.
Esempio
if (dlgMessageBox("!Are you sure?", "&Yes", "&No") == 0) {
// let's do it!
}Una finestra di dialogo Linguaggio utente è costituita dai seguenti oggetti della finestra di dialogo:
| dlgCell | un contesto della cella della griglia |
| dlgCheckBox | una casella di controllo |
| dlgComboBox | un campo di selezione della casella combinata |
| dlgDialog | il contenitore di base di qualsiasi finestra di dialogo |
| dlgGridLayout | un contesto di layout basato su griglia |
| dlgGroup | un campo di gruppo |
| dlgHBoxLayout | un contesto di layout del riquadro orizzontale |
| dlgIntEdit | un campo di immissione di tipo integer |
| dlgLabel | un'etichetta di testo |
| dlgListBox | una casella di riepilogo |
| dlgListView | una vista elenco |
| dlgPushButton | un pulsante di comando |
| dlgRadioButton | un pulsante di opzione |
| dlgRealEdit | un campo di immissione di valori reali |
| dlgSpacing | un oggetto spaziatura layout |
| dlgSpinBox | un campo di selezione della casella di selezione |
| dlgStretch | un oggetto estensione layout |
| dlgStringEdit | un campo di immissione di tipo stringa |
| dlgTabPage | una pagina scheda |
| dlgTabWidget | un contenitore pagina scheda |
| dlgTextEdit | un campo di immissione testo |
| dlgTextView | un campo di visualizzazione testo |
| dlgVBoxLayout | un contesto di layout del riquadro verticale |
Funzione
Definisce la posizione di una cella all'interno di un contesto di layout della griglia.
Sintassi
dlgCell(int row, int column[, int row2, int column2]) statementVedere anche dlgGridLayout, dlgHBoxLayout, dlgVBoxLayout, Informazioni sul layout, Un esempio completo
L'istruzione dlgCell definisce la posizione di una cella all'interno di un contesto di layout della griglia.
Gli indici di riga e colonna iniziano da 0, pertanto l'indice della cella in alto a sinistra è (0, 0).
Con due parametri, l'oggetto finestra di dialogo definito dall'istruzione verrà posizionato negli indirizzi della cella singola per riga e colonna. Con quattro parametri, l'oggetto finestra di dialogo si estende su tutte le celle da riga/colonna a riga2/colonna2.
Per default, l'oggetto dlgCell contiene un oggetto dlgHBoxLayout. Pertanto, se la cella contiene più oggetti finestra di dialogo, verranno posizionati uno accanto all'altro orizzontalmente.
Esempio
string Text;
dlgGridLayout {
dlgCell(0, 0) dlgLabel("Cell 0,0");
dlgCell(1, 2, 4, 7) dlgTextEdit(Text);
}Funzione
Definisce una casella di controllo.
Sintassi
dlgCheckBox(string Text, int &Checked) [ statement ]Vedere anche dlgRadioButton, dlgGroup, Informazioni sul layout, Un esempio completo
L'istruzione dlgCheckBox definisce una casella di controllo con il testo specificato.
Se il testo contiene un carattere '&', il carattere che segue la e commerciale diventerà un tasto di scelta rapida e quando l'utente preme ALT+tasto di scelta rapida, la casella di controllo verrà attivata/disattivata. Per avere un carattere '&' effettivo nel testo, è necessario eseguire l'escape.
La funzione dlgCheckBox viene utilizzata principalmente all'interno di un oggetto dlgGroup, ma può anche essere utilizzata in modo diverso. Tutte le caselle di controllo all'interno della stessa finestra di dialogo devono avere variabili Checked differenti.
Se l'utente controlla un oggetto dlgCheckBox, la variabile Checked associata viene impostata su 1, altrimenti viene impostata su 0. Il valore iniziale della variabile Checked definisce se una casella di controllo è inizialmente selezionata. Se la variabile Checked non è uguale a 0, la casella di controllo è inizialmente selezionata.
L'istruzione facoltativa viene eseguita ogni volta che l'oggetto dlgCheckBox viene attivato/disattivato.
Esempio
int mirror = 0;
int rotate = 1;
int flip = 0;
dlgGroup("Orientation") {
dlgCheckBox("&Mirror", mirror);
dlgCheckBox("&Rotate", rotate);
dlgCheckBox("&Flip", flip);
}Funzione
Definisce un campo di selezione della casella combinata.
Sintassi
dlgComboBox(string array[], int &Selected) [ statement ]
Vedere anche dlgListBox, dlgLabel, Informazioni sul layout, Un esempio completo
L'istruzione dlgComboBox definisce un campo di selezione della casella combinata con il contenuto della serie specificata.
La variabile Selected riflette l'indice della voce della casella combinata selezionata. L'indice della prima voce è 0.
Ogni elemento della serie definisce il contenuto di una voce nella casella combinata. Nessuna delle stringhe nella serie può essere vuota (se esiste una stringa vuota, tutte le stringhe successive, inclusa la stringa stessa, verranno rimosse).
L'istruzione facoltativa viene eseguita ogni volta che la selezione nell'oggetto dlgComboBox cambia. Prima che l'istruzione venga eseguita, tutte le variabili utilizzate con gli oggetti finestra di dialogo vengono aggiornate ai loro valori correnti e le eventuali modifiche apportate a queste variabili all'interno dell'istruzione verranno applicate nella finestra di dialogo al termine dell'istruzione.
Se il valore iniziale della variabile Selected è esterno all'intervallo degli indici della serie, viene preimpostato su 0.
Esempio
string Colors[] = { "red", "green", "blue", "yellow" };
int Selected = 2; // initially selects "blue"
dlgComboBox(Colors, Selected) dlgMessageBox("You have selected " + Colors[Selected]);Funzione
Esegue una finestra di dialogo Linguaggio utente.
Sintassi
int dlgDialog(string Title) block ;Valori restituiti
La funzione dlgDialog restituisce un valore intero a cui può essere assegnato un significato definito dall'utente tramite una chiamata alla funzione dlgAccept().
Se la finestra di dialogo viene semplicemente chiusa, il valore restituito sarà -1.
Vedere anche dlgGridLayout, dlgHBoxLayout, dlgVBoxLayout, dlgAccept, dlgReset, dlgReject, Un esempio completo
La funzione dlgDialog esegue la finestra di dialogo definita dal blocco. Questo è l'unico oggetto finestra di dialogo che di fatto è una funzione integrata Lingua dell'utente. Pertanto, può essere utilizzato ovunque è consentita una chiamata di funzione.
Il blocco contiene normalmente solo altri oggetti finestra di dialogo, ma è possibile utilizzare anche altre istruzioni Lingua dell'utente, ad esempio per aggiungere oggetti alla finestra di dialogo in modo condizionale (vedere il secondo esempio sottostante).
Per default, un oggetto dlgDialog contiene un'istruzione dlgVBoxLayout, pertanto una semplice finestra di dialogo non deve preoccuparsi del layout.
Un oggetto dlgDialog deve contenere ad un certo punto una chiamata alla funzione dlgAccept() per consentire all'utente di chiudere la finestra di dialogo e accettarne il contenuto.
Se è richiesta una semplice finestra di messaggio o una finestra di dialogo del file, potrebbe essere necessario utilizzare invece una delle finestre di dialogo predefinite.
Esempi
int Result = dlgDialog("Hello") {
dlgLabel("Hello world");
dlgPushButton("+OK") dlgAccept();
};
int haveButton = 1;
dlgDialog("Test") {
dlgLabel("Start");
if (haveButton)
dlgPushButton("Here") dlgAccept();
};Funzione
Apre un contesto di layout della griglia.
Sintassi
dlgGridLayout statementVedere anche dlgCell, dlgHBoxLayout, dlgVBoxLayout, Informazioni sul layout, Un esempio completo
L'istruzione dlgGridLayout apre un contesto di layout della griglia.
Il solo oggetto finestra di dialogo che è possibile utilizzare direttamente nell'istruzione è dlgCell, che definisce la posizione di un particolare oggetto finestra di dialogo all'interno del layout della griglia.
Gli indici di riga e colonna iniziano da 0, pertanto l'indice della cella in alto a sinistra è (0, 0).
Il numero di righe e colonne viene esteso automaticamente in base alla posizione degli oggetti finestra di dialogo definiti nel contesto di layout della griglia, pertanto non occorre definire in maniera esplicita il numero di righe e colonne.
Esempio
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");
}Funzione
Definisce un campo di gruppo.
Sintassi
Istruzione dlgGroup(string Title)
Vedere anche dlgCheckBox, dlgRadioButton, Informazioni di layout, Un esempio completo
L'istruzione dlgGroup definisce un gruppo con il titolo specificato.
Per default, un oggetto dlgGroup contiene un oggetto dlgVBoxLayout, pertanto un semplice gruppo non deve preoccuparsi del layout.
dlgGroup viene utilizzato principalmente per contenere un insieme di pulsanti di opzione o caselle di controllo, ma può anche contenere eventuali altri oggetti nella relativa istruzione. I pulsanti di opzione all'interno di un oggetto dlgGroup sono numerati a partire da 0.
Esempio
int align = 1;
dlgGroup("Alignment") {
dlgRadioButton("&Top", align);
dlgRadioButton("&Center", align);
dlgRadioButton("&Bottom", align);
}Funzione
Apre un contesto di layout del riquadro orizzontale.
Sintassi
dlgHBoxLayout statementVedere anche dlgGridLayout, dlgVBoxLayout, Informazioni sul layout, Un esempio completo
L'istruzione dlgHBoxLayout apre un contesto di layout del riquadro orizzontale per l'istruzione specificata.
Esempio
dlgHBoxLayout {
dlgLabel("Box 1");
dlgLabel("Box 2");
dlgLabel("Box 3");
}Funzione
Definisce un campo di immissione di tipo integer.
Sintassi
dlgIntEdit(int &Value, int Min, int Max)Vedere anche dlgRealEdit, dlgStringEdit, dlgLabel, Informazioni sul layout, Un esempio completo
L'istruzione dlgIntE*dit definisce un campo di immissione di tipo intero con la variabile Value specificata.
Se la variabile Value è inizialmente esterna all'intervallo definito da Min e Max, sarà limitata a questi valori.
Esempio
int Value = 42;
dlgHBoxLayout {
dlgLabel("Enter a &Number between 0 and 99");
dlgIntEdit(Value, 0, 99);
}Funzione
Definisce un'etichetta di testo.
Sintassi
dlgLabel(string Text [, int Update])Vedere anche Informazioni di layout, Un esempio completo, dlgRedisplay()
L'istruzione dlgLabel definisce un'etichetta con la variabile Text specificata.
La variabile Text può essere un valore letterale stringa, come in "Hello", o una variabile stringa.
Se la variabile Text contiene tag HTML, i caratteri '<', '>' e '&' devono essere specificati, rispettivamente, come "<", ">" e "&", se devono essere visualizzati come tali.
I collegamenti ipertestuali esterni nella variabile Text verranno aperti con il programma di applicazione appropriato.
Se la variabile Update non è 0 e la variabile Text è di tipo string, il suo contenuto può essere modificato nell'istruzione di, ad esempio, un oggetto dlgPushButton e l'etichetta verrà aggiornata automaticamente. Ciò, naturalmente, è utile solo se la variabile Text è una variabile di tipo stringa dedicata (non, ad esempio, la variabile loop di un'istruzione for).
Se la variabile Text contiene un carattere '&' e lo stato attivo della tastiera è impostato sull'oggetto che segue l'etichetta, il carattere che segue la e commerciale diventerà un tasto di scelta rapida e quando l'utente preme ALT+tasto di scelta rapida, lo stato attivo passerà all'oggetto che è stato definito subito dopo l'etichetta dlgLabel. Per avere un carattere '&' effettivo nel testo, è necessario eseguire l'escape.
Esempio
string OS = "Windows";
dlgHBoxLayout {
dlgLabel(OS, 1);
dlgPushButton("&Change OS") { OS = "Linux"; }
}Funzione
Definisce un campo di selezione della casella di riepilogo.
Sintassi
dlgListBox(string array[], int &Selected) [ statement ]Vedere anche dlgComboBox, dlgListView, dlgSelectionChanged, dlgLabel, Informazioni di layout, Un esempio completo
L'istruzione dlgListBox definisce un campo di selezione della casella di riepilogo con il contenuto della serie specificata.
La variabile Selected riflette l'indice della voce della casella di riepilogo selezionata. L'indice della prima voce è 0.
Ogni elemento della serie definisce il contenuto di una riga nella casella di riepilogo. Nessuna delle stringhe nella serie può essere vuota (se esiste una stringa vuota, tutte le stringhe successive, inclusa la stringa stessa, verranno rimosse).
L'istruzione facoltativa viene eseguita ogni volta che l'utente fa doppio clic su una voce dell'oggetto dlgListBox (vedere dlgSelectionChanged per informazioni su come chiamare l'istruzione quando viene modificata solo la selezione nell'elenco). Prima che l'istruzione venga eseguita, tutte le variabili utilizzate con gli oggetti finestra di dialogo vengono aggiornate ai loro valori correnti e le eventuali modifiche apportate a queste variabili all'interno dell'istruzione verranno applicate nella finestra di dialogo al termine dell'istruzione.
Se il valore iniziale della variabile Selected è esterno all'intervallo degli indici della serie, non verrà selezionata alcuna voce.
Esempio
string Colors[] = { "red", "green", "blue", "yellow" };
int Selected = 2; // initially selects "blue"
dlgListBox(Colors, Selected) dlgMessageBox("You have selected " + Colors[Selected]);Funzione
Definisce un campo di selezione della visualizzazione elenco a più colonne.
Sintassi
dlgListView(string Headers, string array[], int &Selected[, int &Sort]) [ statement ]
Vedere anche dlgListBox, dlgSelectionChanged, dlgLabel, Informazioni sul layout, Un esempio completo
L'istruzione dlgListView definisce un campo di selezione della visualizzazione elenco a più colonne con il contenuto della serie specificata.
La variabile Headers è l'elenco separato da tabulazioni di intestazioni di colonna.
La variabile Selected riflette l'indice della voce della vista elenco selezionata nella serie (la sequenza in cui le voci vengono di fatto visualizzate potrebbe essere diversa, poiché il contenuto di un oggetto dlgListView può essere ordinato in base alle diverse colonne). L'indice della prima voce è 0.
Se non è selezionata alcuna voce particolare, la variabile Selected deve essere inizializzata a -1. Se è impostata su -2, viene reso corrente il primo elemento in base alla colonna di ordinamento corrente. Se non è stata selezionata alcuna voce della vista, viene restituito -1.
La variabile Sort consente di definire la colonna da utilizzare per ordinare la vista elenco. La colonna più a sinistra è numerata 1. Il segno di questo parametro definisce la direzione di ordinamento (i valori positivi vengono ordinati in ordine crescente). Se la variabile Sort è 0 o è esterna al numero di colonne valido, non verrà eseguito alcun ordinamento. Il valore restituito di Sort riflette la colonna e la modalità di ordinamento selezionate dall'utente facendo clic sulle intestazioni di colonna dell'elenco. Per default, dlgListView ordina in base alla prima colonna, in ordine crescente.
Ogni elemento della serie definisce il contenuto di una riga nella vista elenco e deve contenere valori separati da tabulazioni. Se un elemento della serie contiene meno valori rispetto al numero di voci nella stringa Headers, i campi rimanenti saranno vuoti. Se un elemento della serie contiene più valori rispetto al numero di voci presenti nella stringa Headers, gli elementi superflui verranno rimossi automaticamente. Nessuna delle stringhe nella serie può essere vuota (se esiste una stringa vuota, tutte le stringhe successive, inclusa la stringa stessa, verranno rimosse).
Una voce di elenco che contiene avanzamenti riga ('\n') verrà visualizzata in più righe di conseguenza.
L'istruzione facoltativa viene eseguita ogni volta che l'utente fa doppio clic su una voce dell'oggetto dlgListView (vedere dlgSelectionChanged per informazioni su come chiamare l'istruzione quando viene modificata solo la selezione nell'elenco). Prima che l'istruzione venga eseguita, tutte le variabili utilizzate con gli oggetti finestra di dialogo vengono aggiornate ai loro valori correnti e le eventuali modifiche apportate a queste variabili all'interno dell'istruzione verranno applicate nella finestra di dialogo al termine dell'istruzione.
Se il valore iniziale della variabile Selected è esterno all'intervallo degli indici della serie, non verrà selezionata alcuna voce.
Se la stringa Headers è vuota, il primo elemento della serie viene utilizzato come stringa di intestazione. Di conseguenza, l'indice della prima voce è 1.
Il contenuto di un oggetto dlgListView può essere ordinato in base a qualsiasi colonna facendo clic sull'intestazione di tale colonna. Le colonne possono essere scambiate anche "facendo clic e trascinando" un'intestazione di colonna. Nessuna di queste modifiche avrà effetto sul contenuto della serie. Se il contenuto deve essere ordinato in ordine alfanumerico, è possibile utilizzare una serie string[] numerica.
Esempio
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]);Funzione
Definisce un pulsante di comando.
Sintassi
dlgPushButton(string Text) statementVedere anche Informazioni sul layout, Funzioni della finestra di dialogo, Un esempio completo
L'istruzione dlgPushButton definisce un pulsante di comando con il testo specificato.
Se la variabile Text contiene un carattere '&', il carattere che segue la e commerciale diventerà un tasto di scelta rapida e quando l'utente preme ALT+tasto di scelta rapida, il pulsante verrà selezionato. Per avere un carattere '&' effettivo nel testo, è necessario eseguire l'escape.
Se la variabile Text inizia con un carattere "+", questo pulsante diventerà il pulsante di default, che verrà selezionato se l'utente preme INVIO. Se la variabile Text inizia con un carattere "-", questo pulsante diventerà il pulsante di annullamento, che verrà selezionato se l'utente chiude la finestra di dialogo.
ATTENZIONE Accertarsi che l'istruzione di un tale pulsante di annullamento contrassegnato contenga una chiamata a dlgReject() In caso contrario, l'utente potrebbe non essere in grado di chiudere la finestra di dialogo.
Per ottenere un carattere "+" o "-" effettivo come il primo carattere del testo, è necessario eseguire l'escape.
Se l'utente seleziona un oggetto dlgPushButton, viene eseguita l'istruzione specificata. Prima che l'istruzione venga eseguita, tutte le variabili utilizzate con gli oggetti finestra di dialogo vengono aggiornate ai loro valori correnti e le eventuali modifiche apportate a queste variabili all'interno dell'istruzione verranno applicate nella finestra di dialogo al termine dell'istruzione.
Esempio
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(); }Funzione
Definisce un pulsante di opzione.
Sintassi
dlgRadioButton(string Text, int &Selected) [ statement ]Vedere anche dlgCheckBox, dlgGroup, Informazioni sul layout, Un esempio completo
L'istruzione dlgRadioButton definisce un pulsante di opzione con la variabile Text specificata.
Se la variabile Text contiene un carattere '&', il carattere che segue la e commerciale diventerà un tasto di scelta rapida e quando l'utente preme ALT+tasto di scelta rapida, il pulsante verrà selezionato. Per avere un carattere '&' effettivo nel testo, è necessario eseguire l'escape.
La funzione dlgRadioButton può essere utilizzata solo all'interno di una funzione dlgGroup. Tutti i pulsanti di scelta all'interno dello stesso gruppo devono utilizzare la stessa variabile Selected.
Se l'utente seleziona un oggetto dlgRadioButton, l'indice di tale pulsante all'interno di dlgGroup viene memorizzato nella variabile Selected. Il valore iniziale della variabile Selected definisce quale pulsante di opzione è inizialmente selezionato. Se la variabile Selected è esterna all'intervallo valido per questo gruppo, non verrà selezionato alcun pulsante di opzione. Per ottenere la selezione del pulsante di opzione corretta, è necessario impostare la variabile Selected prima che venga definito il primo oggetto dlgRadioButton e non modificarla tra l'aggiunta di pulsanti di opzione successivi. In caso contrario, il pulsante di opzione che verrà selezionato (se presente) non è definito.
L'istruzione facoltativa viene eseguita ogni volta che viene selezionata la funzione dlgRadioButton.
Esempio
int align = 1;
dlgGroup("Alignment") {
dlgRadioButton("&Top", align);
dlgRadioButton("&Center", align);
dlgRadioButton("&Bottom", align);
}Funzione
Definisce un campo di immissione di valori reali.
Sintassi
dlgRealEdit(real &Value, real Min, real Max)Vedere anche dlgIntEdit, dlgStringEdit, dlgLabel, Informazioni sul layout, Un esempio completo
L'istruzione dlgRealEdit definisce un campo di immissione di valori reali con la variabile Value specificata.
Se la variabile Value è inizialmente esterna all'intervallo definito da Min e Max, sarà limitata a questi valori.
Esempio
real Value = 1.4142;
dlgHBoxLayout {
dlgLabel("Enter a &Number between 0 and 99");
dlgRealEdit(Value, 0.0, 99.0);
}Funzione
Definisce spazio aggiuntivo in un contesto del layout del riquadro.
Sintassi
dlgSpacing(int Size)Vedere anche dlgHBoxLayout, dlgVBoxLayout, dlgStretch, Informazioni sul layout, Un esempio completo
L'istruzione dlgSpacing definisce lo spazio aggiuntivo in un contesto del layout del riquadro verticale o orizzontale.
La variabile Size definisce il numero di pixel dello spazio aggiuntivo.
Esempio
dlgVBoxLayout {
dlgLabel("Label 1");
dlgSpacing(40);
dlgLabel("Label 2");
}Funzione
Definisce un campo di selezione della casella di selezione.
Sintassi
dlgSpinBox(int &Value, int Min, int Max)Vedere anche dlgIntEdit, dlgLabel, Informazioni sul layout, Un esempio completo
L'istruzione dlgSpinBox definisce un campo di immissione della casella di selezione con la variabile Value specificata.
Se la variabile Value è inizialmente esterna all'intervallo definito da Min e Max, sarà limitata a questi valori.
Esempio
int Value = 42;
dlgHBoxLayout {
dlgLabel("&Select value");
dlgSpinBox(Value, 0, 99);
}Funzione
Definisce uno spazio estendibile vuoto in un contesto del layout del riquadro.
Sintassi
dlgStretch(int Factor)Vedere anche dlgHBoxLayout, dlgVBoxLayout, dlgSpacing, Informazioni sul layout, Un esempio completo
L'istruzione dlgStretch definisce uno spazio estendibile vuoto in un contesto del layout del riquadro verticale o orizzontale.
La variabile Factor definisce il fattore di estensione dello spazio.
Esempio
dlgHBoxLayout {
dlgStretch(1);
dlgPushButton("+OK") { dlgAccept(); };
dlgPushButton("Cancel") { dlgReject(); };
}Funzione
Definisce un campo di immissione di tipo string.
Sintassi
dlgStringEdit(string &Text[, string &History[][, int Size]])Vedere anche dlgRealEdit, dlgIntEdit, dlgTextEdit, dlgLabel, Informazioni sul layout, Un esempio completo
L'istruzione dlgStringEdit definisce un campo di immissione di testo di una riga con la variabile Text specificata.
Se viene specificata la variabile History, le stringhe immesse dall'utente nel tempo vengono memorizzate in tale serie di stringhe. Il campo di immissione contiene quindi un pulsante che consente all'utente di scegliere tra le stringhe immesse in precedenza. Se viene specificata una variabile Size maggiore di zero, nella serie viene memorizzato solo tale numero di stringhe. Se la variabile History contiene dati quando viene visualizzata la finestra di dialogo, tali dati verranno utilizzati per inizializzare la cronologia. L'input utente immesso più di recente viene memorizzato in corrispondenza dell'indice 0. Nessuna delle stringhe nella variabile History può essere vuota. Se è presente una stringa vuota, tutte le stringhe successive, inclusa la stringa stessa, verranno rimosse.
Esempio
string Name = "Linus";
dlgHBoxLayout {
dlgLabel("Enter &Name");
dlgStringEdit(Name);
}Funzione
Definisce una pagina scheda.
Sintassi
dlgTabPage(string Title) statementVedere anche dlgTabWidget, Informazioni sul layout, Un esempio completo
L'istruzione dlgTabPage definisce una pagina scheda con la variabile Title specificata contenente l'istruzione specificata.
Se la variabile Title contiene un carattere '&', il carattere che segue la e commerciale diventerà un tasto di scelta rapida e quando l'utente premerà ALT+tasto di scelta rapida, si aprirà questa pagina scheda. Per avere un carattere '&' effettivo nel testo, è necessario eseguire l'escape.
Le pagine scheda possono essere utilizzate solo all'interno di una istruzione dlgTabWidget.
Per default, l'oggetto dlgTabPage contiene un oggetto dlgVBoxLayout, pertanto una semplice pagina scheda non deve preoccuparsi del layout.
Esempio
dlgTabWidget {
dlgTabPage("Tab &1") {
dlgLabel("This is page 1");
}
dlgTabPage("Tab &2") {
dlgLabel("This is page 2");
}
}Funzione
Definisce un contenitore per pagine scheda.
Sintassi
dlgTabWidget { tabpages }
dlgTabWidget(int &Index) { tabpages }Vedere anche dlgTabPage, Informazioni sul layout, Un esempio completo
L'istruzione dlgTabWidget definisce un contenitore per un insieme di pagine scheda.
tabpages deve essere una sequenza di uno o più oggetti dlgTabPage. Questa sequenza non deve contenere altri oggetti finestra di dialogo.
La variabile Index definisce quale scheda deve essere selezionata inizialmente. Se questa selezione cambia, la variabile Index viene impostata di conseguenza. L'indice della prima pagina è 0 (a prescindere dal suo titolo).
Esempi
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);
}
}
}
}
};Funzione
Definisce un campo di immissione testo multilinea.
Sintassi
dlgTextEdit(string &Text)Vedere anche dlgStringEdit, dlgTextView, dlgLabel, Informazioni sul layout, Un esempio completo
L'istruzione dlgTextEdit definisce un campo di immissione testo multilinea con la variabile Text specificata.
Le righe nella variabile Text devono essere delimitate mediante un carattere di nuova riga ('\n'). Gli eventuali spazi alla fine delle righe contenute nella variabile Text verranno rimossi. Dopo l'esecuzione del comando return, alla fine delle righe non saranno presenti spazi vuoti. Le righe vuote alla fine del testo verranno completamente rimosse.
Esempio
string Text = "This is some text.\nLine 2\nLine 3";
dlgVBoxLayout {
dlgLabel("&Edit the text");
dlgTextEdit(Text);
}Funzione
Definisce un campo del visualizzatore testo multilinea.
Sintassi
dlgTextView(string Text)dlgTextView(string Text, string &Link) statement
Vedere anche dlgTextEdit, dlgLabel, Informazioni sul layout, Un esempio completo
L'istruzione dlgTextView definisce un campo del visualizzatore testo multilinea con la variabile Text specificata.
La variabile Text può contenere tag HTML.
I collegamenti ipertestuali esterni nella variabile Text verranno aperti con il programma di applicazione appropriato.
Se si specifica la variabile Link e la variabile Text contiene collegamenti ipertestuali, l'istruzione verrà eseguita ogni volta che l'utente fa clic su un collegamento ipertestuale, con il valore di Link impostato su qualsiasi valore definito dal tag <a href=...> come valore di href. Se, dopo l'esecuzione dell'istruzione, la variabile Link non è vuota, verrà eseguita la gestione di default dei collegamenti ipertestuali. Ciò si verifica anche se la variabile Link contiene testo prima dell'apertura dell'oggetto dlgTextView. Questo consente lo scorrimento iniziale in una determinata posizione. Se viene specificata una variabile Link, i collegamenti ipertestuali esterni non verranno aperti.
Esempio
string Text = "This is some text.\nLine 2\nLine 3"; dlgVBoxLayout { dlgLabel("&View the text"); dlgTextView(Text); }
Funzione
Apre un contesto del layout del riquadro verticale.
Sintassi
dlgVBoxLayout statementVedere anche dlgGridLayout, dlgHBoxLayout, Informazioni sul layout, Un esempio completo
L'istruzione dlgVBoxLayout apre un contesto del layout del riquadro verticale per l'istruzione specificata.
Per default, un oggetto dlgDialog contiene un'istruzione dlgVBoxLayout, pertanto una semplice finestra di dialogo non deve preoccuparsi del layout.
Esempio
dlgVBoxLayout {
dlgLabel("Box 1");
dlgLabel("Box 2");
dlgLabel("Box 3");
}Tutti gli oggetti all'interno di una finestra di dialogo Linguaggio utente vengono posizionati all'interno di un contesto del layout.
I contesti di layout possono essere griglie, orizzontali o verticali.
Gli oggetti in un contesto di layout della griglia devono specificare le coordinate della griglia della cella o delle celle in cui devono essere posizionati. Per inserire un'etichetta di testo in corrispondenza della riga 5, colonna 2, è necessario scrivere
dlgGridLayout {
dlgCell(5, 2) dlgLabel("Text");
}Se l'oggetto deve estendersi su più celle, è necessario specificare le coordinate della cella iniziale e della cella finale. Per posizionare un gruppo che si estende dalla riga 1, colonna 2 fino alla riga 3, colonna 5, scrivere
dlgGridLayout {
dlgCell(1, 2, 3, 5) dlgGroup("Title") {
//...
}
}Gli oggetti in un contesto di layout orizzontale vengono posizionati da sinistra verso destra. Gli oggetti speciali dlgStretch e dlgSpacing possono essere utilizzati per rifinire ulteriormente la distribuzione dello spazio disponibile.
Per definire due pulsanti che vengono spinti completamente verso il bordo destro della finestra di dialogo, scrivere
dlgHBoxLayout {
dlgStretch(1);
dlgPushButton("+OK") dlgAccept();
dlgPushButton("Cancel") dlgReject();
}Gli oggetti in un contesto di layout verticale seguono le stesse regole di quelli in un contesto di layout orizzontale, tranne per il fatto che vengono posizionati dall'alto verso il basso.
I contesti di layout verticale, orizzontale e griglia possono essere combinati per creare la struttura di layout desiderata di una finestra di dialogo. Per una dimostrazione di ciò, vedere l'esempio completo.
Le seguenti funzioni possono essere utilizzate con le finestre di dialogo Linguaggio utente:
Funzione
Chiude la finestra di dialogo e accetta il relativo contenuto.
Sintassi
void dlgAccept([ int Result ]);Vedere anche dlgReject, dlgDialog, Un esempio completo
La funzione dlgAccept determina la chiusura di dlgDialog e il ritorno al termine della sequenza di istruzioni corrente.
Le eventuali modifiche apportate dall'utente ai valori della finestra di dialogo verranno accettate e copiate nelle variabili che sono state fornite quando sono stati definiti gli oggetti finestra di dialogo.
La variabile Result facoltativa è il valore che verrà restituito dalla finestra di dialogo. In genere, deve essere un valore intero positivo. Se non viene specificato alcun valore, per default viene impostato su 1.
Notare che al termine dell'istruzione dlgAccept() viene ripristinata la normale esecuzione del programma, pertanto in una sequenza del tipo
dlgPushButton("OK") {
dlgAccept();
dlgMessageBox("Accepting!");
}l'istruzione dopo dlgAccept() verrà ancora eseguita.
Esempio
int Result = dlgDialog("Test") {
dlgPushButton("+OK") dlgAccept(42);
dlgPushButton("Cancel") dlgReject();
};Funzione
Visualizza nuovamente la finestra di dialogo dopo la modifica dei valori.
Sintassi
void dlgRedisplay(void);Vedere anche dlgReset, dlgDialog, Un esempio completo
La funzione dlgRedisplay può essere chiamata per aggiornare immediatamente l'oggetto dlgDialog dopo che sono state apportate modifiche alle variabili utilizzate durante la definizione degli oggetti finestra di dialogo.
Se la finestra di dialogo deve essere aggiornata mentre è ancora in esecuzione il codice di programma, è sufficiente chiamare la funzione dlgRedisplay(). Nell'esempio seguente lo stato viene modificato in "In esecuzione..." e dlgRedisplay() deve essere chiamata per rendere effettiva questa modifica prima che venga eseguita "l'azione del programma". Al termine, lo stato finale cambia in "Fine". Non è necessario chiamare dlgRedisplay(), poiché tutti gli oggetti finestra di dialogo vengono aggiornati automaticamente dopo l'esecuzione dell'istruzione.
Esempio
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.";
}
};Funzione
Ripristina i valori iniziali di tutti gli oggetti finestra di dialogo.
Sintassi
void dlgReset(void);Vedere anche dlgReject, dlgDialog, Un esempio completo
La funzione dlgReset copia i valori iniziali in tutti gli oggetti finestra di dialogo della funzione dlgDialog corrente.
Le eventuali modifiche apportate dall'utente ai valori della finestra di dialogo verranno ignorate.
La chiamata della funzione dlgReject() implica una chiamata a dlgReset().
Esempio
int Number = 1;
int Result = dlgDialog("Test") {
dlgIntEdit(Number);
dlgPushButton("+OK") dlgAccept(42);
dlgPushButton("Cancel") dlgReject();
dlgPushButton("Reset") dlgReset();
};Funzione
Chiude la finestra di dialogo e rifiuta il relativo contenuto.
Sintassi
void dlgReject([ int Result ]);Vedere anche dlgAccept, dlgReset, dlgDialog, Un esempio completo
La funzione dlgReject determina la chiusura di dlgDialog e l'esecuzione di return al termine della sequenza di istruzioni corrente.
Le eventuali modifiche apportate dall'utente ai valori della finestra di dialogo verranno ignorate. I valori originali delle variabili che sono state fornite quando gli oggetti finestra di dialogo sono stati definiti verranno ripristinati quando si esegue il return della finestra di dialogo.
La variabile Result facoltativa è il valore che verrà restituito dalla finestra di dialogo. In genere, questo valore deve essere 0 o un valore intero negativo. Se non viene specificato alcun valore, per default viene impostato su 0.
Notare che al termine della funzione dlgReject() viene ripristinata la normale esecuzione del programma, pertanto in una sequenza del tipo
dlgPushButton("Cancel") {
dlgReject();
dlgMessageBox("Rejecting!");
}l'istruzione dopo dlgReject() verrà comunque eseguita.
La chiamata della funzione dlgReject() implica una chiamata a dlgReset().
Esempio
int Result = dlgDialog("Test") {
dlgPushButton("+OK") dlgAccept(42);
dlgPushButton("Cancel") dlgReject();
};Funzione
Indica se la selezione corrente in un oggetto dlgListView o dlgListBox è cambiata.
Sintassi
int dlgSelectionChanged(void);Valori restituiti
La funzione dlgSelectionChanged restituisce un valore diverso da zero solo se la selezione nell'elenco è stata modificata.
Vedere anche dlgListView, dlgListBox
La funzione dlgSelectionChanged può essere utilizzata in un contesto di elenco per determinare se l'istruzione di dlgListView o dlgListBox è stata chiamata perché l'utente ha fatto doppio clic su un elemento o se è stata modificata solo la selezione corrente nell'elenco.
Se l'istruzione di una funzione dlgListView o dlgListBox non contiene alcuna chiamata a dlgSelectionChanged, tale istruzione viene eseguita solo quando l'utente fa doppio clic su un elemento nell'elenco. Tuttavia, se un programma ULP deve reagire alle modifiche apportate alla selezione corrente nell'elenco, può chiamare dlgSelectionChanged all'interno dell'istruzione dell'elenco. In questo modo l'istruzione viene chiamata anche se la selezione corrente nell'elenco cambia.
Se inizialmente viene selezionata una voce elenco quando la finestra di dialogo viene aperta e l'istruzione dell'elenco contiene una chiamata a dlgSelectionChanged, l'istruzione viene eseguita con dlgSelectionChanged che restituisce true per indicare la modifica iniziale da "nessuna selezione" a una selezione effettiva. Eventuali modifiche programmatiche successive alle stringhe o alla selezione dell'elenco non attiveranno l'esecuzione automatica dell'istruzione dell'elenco. Ricordare ciò nel caso l'elemento dell'elenco corrente controlli un altro oggetto finestra di dialogo, ad esempio un oggetto dlgTextView che mostra una rappresentazione estesa dell'elemento attualmente selezionato.
Esempio
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]);
}Alcuni caratteri hanno significati speciali nei testi di pulsanti o etichette, pertanto è necessario eseguirne l'escape se devono essere visualizzati letteralmente. A tale scopo, il carattere deve essere preceduto da una barra rovesciata, come in
dlgLabel("Miller \\& Co.");Nella finestra di dialogo verrà visualizzato "Miller & Co.". Notare che in questo caso sono presenti due caratteri di barra rovesciata, in quanto questa riga deve essere prima analizzata dal parser del linguaggio utente, che eliminerà la prima barra rovesciata.
Di seguito è riportato un esempio completo di finestra di dialogo Linguaggio utente:
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();
}
};