Finestre di dialogo

From SageDev KB
Jump to navigation Jump to search

Dettagli da pag.67 di Linguaggio.pdf.

Messaggio semplice[edit]

call MESSAGE("Ciao") from GESECRAN

call MESSAGE("Ciao\Ciao su seconda riga") from GESECRAN

che si appoggia su Infbox ma scrive il messaggio nella traccia se eseguito in modalità batch.

Oppure (deprecato)

Infbox "Ciao"

Input da utente[edit]

La chiamata che si può usare è Call SAICAR (...) From GESECRAN

Pur non avendo il sorgente ho visto che funziona così (alcuni parametri non li ho capiti):

Local Integer OK
Local Char YINPUT(250)
Local Char YTIT(30) : YTIT='Titolo finestrella'
Local Char YTITCAMPO(30): YTITCAMPO='Nome campo da inserire'
Local Char YTYP(30) : YTYP = 'Tipo_dato'  #vedi funzione GESATY
Local Integere YLEN : YLEN =30            #Lunghezza del campo se necessaria (in realtà taglia l'input se più lungo, senza avvisare)
Call SAICAR (YINPUT, YTIT, YTITCAMPO, YTYP,1,YLEN,"",OK) From GESECRAN
Infbox YINPUT


Esempio con tipo oggetto

Local Integer OK
Local Char YINPUT(250)
Local Char YTIT(30) : YTIT='Inserisci valore'
Local Char YTITCAMPO(30): YTITCAMPO='Nuovo valore'
Local Char YOBJ(30) : YOBJ = 'BPC'
Call SAICAR (YINPUT, YTIT, YTITCAMPO, YOBJ,0,0,"",OK) From GESECRAN
Infbox YINPUT

Esempio veloce che ho trovato provando (non ho il sorgente GESECRAN...) con menu

Local Integer OK
Local Char YINPUT(250)
Local Char YTIT(30) : YTIT='Inserisci tipo proposta'
Local Char YTITCAMPO(30): YTITCAMPO='Nuovo tipo proposta'
Local Char YOBJ(30) : YOBJ = 'M'
Call SAICAR (YINPUT, YTIT, YTITCAMPO, YOBJ,250,0,"",OK) From GESECRAN
Infbox YINPUT

Esempio con semplice stringa

Local Integer OK
Local Char YINPUT(250)
Local Char YTIT(30) : YTIT='Inserisci stringa'
Local Char YTITCAMPO(30): YTITCAMPO='Stringa'
Local Char YOBJ(30) : YOBJ = 'A'
Call SAICAR (YINPUT, YTIT, YTITCAMPO, YOBJ,1,30,"",OK) From GESECRAN

Yes/No boxes[edit]

Local Integer YN : YN = 2 :# By default points on Yes
Call OUINON("Attention:\Do you want to continue?", YN) From GESECRAN
If YN=1 : Infbox "HAI CLICCATO NO" : Endif
If YN=2 : Infbox "HAI CLICCATO SI" : Endif

che internamente fa (non usare e notare i codici 1/2 invertiti)

Local Libelle REP
Qstbox mess(2, 5, 1) - nomap Using [L]REP
Case [L]REP
When 1: Infbox "HAI CLICCATO SI"
When 2: Infbox "HAI CLICCATO NO"
Endcase

Ok/Cancel boxes[edit]

Local Integer OKCAN : OKCAN = 2:# Ok
Call AVERTIR(“Warning:\All records will be deleted”, OKCAN) From GESECRAN

oppure (deprecato)

Local Libelle REP
Wrnbox "Attenzione: proseguire?" Using [L]REP
Case [L]REP
When 1: Infbox "HAI CLICCATO Ok"
When 2: Infbox "HAI CLICCATO Annulla"
Endcase

Messaggio di attesa[edit]

Per aprire un messaggio di attesa all'inizio di una serie di azioni:

Call TEMPON ("Azione in corso...") From GESECRAN

per chiudere il messaggio

Call TEMPOFF From GESECRAN

Error / warning[edit]

Call ERREUR(MESSAGGIO) From GESECRAN
Call ERREURT(MESSAGGIO, TIPO) From GESECRAN  #con temporizzazione
Call ERRTIT(MESSAGGIO, TITOLO) From GESECRAN
Call ERRTITT(MESSAGGIO, TITOLO) From GESECRAN  #con temporizzazione
Call ERREND (MESSAGGIO) From GESECRAN   #per errori gravi
  • TIPO può essere 0 (Informazione) o 1 (Errore)
  • Attenzione: se il parametro MESSAGGIO è vuoto, l’avviso di errore non compare.
GTIMOUT=15       # timeout di 15 secondi
Call ERRTITT("Errore", "Mio titolo") From GESECRAN

Deprecati:
Errbox "Error message"
messaggio di errore Endbox "Error end message" da usare solo in casi gravi in cui va interrotto il programma (vedere help nel file chm)

Note[edit]

  • La variabile GTIMOUT si può utilizzare per temporizzare il messaggio.
  • Per mettere il testo su più righe come separatore utilizzare \.
  • per andare a capo: "testo"+chr$(13)+chr$(10)
  • per aggiungere una barra inversa (\ backslash) a doppi apici, barra inversa, tab o Carriage Return: escJson(STRINGA); il contrario con unescjson
  • per sostituire caratteri da codifica 8 byte a 7 byte (senza caratteri con accenti particolari): ctrans(STRINGA)
    • esempio ctrans("èéìàùò") #"eeiauo"
  • per sostituire dei caratteri con quelli specificati: ctrans(STRINGA, caratteri_da_togliere, caratteri_da_mettere) (vedi anche replace)
    • esempio per sostituire le vocali con un numero corrispondente ctrans("facciamo un test di sostituzione","aeiou","12345") #ritorna: "f.cc..m.w.nwt.stwd.ws.st.t.z..n."