Condizioni di notifica
Questo evento viene notificato dal pannello tutte le volte che avviene un cambiamento di stato del pannello. Questi sono i possibili casi:
- Il pannello passa da stato QBE a stato DATA perchè viene eseguita la master query, oppure perchè il pannello è entrato in stato di inserimento nuove righe.
- Il pannello è passato dallo stato DATA ad UPDATED perchè l'utente ha modificato i dati presenti a video.
- Il pannello è passato dallo stato UPDATED a DATA perchè l'utente ha registrato o annullato le modifiche.
- Il pannello è passato dallo stato DATA allo stato QBE perchè l'utente ha premuto il tasto F3 - Cerca nella toolbar del pannello.
- Tutte le precedenti condizioni possono avvenire anche comandando il pannello da programma.
- Durante la gestione di una richiesta del browser possono avvenire più cambi di stato, ad esempio se il pannello è in modalità Auto Save.
- L'evento scatta anche prima del Load della videata ed in questo caso il parametro OldStatus è pari a zero. E' consigliabile proteggere il codice in un blocco TRY per evitare errori dovuti all'incompleta inizializzazione della videata.
Utilizzo consigliato
L'evento di OnChangeStatus può essere utilizzato per aggiornare le parti dell'interfaccia utente che dipendono dallo stato del pannello: ad esempio alcuni campi potrebbero essere più larghi quando il pannello è in modalità di ricerca (QBE); oppure alcuni campi di totalizzazione potrebbero essere nascosti se il pannello è in fase di modifica (UPDATED), perchè il risultato potrebbe non essere calcolabile finchè i dati non sono confermati.
Argomenti
Old Status | E' un numero intero che rappresenta lo stato precedente del pannello. Deve essere confrontato con i valori della lista PanelStatus. |
Esempio di codice
// ***********************************
// Fired when the panel changes status
// ***********************************
event Ordini.Ordini.OnChangeStatus(
int OldStatus // Stato precedente del pannello
)
{
// Quando ritorno in QBE
if Ordini.Status() = QBE AND OldStatus = DATA
{
// Mi posiziono sulla prima pagina
Ordini.Page := Ordini.DatiOrdine.Me()
Ordini.IdOrdine.SetFocus()
}
}
// Fired when the panel changes status
// ***********************************
event Ordini.Ordini.OnChangeStatus(
int OldStatus // Stato precedente del pannello
)
{
// Quando ritorno in QBE
if Ordini.Status() = QBE AND OldStatus = DATA
{
// Mi posiziono sulla prima pagina
Ordini.Page := Ordini.DatiOrdine.Me()
Ordini.IdOrdine.SetFocus()
}
}
- L'evento non è cancellabile direttamente. Se si desidera invertirne gli effetti è necessario utilizzare i comandi del pannello: se ad esempio si vuole annullare la modifica dei dati, è possibile utilizzare il comando UndoChanges.
- Il valore attuale dello stato del pannello è ottenibile utilizzando la funzione Status().
Ultima modifica: 23/03/2021 / Validità: da 6.5.2680