Condizioni di notifica
Questo evento viene notificato dal CommandSet ogni volta che l'utente attiva un comando in esso contenuto. Questo avviene quando:
- L'utente attiva un comando contenuto in un CommandSet visualizzato nella toolbar, mostrato come menu popup o visualizzato nella menu bar. In tutti questi casi l'evento sarà notificato al CommandSet che contiene il comando attivato.
Utilizzo consigliato
L'evento di OnCommand può essere utilizzato per eseguire particolari procedure a seconda del comando selezionato dall'utente, senza che il codice da eseguire sia direttamente legato al comando scelto.
Uno dei possibili utilizzi è quello consentire la gestione dei comandi di un menu popup precedentemente caricati in modo dinamico tramite l'evento di OnOpenPopup.
Argomenti
Command Number | E' un numero intero che identifica il comando utilizzato. Può essere confrontato con la funzione Me dell'oggetto Command per identificare il comando selezionato dall'utente. |
Index | E' un numero intero che rappresenta la posizione del Command all'interno del Command Set (partendo da 0 fino a GetCommandsCount - 1). Può essere utilizzato per modificare le proprietà degli oggetti Command attraverso le funzioni della libreria Command Set. |
Cancel | Se valorizzato a True ferma l'esecuzione della procedura legata al comando selezionato. |
Esempio di codice
// ****************************************************************************
// Utilizzo l'evento di On Command del Command Set per impostare il valore
// IDCategoria del prodotto corrente come il Code del Command eseguito.
// Nell'evento di On Open Popup i comandi sono stati modificati per contenere
// nella caption il nome di una categoria e nel code il relativo ID.
// ****************************************************************************
event Prodotti.Impostacategoria.OnCommand(
int CommandNumber //
int Index //
inout boolean Cancel //
)
{
// Se il comando è abilitato e visibile
if Impostacategoria.GetCommandEnabled(Index) AND Impostacategoria.
GetCommandVisible(Index)
{
// Metto nel campo idcategoria il code del comando
// cliccato dall'utente, identificato tramite l'argomento Index
Prodotti.IdCategoria := ToInteger(Impostacategoria.GetCommandCode(
Index))
}
//
// Scrivo nel Debug il percorso del file icona rappresentante il comando
EsempiGL.DTTLogMessage(FormatMessage(Icona del comando: |1,
Impostacategoria.GetCommandIcon(Index), ??, ??, ??, ??), ??, ??)
//
// Mostro il messaggio dell'operazione eseguita
EsempiGL.MessageBox(FormatMessage(Impostata categoria |1, Impostacateg-
oria.GetCommandCaption(Index), ??, ??, ??, ??))
}
// Utilizzo l'evento di On Command del Command Set per impostare il valore
// IDCategoria del prodotto corrente come il Code del Command eseguito.
// Nell'evento di On Open Popup i comandi sono stati modificati per contenere
// nella caption il nome di una categoria e nel code il relativo ID.
// ****************************************************************************
event Prodotti.Impostacategoria.OnCommand(
int CommandNumber //
int Index //
inout boolean Cancel //
)
{
// Se il comando è abilitato e visibile
if Impostacategoria.GetCommandEnabled(Index) AND Impostacategoria.
GetCommandVisible(Index)
{
// Metto nel campo idcategoria il code del comando
// cliccato dall'utente, identificato tramite l'argomento Index
Prodotti.IdCategoria := ToInteger(Impostacategoria.GetCommandCode(
Index))
}
//
// Scrivo nel Debug il percorso del file icona rappresentante il comando
EsempiGL.DTTLogMessage(FormatMessage(Icona del comando: |1,
Impostacategoria.GetCommandIcon(Index), ??, ??, ??, ??), ??, ??)
//
// Mostro il messaggio dell'operazione eseguita
EsempiGL.MessageBox(FormatMessage(Impostata categoria |1, Impostacateg-
oria.GetCommandCaption(Index), ??, ??, ??, ??))
}
- Per impostare le funzionalità di un menu in maniera totalmente dinamica è possibile collegare ai Command contenuti nel CommandSet una procedura vuota, e poi gestire nell'evento di OnCommand la gestione delle selezioni dell'utente in base a come è stato dinamicamente popolato il CommandSet.
Ultima modifica: 13/02/2020 / Validità: da 6.5.2680