Condizioni di notifica
Evento notificato dall'albero quando cambia lo stato di selezione di un nodo in un albero che abbia la Multi-selezione attivata. Tale evento viene notificato unicamente se l'utente ha effettivamente cliccato sul check-box della multi-selezione e non se il programma ha effettuato una chiamata alla procedura SelectNode dell'albero.
Utilizzo consigliato
L'evento di OnChangeSelection può essere utilizzato per aggiornare le parti dell'interfaccia utente che dipendono dallo stato di selezione dei nodi. Può anche essere utilizzato per selezionare altri nodi in conseguenza della selezione effettuata dall'utente.
Argomenti
HashKey | E' una stringa che identifica il nodo che è stato selezionato. Per sapere cosa è un HashKey puoi leggere il paragrafo "Identificazione dei nodi: la proprietà HashKey" dell'articolo Nodi dell'albero. |
Selezionato | E' un valore booleano che indica se il nodo è stato selezionato o deselezionato. |
Cancel | E' un parametro di uscita booleano. Se lo si imposta a True si impedisce la selezione del nodo. |
Final | E' un valore booleano introdotto a partire dalla versione 7.1.3300. L'evento OnChangeSelection viene chiamato per ogni nodo per cui cambia lo stato di selezionato più una volta al termine dell'operazione. Durante quest'ultima chiamata il parametro Final vale True. |
Esempio di codice
// *********************************************************************
// Fired when a user selects a node using the Multiple Selection feature
// *********************************************************************
event AlberoCategorie.Categorie.OnChangeSelection(
string SourceHash // Hash Code of the node that has been expanded
boolean Selected // True if the node has been selected
inout boolean Cancel // Set to TRUE to cancel the selection
)
{
string NomeNodoSelezionato = "" //
//
// Se è cambiato lo stato di selezione di una categoria, la propago a tutti i
// suoi prodotti
if Left(SourceHash, C3) = CAT
{
int i = 0 //
//
// Espando il nodo delle categorie, qualora non fosse ancora stato espanso
Categorie.ExpandNode(SourceHash, ??, ??)
//
// Giro su tutti i nodi figli della categoria selezionata
i := ZERO
while i < Categorie.GetChildrenNodeCount(SourceHash)
{
string h = "" // Hash Code del nodo
//
h := Categorie.GetChildrenNode(SourceHash, i)
Categorie.SelectNode(h, Selected)
//
i := i + ONE
}
}
//
// Se è stato selezionato un prodotto, seleziono anche la categoria che lo
// contiene
if Left(SourceHash, C3) = PRO AND Selected
{
string h = "" //
//
// Recupero l'HashCode del nodo padre (una categoria)
h := Categorie.GetParentNode(SourceHash)
//
// Seleziono il nodo padre
Categorie.SelectNode(h, True)
}
//
// Calcolo il nome del nodo selezionato
NomeNodoSelezionato := GetNodeName(SourceHash)
//
// Inserisco un nuovo evento
insert values into Eventi
set Descrizione := FormatMessage(MSG Cambiata Selezione, NomeNodoSelezionato, ??, ??, ??, ??)
set AppTick := ClickCounter()
}
// Fired when a user selects a node using the Multiple Selection feature
// *********************************************************************
event AlberoCategorie.Categorie.OnChangeSelection(
string SourceHash // Hash Code of the node that has been expanded
boolean Selected // True if the node has been selected
inout boolean Cancel // Set to TRUE to cancel the selection
)
{
string NomeNodoSelezionato = "" //
//
// Se è cambiato lo stato di selezione di una categoria, la propago a tutti i
// suoi prodotti
if Left(SourceHash, C3) = CAT
{
int i = 0 //
//
// Espando il nodo delle categorie, qualora non fosse ancora stato espanso
Categorie.ExpandNode(SourceHash, ??, ??)
//
// Giro su tutti i nodi figli della categoria selezionata
i := ZERO
while i < Categorie.GetChildrenNodeCount(SourceHash)
{
string h = "" // Hash Code del nodo
//
h := Categorie.GetChildrenNode(SourceHash, i)
Categorie.SelectNode(h, Selected)
//
i := i + ONE
}
}
//
// Se è stato selezionato un prodotto, seleziono anche la categoria che lo
// contiene
if Left(SourceHash, C3) = PRO AND Selected
{
string h = "" //
//
// Recupero l'HashCode del nodo padre (una categoria)
h := Categorie.GetParentNode(SourceHash)
//
// Seleziono il nodo padre
Categorie.SelectNode(h, True)
}
//
// Calcolo il nome del nodo selezionato
NomeNodoSelezionato := GetNodeName(SourceHash)
//
// Inserisco un nuovo evento
insert values into Eventi
set Descrizione := FormatMessage(MSG Cambiata Selezione, NomeNodoSelezionato, ??, ??, ??, ??)
set AppTick := ClickCounter()
}
- Questo evento viene notificato unicamente se è stata attivata la multi-selezione dei nodi mediante il parametro MultipleSelection.
- Attenzione: L'evento viene notificato solo se il contenuto dell'albero non è document-oriented ma proviene direttamente da query su database.
- Questo evento non viene notificato se lo stato di selezione viene modificato mediante chiamate alle procedure SelectNode o SelectAll.
- Se il parametro Active dell'albero è True subito dopo aver cliccato sul check-box il browser informa il server dell'avvenuta selezione o deselezione.
- A partire dalla versione 7.1.3300 l'evento viene notificato una volta per ogni nodo che è stata selezionato o deselezionato, più una volta al termine della modifica della selezione. Quest'ultima fase può essere usata per aggiornare l'albero o agire sull'intera selezione.
Ultima modifica: 28/11/2022 / Validità: da 6.5.2680