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:

Funzioni per gestire l'input di tasti singoli da tastiera (basso livello):

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

Funzioni per gestire il buzzer:

BEEP(nFrequency, nDuration)

emette il tono specificato (nFrequency, in hertz) per la durata indicata (nDuration, in millisecondi)

Funzioni per gestire i parametri per l'input/output a video:

DISPPARSAVE()

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

Funzioni per gestire la scrittura a video:

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

Funzioni per l'input assistito da tastiera (alto livello):

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 letterale

RxExp 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 opzioni
vSelectable -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 selezionabile
nFirst 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 opzioni
vSelectable -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 selezionabile
nFirst 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
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
Midnight Lake iPhone Case Black Women Shoes Black Flat Shoes Leather Flats Black Patent Ballerinas Black Ballet Shoes Casual Shoes Black Shoes Women Balle Record Player Cufflinks Best iPhone XR Clear Cases iPhone XS/XS Max Leather Cases Sale Best iPhone 8/8 Plus Silicone Cases iPhone 7/7 Plus Cases & Screen Protector New Cases For iPhone 6/6 Plus iPhone 8 Case Sale iPhone Xr Case Online iPhone 7 Case UK Online iPhone X Case UK Sale iPhone X Case Deals iPhone Xs Case New Case For iPhone Xr UK Online Case For iPhone 8 UK Outlet Fashion Silver Cufflinks For Men Best Mens Cufflinks Outlet Online The Gold Cufflinks Shop Online Cheap Shirt Cufflinks On Sale Nice Wedding Cufflinks UK Online Top Black Cufflinks UK Online Mens Cufflinks Online Silver Cufflinks For Men Men Cufflinks UK Sale Gold Cufflinks UK Online Gold Cufflinks UK Silver Cufflinks UK Shirt Cufflinks Discount Online Mens Cufflinks Deals & Sales Girls Shoes For Dance Fashion Ballet Dance Shoes Best Ballet Flats Shoes UK Online Cheap Ballet Pointe Shoes UK Online Best Ballet Shoes Outlet Best Dance Shoes Sale Cheap Ballet Flats Sale UK Best Pointe Shoes Online UK Ballet Dance Shoes UK Shoes For Dance UK Best Ballet Slippers Shop Best Yoga Shoes Hotsell