Gestione Bottoni

From SageDev KB
Jump to navigation Jump to search

...appunti...

Nelle Finestre

  • 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

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

Pulsanti standard

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

In azioni oggetto

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

Variabili coinvolte

GREP, GBOUT1..20, GBOUTS, GBOUTA, GBOUTI

GREP:

  • vuoto: nessun bottone selezionato
  • A : annulla
  • C : creazione
  • D : duplicazione
  • M : modifica

Bx_ZONE

Esecuzione del bottone x

  • mkstat = 4, per attivare il bottone registra.
  • mkstat = 99, per posizionare il cursore sul campo successivo

Altro

vedi anche Aggiungere un bottone che apre un oggetto

Videate

Pulsante contestuale su riga di un riquadro

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

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

Pulsanti standard blocco riquadro

Vedi Gestione Blocco Riquadro