Difference between revisions of "Finestre di dialogo"

From SageDev KB
Jump to navigation Jump to search
 
 
(4 intermediate revisions by 2 users not shown)
Line 3: Line 3:
 
=== Messaggio semplice ===
 
=== Messaggio semplice ===
 
<code>call MESSAGE("Ciao") from GESECRAN </code>  
 
<code>call MESSAGE("Ciao") from GESECRAN </code>  
 +
 +
<code>call MESSAGE("Ciao\Ciao su seconda riga") from GESECRAN </code>
  
 
che si appoggia su <code>Infbox</code> ma scrive il messaggio nella traccia se eseguito in modalità batch.
 
che si appoggia su <code>Infbox</code> ma scrive il messaggio nella traccia se eseguito in modalità batch.
Line 12: Line 14:
 
=== Input da utente ===
 
=== Input da utente ===
  
 +
La chiamata che si può usare è <code>Call SAICAR (...) From GESECRAN</code>
 +
 +
Pur non avendo il sorgente ho visto che funziona così (alcuni parametri non li ho capiti):
 +
<pre>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</pre>
 +
 +
 +
Esempio con tipo oggetto
 
<pre>Local Integer OK
 
<pre>Local Integer OK
 
Local Char YINPUT(250)
 
Local Char YINPUT(250)
Local Char YTIT(30) : YTIT='Inserisci tipo proposta'
+
Local Char YTIT(30) : YTIT='Inserisci valore'
Local Char YTITCAMPO(30): YTITCAMPO='Nuovo tipo proposta'
+
Local Char YTITCAMPO(30): YTITCAMPO='Nuovo valore'
 
Local Char YOBJ(30) : YOBJ = 'BPC'
 
Local Char YOBJ(30) : YOBJ = 'BPC'
 
Call SAICAR (YINPUT, YTIT, YTITCAMPO, YOBJ,0,0,"",OK) From GESECRAN
 
Call SAICAR (YINPUT, YTIT, YTITCAMPO, YOBJ,0,0,"",OK) From GESECRAN
Line 28: Line 44:
 
Call SAICAR (YINPUT, YTIT, YTITCAMPO, YOBJ,250,0,"",OK) From GESECRAN
 
Call SAICAR (YINPUT, YTIT, YTITCAMPO, YOBJ,250,0,"",OK) From GESECRAN
 
Infbox YINPUT</pre>
 
Infbox YINPUT</pre>
 +
 +
Esempio con semplice stringa
 +
<pre>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</pre>
  
 
=== Yes/No boxes ===
 
=== Yes/No boxes ===
Line 96: Line 120:
 
* per sostituire caratteri da codifica 8 byte a 7 byte (senza caratteri con accenti particolari): <code>ctrans(STRINGA)</code>  
 
* per sostituire caratteri da codifica 8 byte a 7 byte (senza caratteri con accenti particolari): <code>ctrans(STRINGA)</code>  
 
**esempio <code>ctrans("èéìàùò")  #"eeiauo"</code>
 
**esempio <code>ctrans("èéìàùò")  #"eeiauo"</code>
* per sostituire dei caratteri con quelli specificati: <code>ctrans(STRINGA, caratteri_da_togliere, caratteri_da_mettere)</code>
+
* per sostituire dei caratteri con quelli specificati: <code>ctrans(STRINGA, caratteri_da_togliere, caratteri_da_mettere)</code> (vedi anche [[Funzione_replace|replace]])
 
**esempio per sostituire le vocali con un numero corrispondente  <code>ctrans("facciamo un test di sostituzione","aeiou","12345")    #ritorna: "f.cc..m.w.nwt.stwd.ws.st.t.z..n."</code>
 
**esempio per sostituire le vocali con un numero corrispondente  <code>ctrans("facciamo un test di sostituzione","aeiou","12345")    #ritorna: "f.cc..m.w.nwt.stwd.ws.st.t.z..n."</code>

Latest revision as of 07:54, 25 May 2023

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."