Gestione Bottoni

From SageDev KB
Jump to navigation Jump to search

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

Pulsanti standard blocco riquadro[edit]

Vedi Gestione Blocco Riquadro