Gestione Bottoni
...appunti sparsi...
Nelle Finestre[edit]
- BOTTONI
- SETBOUT refresh dei bottoni
- AP_CHOIX dopo clic su bottone
- AVANT_BOUTON: prima dell'esecuzione bottone specifico
- AVANT_XXX: prima dell'esecuzione bottone standard
- BOUTON: dopo esecuzione bottone specifico
- XXX: dopo esecuzione bottone standard
- Menu
- AVANT_MEN prima dell'esecuzione
- MEN: dopo l'esecuzione
Gestione tipica[edit]
Altro esempio da qualche sorgente SUB*.src:
Finestra
$APRES_CHOI Case REPONSE When GSTACRE : Gosub CREATE : #Créer When GSTAANU : Gosub ANNUL : #Supprimer When GSTAENR : Gosub MODIF : #Enregistrer When GSTARET : If REP="C" | REP="D" : Gosub CREATE Elsif REP="M" : Gosub MODIF Endif When Default Endcase Return
oppure
$APRES_CHOI Case REPONSE When GSTARET : Case GREP When "C", "D" : REPONSE = GSTACRE When "M" : REPONSE = GSTAENR Endcase Endcase # Case REPONSE ...
$CHOIX Case REPONSE When GSTARET, GSTAOK : Gosub ENREG When GSTAEND, GSTAESC : FIN=1 Endcase Return
Dialog box
$AP_CHOIX Case REPONSE When GSTARET : Gosub VALID When GSTAEND, GSTAESC : Gosub CONFIRME When Default Endcase Return
Righe Menu
$SETBOUT CHMEN+="Z1" #attivo Menu con codice Z1 (righe del menu con codice Z) Gosub SET_BOUT_SPE From GSAISIE Return
Pulsanti standard[edit]
Talvolta ci sono dei problemi con l'attivazione/disattivazione dei pulsanti standard.
Con le istruzioni enable e disable seguite dal codice del pulsante possiamo gestire la cosa mano.
I codici sono memorizzati in alcune variabili globali.
Enable GSTACRE #abilito il pulsante Crea Disable GSTAENR #disabilito il pulsante Registra
Oggetto combinato[edit]
Oggetto TPT (Pagamenti, dal sorgente SUBTPT) troviamo dentro $SETBOUT:
If GREP = "" Then # Note FGR : obligé de l'ajouter à la main. comme il y a plus de deux # éléments dans la clé, le superviseur ne le mets pas tout seul CHAINE += "A" # FGR 23/04/2013 : X3SUIVI71937 : obligé de le réactivé à la main parce que 3 éléments de PK CHAINE += "H" Endif
Quindi nel caso la prima chiave di un oggetto combinato sia composta da 3 o più campi alcuni pulsanti vanno gestiti a mano.
Altro esempio
$SETBOUT #Negli oggetti di tipo combinato con chiave multipla, non si attiva il bottone Elimina. #Per attivarlo aggiungere la seguente istruzione nella SETBOUT #If CLECUR & SUPPR : CHAINE+="A" : Endif #Per attivare il bottone elimina If CLECUR & REP<>"M" & VERROU #oppure If CLECUR<>0 & REP="" & VERROU CHAINE += "A" : # Attivo bottone standard elimina Endif Return
In azioni oggetto[edit]
Per bottoni: SETBOUT(per disattivarli, CHAINE), AVANTBOUT (prime dell'esecuzione, variabile BOUT), EXEBOUT (dopo l'esecuzione, variabile BOUT)
Per menu: SETBOUT(per disattivarli, CHMEN), AVANTBOUT (prime dell'esecuzione, variabile BOUT), STATUT(dopo l'esecuzione, variabile BOUT)
Per pulsanti standard:
- AVANT_XXX (AVANT_NEW, AVANT_END, XXX è il codice standard)
- XXX dopo l'esecuzione (NEW, END, S, C,...)
Per pulsanti specifici:
- AVANTBOUT (dove la variabile BOUT contiene il codice)
- EXEBOUT dopo l'esecuzione (dove la variabile BOUT contiene il codice)
Per togliere un pulsante da programma specifico:
Call VIREBOUT (CHAINE, LISTA) From GOBJET
- CHAINE : variable char, lista di bottoni disponibili (viene definita nel programma GOBJET)
- LISTA : value char, lista di bottoni da cancellare
Questi i valori dei bottoni:
- C - Crea
- D – Duplica
- M - Salva
- A - Elimina
- F - FINE
- H – CAMBIAMENTO CODICE lettere aggiornate: bottoni standard
- J – Allegati
- K - Commenti
- E - Stampa
- L – Lista
- R - Selezione
- 0 - PRIMO
- 9 - ULTIMO
- da 1 a 8 : bottoni standard
- da a a z : bottoni specifici
- @ - PROPRIETA’
- > - Successivo
- < - Precedente
Esempio: togliere il bottone Crea e attivare il pulsante registrare
$SETBOUT Call VIREBOUT (CHAINE, "C") From GOBJET #togliere il bottone Crea REP = "M" : # attivazione del bottone REGISTRARE # attivazione di una riga menu con codice i (di default le sottorighe dei menu NON sono attive) CHMEN += "i" Return
Azioni campo[edit]
Variabili coinvolte
GREP, GBOUT1..20, GBOUTS, GBOUTA, GBOUTI
GREP:
- vuoto: nessun bottone selezionato
- A : annulla
- C : creazione
- D : duplicazione
- M : modifica
Bx_ZONE[edit]
Esecuzione del bottone x
- mkstat = 4, per attivare il bottone registra.
- mkstat = 99, per posizionare il cursore sul campo successivo
Altro[edit]
vedi anche Aggiungere un bottone che apre un oggetto
Videate[edit]
Pulsante contestuale su riga di un riquadro[edit]
I pulsanti di riquadro possibili sono 20, la cui etichetta è contenuta nelle variabili globali GBOUT1, GBOUT2 ...GBOUT20
Per aggiungere un pulsante contestuale su riga di un riquadro:
- selezionare tra i campi della videata il campo numeratore di riga, spesso NBLIG
- impostare un'azione Bottone (dalla 2 in poi, la prima libera); l'azione può essere sia SPE che un'azione vera e propria
- validare la videata
- aprire il sorgente corrispondente: se è di tipo SPE troverai aggiunto un
Subprog B2_NBLIG
dove scrivere il codice da eseguire alla selezione del menu appena creato
Disattivazione[edit]
Attivare l'evento di riga "Init Bottone" sempre sul campo numeratore di riga (NBLIG).
Dentro il Subprog IB_NBLIG che verrà creato nel sorgente azzerare la variabile corrispondente
Subprog IB_NBLIG Raz GBOUT2 #disattivo il pulsante 2 GBOUT3='bla bla' # attivo il pulsante 3 con eticheta 'bla bla' end