Condizioni di notifica
Evento notificato dal pannello prima di eseguire un comando di pannello. Questo può avvenire quando:
- L'utente preme il relativo bottone nella toolbar del pannello.
- Il programma esegue l'istruzione relativa ad un comando di pannello.
Utilizzo consigliato
L'evento di OnCommand può essere utilizzato per intercettare i comandi inviati al pannello e sostituirli od integrarli con proprie procedure.
Il comando notificato dall'evento può essere cancellato impostando il parametro Cancel, quindi è possibile utilizzare questo evento per verificare che ci siano tutte le condizioni per poter eseguire tale comando.
Argomenti
Command | E' un numero intero che rappresenta il comando che sta per essere eseguito. Deve essere confrontato con uno dei valori della lista valori PanelCommands. |
Cancel | Può essere impostato a True per cancellare il comando. |
User Operation | E' un valore booleano che vale True se l'evento è stato notificato perché l'utente ha cliccato un bottone della toolbar del pannello, False se l'evento è stato notificato a seguito di una chiamata da codice di una delle procedure del pannello. Tale parametro è stato introdotto a partire dalla versione 7.1.3300. |
Esempio di codice
// ***************************************************
// Fired when a panel command is about to be executed.
// ***************************************************
event Prodotti.Prodotti.OnCommand(
int Command // Command issued
inout boolean Cancel // Set to TRUE to cancel the command
)
{
// Se voglio duplicare un prodotto...
if Command = Duplicate
{
// Evito che il pannello esegua lui il comando
Cancel := True
//
// E lo sostituisco con la mia procedura
this.DuplicaProdotto(Prodotti.IdProdotto)
}
}
// Fired when a panel command is about to be executed.
// ***************************************************
event Prodotti.Prodotti.OnCommand(
int Command // Command issued
inout boolean Cancel // Set to TRUE to cancel the command
)
{
// Se voglio duplicare un prodotto...
if Command = Duplicate
{
// Evito che il pannello esegua lui il comando
Cancel := True
//
// E lo sostituisco con la mia procedura
this.DuplicaProdotto(Prodotti.IdProdotto)
}
}
- Se durante l'esecuzione di questo evento vengono inviati ulteriori comandi al pannello, è possibile che si creino le condizioni per un loop infinito. Se il caso, utilizzate delle variabili "semaforo" globali alla videata.
- Come al solito durante questo evento i dati della riga attiva possono essere letti dalla tabella IMDB sottesa al pannello.
Ultima modifica: 23/03/2021 / Validità: da 6.5.2680