Funzioni di libreria: funzioni interattive (console) |
A questa famiglia appartengono tutte le funzioni utilizzabili per creare
un'interazione diretta con l'utente: funzioni per creare un output formattato,
routine per l'acquisizione dell'input da tastiera, eccetera.
Queste funzioni sono riservate alla
versione interattiva di Proteus, nella quale è predefinita la direttiva INTERACTIVE.
Molte delle funzioni presentate richiedono il passaggio di parametri costanti, il cui valore è associato ad un nome mnemonico all'interno del file includibile console.prt, che andrebbe incluso qualora si utilizzi una qualsiasi delle funzioni descritte più sotto.
Le funzioni sono raccolte nelle seguenti categorie:
SETKEY(nKey, UDF)
esegue UDF (funzione utente con 0 parametri) ogni volta che viene premuto nKey durante l'invocazione della funzione GETCH; il risultato della UDF diviene il nuovo valore della GETCH (se 0, viene ignorata la pressione del tasto)
UNSETKEY(nKey)
elimina l'associazione di nKey con una UDF (vedi SETKEY)
STUFFKEY(nKey)
inserisce nKey nel buffer di tastiera
GETCH([nSeconds])
attende la pressione di un tasto per nSeconds secondi (o indefinitamente, se nSeconds non è specificato);
ritorna 0 se è scaduto il timeout, il codice del tasto premuto altrimenti; questa funzione tiene conto
di SETKEY e STUFFKEY
KBDHIT()
ritorna un numero diverso da 0 se c'è un tasto nel buffer di tastiera, 0 altrimenti; tiene conto di STUFFKEY
BEEP(nFrequency, nDuration)
emette il tono specificato (nFrequency, in hertz) per la durata indicata (nDuration, in millisecondi)
salva tutti i parametri video correnti in una stringa che viene restituita dalla funzione; utilizzare DISPPARRESTORE per ripristinare gli attributi video
DISPPARRESTORE(cParameters)
ripristina i parametri video dalla stringa cParameters; questa stringa deve essere stata ottenuta precedentemente attraverso una chiamata a DISPPARSAVE
DISPSET(nParameter, value)
permette di impostare un attributo video ad un determinato valore; ritorna il valore precedente dell'attributo.
I valori attuali si possono ottenere attraverso la funzione DISPGET.
I possibili valori numerici di nParameter si trovano elencati nel file console.prt; qui di seguito riportiamo solo i valori mnemonici, che consigliamo di utilizzare sempre includendo all'inizio del proprio programma il file console.prt:
Parametro Significato DISP_XSTART offset orizzontale sommato automaticamente ad ogni coordinata X specificata nelle funzioni video; il default è 0. Utile per riposizionare tutte le maschere senza cambiare le coordinate. DISP_YSTART offset verticale sommato automaticamente ad ogni coordinata Y specificata nelle funzioni video; il default è 0. Utile per riposizionare tutte le maschere senza cambiare le coordinate. DISP_CURSOR dimensioni del cursore; i possibili valori sono DISP_CUR_OFF (cursore assente), DISP_CUR_BIG (blocco lampeggiante), DISP_CUR_SMALL (trattino, default) DISP_CURX ascissa corrente del cursore; il default è la posizione attuale del cursore DISP_CURY ordinata corrente del cursore; il default è la posizione attuale del cursore DISP_MAXCOL massima ascissa dello schermo; dedotta dalla modalità video corrente DISP_MAXROW massima ordinata dello schermo; dedotta dalla modalità video corrente DISP_JUST tipo di giustificazione per la scrittura a video, utilizzata da DISP[E]OUT e DISP[E]WRITE; i possibili valori sono:
- DISP_JUST_NONE: nessuna giustificazione (default)
- DISP_JUST_LEFT: giustifica a sinistra
- DISP_JUST_CENTER: centra
- DISP_JUST_RIGHT: giustifica a destra
- DISP_JUST_PACK: giustifica a pacchetto
Se la giustificazione è diversa da DISP_JUST_NONE, viene utilizzato il valore di DISP_JLEN come lunghezza nella quale giustificare la stringa
DISP_JLEN lunghezza di giustificazione; di default, è pari alla massima larghezza dello schermo meno l'offset orizzontale DISP_FOREG colore testo (default: LIGHTGRAY) DISP_UNSFG colore testo non selezionato (default: DARKGRAY) DISP_SELFG colore testo selezionato (default: LIGHTGREEN) DISP_BACKG colore sfondo (default: BLACK) DISP_SELBG colore sfondo selezionato (default: LIGHTGRAY) DISP_BUTFG colore testo pulsante (default: LIGHTGRAY) DISP_BUTBG colore sfondo pulsante (default: BLACK) DISP_SBUTFG colore testo pulsante selezionato (default: BLACK) DISP_SBUTBG colore sfondo pulsante selezionato (default: LIGHTGRAY) DISP_TITLEFG colore testo titolo (default: LIGHTRED) DISP_TITLEBG colore sfondo titolo (default: LIGHTGRAY) DISP_SCORE scoreboard presente o meno (lo scoreboard è un testo descrittivo per le opzioni di un menu; di default, vale 0, cioè assente) DISP_SCRFG testo scoreboard (default: BLACK) DISP_SCRBG sfondo scoreboard (default: LIGHTGRAY) DISP_SCRX ascissa alla quale inizia lo scoreboard DISP_SCRY ordinata alla quale inizia lo scoreboard DISP_SCRLEN lunghezza in caratteri dello scoreboard DISP_SCRJUST tipo di giustificazione (vedi DISP_JUST per i possibili valori) DISP_FRAME cornice utilizzata o meno (per DISPBOX, DISPMENU, DISPLIST, DISPALERT, DISPOSD; default: 1) DISP_FRAMEFG colore cornice (default: LIGHTGRAY) DISP_FRAMEBG sfondo cornice (default: BLACK) DISP_FRAMECH caratteri da utilizzare per la cornice; sono 8 caratteri utilizzati per tracciare una cornice e rappresentano rispettivamente:
- 1 - angolo superiore sinistro
- 2 - lato superiore
- 3 - angolo superiore destro
- 4 - lato destro
- 5 - angolo inferiore destro
- 6 - lato inferiore
- 7 - angolo inferiore sinitro
- 8 - lato sinistro
Alcuni possibili valori sono:
- DISP_FRAME_SINGLE: cornice con linea singola (default)
- DISP_FRAME_DOUBLE: cornice con linea doppia
- DISP_FRAME_SNGDOU: cornice con linea singola (lati alto/basso) e doppia (lati destro/sinistro)
- DISP_FRAME_DOUSNG: cornice con linea doppia (lati alto/basso) e singola (lati destro/sinistro)
- DISP_FRAME_DOTS: cornice a puntini
DISP_FRAME3D indica se la cornice debba essere tracciata o meno con effetto 3D (default: 1) DISP_LISTSEL carattere che indica la selezione nelle liste; alcuni possibili valori sono:
- DISP_LISTSEL_ARR: freccia a destra (default)
- DISP_LISTSEL_CHK: simbolo di spunta
- DISP_LISTSEL_SQR: quadratino
- DISP_LISTSEL_DAR: chiusura citazione
- DISP_LISTSEL_GT: simbolo maggiore di
DISP_SHADOW indica il tipo di ombra da applicare ai box; i possibili valori sono:
- DISP_SHADOW_NONE: nessuna ombra
- DISP_SHADOW_LEFT: ombra a sinistra
- DISP_SHADOW_RIGHT: ombra a destra (default)
DISP_PATTERN carattere di riempimento, con cui riempire le cornici, cancellare lo schermo, giustificare le stringhe; default: spazio (ascii 32) DISP_BLINK indica se ablitare il lampeggio dei caratteri oppure i colori ad alta intensità per lo sfondo; disponibile solo per versioni di Proteus Dos (sotto Windows il lampeggio è sempre disabilitato); i possibili valori sono:
- DISP_BLINK_OFF: niente lampeggio, colori di sfondo ad alta intensità (default)
- DISP_BLINK_ON: abilita lampeggio, colori di sfondo a bassa intensità
DISP_SOUND permette di silenziare il beeper di avviso per le funzioni di editing (per uso attraverso telnet server); default: 1 (suoni abilitati) DISP_THUMBCH caratteri da utilizzare per il thumb elevator (colonna che indica la posizione relativa dell'elemento selezionato in una lista, qualora la lista si estenda oltre le dimensioni della finestra); il valore di default è DISP_THUMB_STD; si tratta di quattro caratteri che rappresentano rispettivamente:
- 1 - carattere superiore colonna
- 2 - carattere inferiore colonna
- 3 - carattere riempimento colonna
- 4 - carattere ascensore (indicatore di posizione)
DISP_EOLWRAP abilita o meno il wrap a fine riga (e lo scrolling all'ultima riga del video); default: 1 I possibili colori sono:
Valore Significato Esempio BLACK nero BLUE blu GREEN verde CYAN ciano RED rosso MAGENTA magenta BROWN marrone LIGHTGRAY grigio chiaro DARKGRAY grigio scuro LIGHTBLUE blu chiaro LIGHTGREEN verde chiaro LIGHTCYAN ciano chiaro LIGHTRED rosso chiaro LIGHTMAGENTA magenta chiaro YELLOW giallo WHITE bianco
DISPGET(nParameter)
ritorna il valore corrente dell'attributo specificato; si veda DISPSET per una descrizione dei possibili valori per nParameter
DISPATTRIB(nX, nY, @nFGColour, @nBGColour)
ritorna il colore di primo piano/testo (nFGColour) ed il colore di sfondo (nBGColour) presenti alla coordinata nX, nY dello schermo
RESIZE(nX, nY)
cambia la dimensione orizzontale (nX) e verticale (nY) della console video; nelle versioni Windows di Proteus qualsiasi valore positivo è ammesso per questi parametri; nelle versioni Dos, nX è ignorato (sempre 80) ed nY è approssimato ai seguenti possibili valori: 25, 43, 50
DISPCOLORIZE(nX1, nY1, nX2, nY2, nFGColour, nBGColour)
colora l'area da nX1, nY1 a nX2, nY2 con i colori nFGColour (testo) ed nBGColour (sfondo)
DISPINVERT(nX1, nY1, nX2, nY2)
inverte i colori nell'area da nX1, nY1 a nX2, nY2
DISPSAVE(nX1, nY1, nX2, nY2)
ritorna una stringa che può essere utilizzata dalla funzione DISPRESTORE per ripristinare l'immagine compresa nell'area rettangolare che va da nX1, nY1 a nX2, nY2
DISPRESTORE(nX1, nY1, nX2, nY2, cImage)
ripristina l'area cImage (ottenuta con DISPSAVE) da nX1, nY1 a nX2, nY2; i valori nX1, nY1, nX2, nY2 possono essere diversi da quelli utilizzati nella chiamata a DISPSAVE; tuttavia, le differenze nX2 - nX1 e nY2 - nY1 devono coincidere con le rispettive differenze dei parametri di invocazione di DISPSAVE; in parole povere, la lunghezza dei lati dell'area delimitata dalla funzione DISPSAVE deve corrispondere con la rispettiva lunghezza dei lati dell'area delimitata dai parametri di invocazione di DISPRESTORE
DISPCLEAR(nX1, nY1, nX2, nY2[, nBGColour[, cPattern]])
ripulisce con il carattere DISP_PATTERN (oppure cPattern, se specificato) e con il colore di sfondo nBGColour (oppure DISP_BACKG) l'area compresa tra nX1, nY1 e nX2, nY2
DISPCLS()
ripulisce l'intera area video con il carattere DISP_PATTERN ed il colore di sfondo DISP_BACKG
DISPHSCROLL(nX1, nY1, nX2, nY2, nOffset)
scrolla orizzontalmente l'area compresa tra nX1, nY1 e nX2, nY2 di nOffset caratteri (positivo = scrolla a sinistra, negativo = scrolla a destra)
DISPVSCROLL(nX1, nY1, nX2, nY2, nOffset)
scrolla verticalmente l'area compresa tra nX1, nY1 e nX2, nY2 di nOffset righe (positivo = scrolla in alto, negativo = scrolla in basso)
DISPBOX(nX1, nY1, nX2, nY2)
disegna un box da nX1, nY1 a nX2, nY2 con gli attributi di linea, ombra e cornice correnti
DISPLINE(nX1, nY1, nX2, nY2[, cOCharVChar])
disegna una linea da nX1, nY1 a nX2, nY2, dove nX1 = nX2 oppure nY1 = nY2; il primo carattere di cOCharVChar è utilizzato se la linea risulta orizzontale, il secondo carattere se la linea risulta verticale; in mancanza di cOCharVChar sono utilizzati i caratteri 2 e 4 di DISPGET(DISP_FRAMECH)
DISPWRITE(nX, nY, cText)
scrive cText a nX, nY con gli attributi di colore (DISP_FOREG e DISP_BACKG) e giustificazione (DISP_JUST e DISP_JLEN) attuali
DISPEWRITE(nX, nY, cText)
scrive cText a nX, nY con gli attributi di colore (DISP_FOREG e DISP_BACKG) e giustificazione (DISP_JUST e DISP_JLEN) attuali; ciascun carattere preceduto da "~" in cText è stampato evidenziato
DISPOUT(cText)
scrive cText alle coordinate correnti del cursore, con gli attributi di colore (DISP_FOREG e DISP_BACKG) e giustificazione (DISP_JUST e DISP_JLEN) attuali
DISPEOUT(cText)
scrive cText alle coordinate correnti del cursore, con gli attributi di colore (DISP_FOREG e DISP_BACKG) e giustificazione (DISP_JUST e DISP_JLEN) attuali; ciascun carattere preceduto da "~" in cText è stampato evidenziato
DISPOSD(cText)
scrive in un riquadro a centro schermo il testo cText, con gli attributi di colore (DISP_FOREG e DISP_BACKG) e giustificazione (DISP_JUST e DISP_JLEN) attuali; ritorna una stringa utilizzabile da DISPRESTOREOSD per ripristinare l'area sottostante occupata dal riquadro disegnato
DISPRESTOREOSD(cImage)
ripristina lo schermo modificato da DISPOSD; cImage deve essere stato ottenuto mediante invocazione di DISPOSD
GETSTRING(nX, nY, @cDefault, nMaxLength, nWinLength, @nStartPos, @nWinOffset, @nInsert, cPicture)
legge una stringa introdotta da tastiera; la riga di input si trova alla posizione nX, nY e ha lunghezza nWinLength; la stringa introducibile ha lunghezza massima pari a nMaxLength e il suo valore iniziale è cDefault. nStartPos indica la posizione iniziale del cursore all'interno della stringa (all'inizio dovrebbe essere 0); nWinOffset indica lo spostamento della finestra di input all'interno della riga di input (all'inizio dovrebbe essere 0); nInsert indica lo stato di inserimento (1) o sovrascrittura (0).
cPicture è una stringa che indica la formattazione dell'input; può contenere i seguenti caratteri:
Carattere Significato ! converte tutte le lettere alfabetiche in maiuscolo * stampa il carattere '*' al posto di qualsiasi carattere digitato N accetta solo un numero intero F accetta solo un numero intero o decimale D accetta solo una data H accetta solo un'ora Mc maschera per l'introduzione dei dati; c può contenere i seguenti caratteri: X = carattere qualunque
N = cifra 0-9
O = cifra 0-7
H = cifra 0-9 o A-H
B = cifra 0 o 1
A = carattere alfabetico
U = carattere alfanumerico
altro = carattere letteraleRxExp xExp espressione regolare estesa TxExp xExp espressione regolare estesa case-unsensitive PrExp rExp espressione regolare OrExp rExp espressione regolare case-unsensitive La funzione accetta i tasti cursore, Home, End, Ins, Canc, Backspace, Invio, Esc, con i consueti significati.
La funzione ritorna 1 se l'utente conferma l'editing (Invio), 0 altrimenti. In ogni caso, sono aggiornati per riferimento la variabile cDefault con la stringa introdotta, nStartPos, nWinOffset ed nInsert con la posizione del cursore, l'offset di finestra e lo stato di inserimento.
GETSTRINGUDF(nX, nY, @cDefault, nMaxLength, nWinLength, @nStartPos, @nWinOffset, @nInsert, cPicture, READER)
legge una stringa introdotta da tastiera; la riga di input si trova alla posizione nX, nY e ha lunghezza nWinLength; la stringa introducibile ha lunghezza massima pari a nMaxLength e il suo valore iniziale è cDefault. nStartPos indica la posizione iniziale del cursore all'interno della stringa (all'inizio dovrebbe essere 0); nWinOffset indica lo spostamento della finestra di input all'interno della riga di input (all'inizio dovrebbe essere 0); nInsert indica lo stato di inserimento (1) o sovrascrittura (0).
Ad ogni tasto introdotto dall'utente viene invocata la UDF READER che prende due parametri, passati entrambi per riferimento, corrispondenti a nKey (tasto premuto) e cValue (valore attuale della stringa editata):
READER(@nKey, @cValue)La UDF può ritornare i seguenti valori:
Valore Significato 0 accetta il carattere ed inseriscilo nella stringa 1 stringa aggiornata - rivisualizza e continua con l'editing 2 stringa aggiornata - rivisualizza e conferma l'editing 3 abort editing 4 conferma editing 5 ignora il carattere 6 carattere precedente 7 carattere successivo 8 inizio stringa 9 fine stringa La funzione ritorna 1 se l'utente conferma l'editing (Invio), 0 altrimenti. In ogni caso, sono aggiornati per riferimento la variabile cDefault con la stringa introdotta, nStartPos, nWinOffset ed nInsert con la posizione del cursore, l'offset di finestra e lo stato di inserimento.
GETTEXT(nX, n Y, @cDefault, nRows, nCols, @nStartPos, @nInsert)
permette all'utente di editare un buffer rettangolare; la tabella sottostante riassume i parametri:
Parametro Significato nX, nY angolo superiore sinistro cDefault valore iniziale del buffer rettangolare nRows numero di righe della finestra di editing nCols numero di colonne della finestra di editing nStartPos posizione iniziale del cursore nel buffer rettangolare (nRows x nCols) nInsert condizione di inserimento/sovrascrittura Il carattere SCR = CHR(255) è utilizzato per delimitare i paragrafi. La tabella sottostante riassume i tasti attivi:
Tasto Significato CTRL-invio/Ctrl-W/invio sull'ultima riga conferma editing ESC annulla editing Tasti cursore navigano l'area Home/End inizio/fine riga CTRL-home/end inizio/fine buffer CTRL-left/right parola precedente/successiva Delete cancella il carattere attuale e sposta all'indietro il testo Backspace cancella il carattere precedente e sposta indietro il testo ESC esce ritornando il buffer modificato Return inserisce spazi fino alla fine della riga (porta a capo ciò che segue) se l'inserimento è attivo; introduce SCR al termine della riga corrente (se possibile) altrimenti CTRL-Y cancella la riga attuale Ins cambia tra inserimento e sovrascrittura; in modo inserimento, ogni carattere introdotto sposta tutti gli altri caratteri a destra CTRL-B mostra/nasconde i contrassegni di paragrafo CTRL-Z porta a capo della prossima riga la parola a sinistra (wrap) CTRL-E porta il cursore alla fine della parola editata CTRL-N azzera il buffer e riporta il cursore all'inizio CTRL-S checkpoint (copia internamente il contenuto attuale del buffer di editing) CTRL-L ripristina all'ultimo checkpoint I paragrafi sono gestiti grazie all'introduzione del simbolo SCR nel testo; il carattere CHR(255) è equivalente allo spazio, per cui non viene stampato né visualizzato (risulta invisibile); per questo, il buffer viene sempre restituito con tale carattere come contrassegno di paragrafo.
La funzione ritorna 1 se l'utente conferma l'editing, 0 altrimenti.
cDefault, nStartPos ed nInsert sono sempre aggiornate per riferimento con i valori all'uscita dalla funzione.
GETTEXTUDF(nX, nY, @cDefault, nRows, nCols, @nStartPos, @nInsert, READER)
permette all'utente di editare un buffer rettangolare; la tabella sottostante riassume i parametri:
Parametro Significato nX, nY angolo superiore sinistro cDefault valore iniziale del buffer rettangolare nRows numero di righe della finestra di editing nCols numero di colonne della finestra di editing nStartPos posizione iniziale del cursore nel buffer rettangolare (nRows x nCols) nInsert condizione di inserimento/sovrascrittura Il carattere SCR = CHR(255) è utilizzato per delimitare i paragrafi.
Ad ogni tasto introdotto dall'utente viene invocata la UDF READER che prende due parametri, passati entrambi per riferimento, corrispondenti a nKey (tasto premuto) e cValue (valore attuale del buffer editato):READER(@nKey, @cValue)La UDF può ritornare i seguenti valori:
Valore Significato 0 accetta il carattere ed inseriscilo nella stringa 1 stringa aggiornata - rivisualizza e continua con l'editing 2 stringa aggiornata - rivisualizza e conferma l'editing 3 abort editing 4 conferma editing 5 ignora il carattere 6 carattere precedente 7 carattere successivo 8 inizio stringa 9 fine stringa 10 cancella la riga attuale 11 inizio riga 12 fine riga 13 parola precedente 14 parola successiva 15 mostra/nasconde i contrassegni di paragrafo 16 porta a capo della prossima riga la parola a sinistra (wrap) 17 porta il cursore alla fine della parola editata 18 azzera il buffer e porta il cursore all'inizio della stringa 19 ripristina all'ultimo checkpoint 20 checkpoint I paragrafi sono gestiti grazie all'introduzione del simbolo SCR nel testo; il carattere CHR(255) è equivalente allo spazio, per cui non viene stampato né visualizzato (risulta invisibile); per questo, il buffer viene sempre restituito con tale carattere come contrassegno di paragrafo.
La funzione ritorna 1 se l'utente conferma l'editing, 0 altrimenti.
cDefault, nStartPos ed nInsert sono sempre aggiornate per riferimento con i valori all'uscita dalla funzione.
DISPMENU(nX, nY, vOptions, vSelectable, @nFirst)
visualizza un menu dal quale l'utente può scegliere un'opzione; la tabella sottostante riassume i parametri:
Parametro Significato nX, nY angolo superiore sinistro del menu vOptions handle di un vettore, ottenuto con l'invocazione della funzione VECCREATE come in questo esempio:
VECCREATE("testo1|descrizione1", "testo2|descrizione2")
se testox è vuoto, descrizionex è il carattere con cui disegnare la riga vuota; in questo modo, è possibile creare delle righe separatrici per le varie opzionivSelectable -1 (tutte le opzioni sono selezionabili) oppure handle di un vettore di 0/1 ottenuto con VECCREATE come in questo esempio:
VECCREATE(1,0)
1 corrisponde a selezionabile, 0 a non selezionabilenFirst numero d'ordine dell'opzione predefinita; in caso di selezione, viene aggiornata con il numero dell'opzione selezionata. La funzione accetta i seguenti tasti: Home, End, tasti cursore, Invio, Esc, con i consueti significati.
La descrizione delle opzioni è visualizzata nello scoreboard, solo se questo è attivo.
La funzione ritorna 1 se l'utente seleziona un'opzione, -1 se l'handle vOptions non è valido o è vuoto, 0 altrimenti. All'uscita aggiorna nFirst con il numero dell'opzione selezionata.
DISPMENUUDF(nX, nY, vOptions, vSelectable, @nFirst, READER)
visualizza un menu dal quale l'utente può scegliere un'opzione; la tabella sottostante riassume i parametri:
Parametro Significato nX, nY angolo superiore sinistro del menu vOptions handle di un vettore, ottenuto con l'invocazione della funzione VECCREATE come in questo esempio:
VECCREATE("testo1|descrizione1", "testo2|descrizione2")
se testox è vuoto, descrizionex è il carattere con cui disegnare la riga vuota; in questo modo, è possibile creare delle righe separatrici per le varie opzionivSelectable -1 (tutte le opzioni sono selezionabili) oppure handle di un vettore di 0/1 ottenuto con VECCREATE come in questo esempio:
VECCREATE(1,0)
1 corrisponde a selezionabile, 0 a non selezionabilenFirst numero d'ordine dell'opzione predefinita; in caso di selezione, viene aggiornata con il numero dell'opzione selezionata. La descrizione delle opzioni è visualizzata nello scoreboard, solo se questo è attivo. Ad ogni tasto introdotto dall'utente viene invocata la UDF READER che prende quattro parametri, passati per riferimento:
nOpReq = READER(@nKey, @nCurrentOption, @vOptions, @vSelectable)
Parametro Significato nKey tasto premuto dall'utente nCurrentOption opzione corrente vOptions vettore delle opzioni vSelectable vettore dello stato di selezione delle opzioni La UDF può ritornare i seguenti valori:
Valore Significato 0 elabora il tasto 1 ignora il tasto premuto 2 seleziona nCurrentOption, ritorna il suo numero d'ordine nel vettore delle opzioni 3 evidenzia nCurrentOption, che diventa la nuova opzione corrente 4 passa alla successiva opzione 5 passa alla precedente opzione 6 passa alla prima opzione 7 passa all'ultima opzione 8 ritorna -1 9 seleziona e mantiene a video il menu 10 ricostruisce il menu La funzione ritorna 1 se l'utente seleziona un'opzione, -1 se l'handle vOptions non è valido o è vuoto, 0 altrimenti. All'uscita aggiorna nFirst con il numero dell'opzione selezionata.
DISPLIST(vOptions, nX, nY, cTitle, nRows, nLength, @nFirstSel, bSelection, @nStartLine)
visualizza una lista di opzioni, dalla quale l'utente può selezionare uno o più valori; il comportamento è determinato in particolare dal valore di bSelection; la tabella sottostante riassume i parametri:
Parametro Significato vOptions handle di un vettore, ottenuto con l'invocazione della funzione VECCREATE come in questo esempio:
VECCREATE("testo1", "testo2")nX, nY angolo superiore sinistro del box contenente le opzioni cTitle titolo del box (visualizzato solo se è attiva la cornice) nRows massimo numero di opzioni visualizzate contemporaneamente (se inferiore al numero di opzioni, il contenuto del box scrollerà e sarà visualizzato un indicatore di scorrimento sul lato destro della cornice) nLength lunghezza di pad delle opzioni; se 0, viene utilizzata la lunghezza dell'opzione più lunga nFirstSel numero d'ordine dell'opzione predefinita; in caso di selezione, viene aggiornato con il numero dell'opzione selezionata; di default, dovrebbe essere 1 bSelection -1 oppure handle di una bitmap ottenuto con BITMAPNEW; se non è -1, sono ammesse scelte multiple nStartLine linea alla quale viene visualizzata l'opzione selezionata (default: 0) La funzione accetta i seguenti tasti: Home, End, Invio (seleziona [se multipla] o accetta opzione corrente), spazio (attivo solo se è possibile una scelta multipla; è come Invio seguito da freccia giù), Esc, Ctrl+Invio (attivo solo se è possibile una scelta multipla: accetta selezione), tasti cursore, Tab (seleziona o deseleziona tutte le voci).
La funzione ritorna 1 (selezione multipla) o il numero dell'opzione (a partire da 1) se l'utente seleziona un'opzione, -1 se l'handle vOptions o bSelection non è valido o è vuoto, 0 altrimenti (Esc).
All'uscita aggiorna nFirstSel con il numero dell'opzione selezionata e bSelection con la mappa delle selezioni.
DISPLISTUDF(vOptions, nX, nY, cTitle, nRows, nLength, @nFirstSel, bSelection, @nStartLine, READER)
visualizza una lista di opzioni, dalla quale l'utente può selezionare uno o più valori; il comportamento è determinato in particolare dal valore di bSelection; la tabella sottostante riassume i parametri:
Parametro Significato vOptions handle di un vettore, ottenuto con l'invocazione della funzione VECCREATE come in questo esempio:
VECCREATE("testo1", "testo2")nX, nY angolo superiore sinistro del box contenente le opzioni cTitle titolo del box (visualizzato solo se è attiva la cornice) nRows massimo numero di opzioni visualizzate contemporaneamente (se inferiore al numero di opzioni, il contenuto del box scrollerà e sarà visualizzato un indicatore di scorrimento sul lato destro della cornice) nLength lunghezza di pad delle opzioni; se 0, viene utilizzata la lunghezza dell'opzione più lunga nFirstSel numero d'ordine dell'opzione predefinita; in caso di selezione, viene aggiornato con il numero dell'opzione selezionata; di default, dovrebbe essere 1 bSelection -1 oppure handle di una bitmap ottenuto con BITMAPNEW; se non è -1, sono ammesse scelte multiple nStartLine linea alla quale viene visualizzata l'opzione selezionata (default: 0) Ad ogni tasto introdotto dall'utente viene invocata la UDF READER che prende quattro parametri, i primi due passati per riferimento:
nOpReq = READER(@nKey, @nCurrentOption, @vOptions, bSelection)
Parametro Significato nKey tasto premuto dall'utente nCurrentOption opzione corrente vOptions vettore delle opzioni bSelection mappa di bit con lo stato di selezione delle opzioni La UDF può ritornare i seguenti valori:
Valore Significato 0 elabora il tasto 1 ignora il tasto premuto 2 seleziona nCurrentOption; se bSelection è -1, ritorna il suo numero d'ordine nel vettore delle opzioni 3 ritorna l'opzione corrente o 1 (selezione multipla) e rimuove la box della lista 4 ritorna l'opzione corrente o 1 (selezione multipla) e lascia la box della lista 5 ritorna -1 e rimuove la box della lista 6 ritorna -1 e lascia la box della lista 7 evidenzia nCurrentOption, che diventa la nuova opzione corrente 8 passa alla successiva opzione 9 passa alla precedente opzione 10 passa alla prima opzione 11 passa all'ultima opzione 12 ricostruisce la lista La funzione ritorna 1 (selezione multipla) o il numero dell'opzione (a partire da 1) se l'utente seleziona un'opzione, -1 se l'handle vOptions o bSelection non è valido o è vuoto, 0 altrimenti (Esc).
All'uscita aggiorna nFirstSel con il numero dell'opzione selezionata e bSelection con la mappa delle selezioni.
DISPALERT(cText, vButtons)
visualizza un messaggio a centro schermo (cText) accompagnato da un pulsante la cui descrizione è contenuta nel vettore vButtons; la tabella sottostante riassume i parametri:
Parametro Significato cText testo da visualizzare vButtons handle di un vettore, ottenuto con l'invocazione della funzione VECCREATE come in questo esempio:
VECCREATE("tasto1", "tasto2")La funzione accetta i seguenti tasti: tasti cursore, spazio o Invio (accetta selezione), Esc (abort), Tab (cicla fra i pulsanti).
La funzione ritorna il numero del pulsante selezionato all'accettazione (> 0) oppure 0 (Esc).
DISPALERTUDF(cText, vButtons, READER)
visualizza un messaggio a centro schermo (cText) accompagnato da un pulsante la cui descrizione è contenuta nel vettore vButtons; la tabella sottostante riassume i parametri:
Parametro Significato cText testo da visualizzare vButtons handle di un vettore, ottenuto con l'invocazione della funzione VECCREATE come in questo esempio:
VECCREATE("tasto1", "tasto2")Ad ogni tasto introdotto dall'utente viene invocata la UDF READER che prende due parametri, passati per riferimento:
nOpReq = READER(@nKey, @nCurrentButton)La UDF può ritornare i seguenti valori:
Valore Significato 0 elabora nKey 1 seleziona l'opzione e ritorna (rimuovendo il box) 2 seleziona l'opzione e ritorna (lasciando il box) 3 annulla e ritorna rimuovendo il box 4 annulla e ritorna lasciando il box 5 prossima opzione 6 opzione precedente 7 prima opzione 8 ultima opzione La funzione ritorna il numero del pulsante selezionato all'accettazione (> 0) oppure 0 (Esc).
Inizio pagina | Prossimo argomento | Argomento precedente | Indice per argomenti | Indice analitico |