Condizioni di notifica
Questo evento viene notificato dal CommandSet quando viene mostrato all'utente come un menu popup, condizione che si verifica nei seguenti casi:
- l'utente seleziona un comando della toolbar collegato ad un CommandSet che ha il flag "popup" abilitato.
- viene utilizzata la procedura OpenPopup per visualizzare un menu popup di fianco ad un determinato campo di pannello.
- l'utente fa click con il tasto destro su un albero che ha un CommandSet collegato.
- l'utente attiva un campo di pannello che ha come oggetto di attivazione un Command Set.
Utilizzo consigliato
L'evento di OnOpenPopup può essere utilizzato per personalizzare il menu popup mostrato all'utente, modificando le proprietà degli oggetti Command in esso contenuti. Uno degli utilizzi possibili è quello di abilitare/disabilitare i comandi del CommandSet a seconda dello stato dell'applicazione, un altro è quello di modificare i Command in modo tale da realizzare un menu totalmente dinamico, la cui struttura non è nota in fase di progettazione.
Argomenti
Direction | E' un parametro di output che può essere impostato ad uno dei valori della lista PopupDirections per scegliere la posizione del menu popup rispetto all'oggetto che lo ha attivato. |
Cancel | Se impostato a True annulla la visualizzazione del popup. |
Esempio di codice
// ***********************************************************
// Nell'evento di onpopup mostro un comando per ogni categoria
// trovata sul database, nascondendo i comandi che avanzano.
// ***********************************************************
event Prodotti.Impostacategoria.OnOpenPopup(
inout int Direction // Indicates where to show the popup...
inout boolean Cancel // When set to TRUE, the popup menu is not shown
)
{
int Idx = 0 // Indice del comando correntemente in valutazione
//
// Per ogni categoria presente nel sistema imposto un comando
for each row
{
select
IdcategoriaCategorie := Idcategoria
NomeCategoriaCategorie := NomeCategoria
from
Categorie // Master Table
//
record Categorie
int Idcategoria //
string NomeCategoria //
//
Impostacategoria.SetCommandVisible(Idx, True)
Impostacategoria.SetCommandEnabled(Idx, True)
//
Impostacategoria.SetCommandCode(Idx, ToString(Categorie.Idcategoria))
Impostacategoria.SetCommandCaption(Idx, ToString(Categorie.NomeCategoria))
Impostacategoria.SetCommandIcon(Idx, Convert(ToImage(Categoria)))
//
Idx := Idx + ONE
//
// Se il command set è già pieno mi fermo
if Idx = Impostacategoria.GetCommandsCount()
{
break
}
}
//
// Se non tutti i comandi sono stati impostati rendo invisibili i rimanenti
while Idx < Impostacategoria.GetCommandsCount()
{
Impostacategoria.SetCommandVisible(Idx, False)
Impostacategoria.SetCommandEnabled(Idx, False)
//
Idx := Idx + ONE
}
}
// Nell'evento di onpopup mostro un comando per ogni categoria
// trovata sul database, nascondendo i comandi che avanzano.
// ***********************************************************
event Prodotti.Impostacategoria.OnOpenPopup(
inout int Direction // Indicates where to show the popup...
inout boolean Cancel // When set to TRUE, the popup menu is not shown
)
{
int Idx = 0 // Indice del comando correntemente in valutazione
//
// Per ogni categoria presente nel sistema imposto un comando
for each row
{
select
IdcategoriaCategorie := Idcategoria
NomeCategoriaCategorie := NomeCategoria
from
Categorie // Master Table
//
record Categorie
int Idcategoria //
string NomeCategoria //
//
Impostacategoria.SetCommandVisible(Idx, True)
Impostacategoria.SetCommandEnabled(Idx, True)
//
Impostacategoria.SetCommandCode(Idx, ToString(Categorie.Idcategoria))
Impostacategoria.SetCommandCaption(Idx, ToString(Categorie.NomeCategoria))
Impostacategoria.SetCommandIcon(Idx, Convert(ToImage(Categoria)))
//
Idx := Idx + ONE
//
// Se il command set è già pieno mi fermo
if Idx = Impostacategoria.GetCommandsCount()
{
break
}
}
//
// Se non tutti i comandi sono stati impostati rendo invisibili i rimanenti
while Idx < Impostacategoria.GetCommandsCount()
{
Impostacategoria.SetCommandVisible(Idx, False)
Impostacategoria.SetCommandEnabled(Idx, False)
//
Idx := Idx + ONE
}
}
- Se il menù popup è collegato ad un albero, per sapere da quale nodo è stato attivato il menù è possibile utilizzare la proprietà ActiveDocument in caso di albero DO oppure la funzione GetActiveNode in caso di albero DB.
- Se il menù popup è collegato ad un campo di pannello, per sapere da quale campo è stato attivato il menù è possibile utilizzare la proprietà ActivatedField e ActivatedPanel dell'oggetto form.
Ultima modifica: 23/03/2021 / Validità: da 6.5.2680