Scopo
Ritorna il puntatore al prossimo oggetto che soddisfa i criteri di ricerca impostati con la procedura SetRoot, permettendo all'utente di navigare all'interno della ricerca.
L'ordine seguito nella navigazione corrisponde alla posizione degli oggetti all'interno del progetto.
Prendendo per esempio il progetto Glossario.idp (vedi allegato), un TreeWalker avente come nodo radice il progetto nelle prime sei chiamate alla funzione GetNextObject restituirà gli oggetti nell'ordine mostrato nell'immagine sottostante.
Ordine di navigazione del TreeWalker
Sintassi
//
IDOggetto := TreeWalker.GetNextObject()
Argomenti
Questa funzione non ha argomenti.Valore di ritorno
Ritorna un numero intero che rappresenta il puntatore all'oggetto successivo; se non ci sono altri oggetti restituisce ZERO.
Note
- Prima di utilizzare questa funzione è necessario aver inizializzato il Tree Walker con la procedura SetRoot, altrimenti viene generata un'eccezione.
- La navigazione degli oggetti avviene solo in avanti; è possibile però ricominciare la navigazione grazie alla procedura Reset.
- L'ordine di navigazione in alcuni casi non coincide esattamente con la posizione degli oggetti nell'albero perchè esso visualizza gli oggetti in ordine di tipo. Ad esempio la lista degli oggetti contenuti in una tabella del database riporta prima i campi, poi le relazioni, i trigger, gli indici e i vincoli; all'interno del progetto tutti questi oggetti sono memorizzati in ordine di inserimento.
- Se il Tree Walker è stato inizializzato senza specificare alcun filtro sul tipo di oggetti da cercare, allora il primo oggetto restituito dalla funzione GetNextObject è il nodo radice stesso.
- Se il nodo radice non contiene oggetti che corrispondono ai filtri, la funzione GetNextObject restituirà subito ZERO.
Esempio di codice
// Importa le parole dei database
// ******************************
public void Parole.Importa()
{
INDEExtension INDE = null // Oggetto INDE
INDETreeWalker TwDB = new() // TreeWalker per scorrere i DB
int DocID = 0 // Identificativo del documento
//
// Mi connetto a INDE
INDE.Connect()
//
// Recupero l'identificativo del documento attivo
DocID := INDE.GetActiveDocument()
if DocID > ZERO
{
int PrjID = 0 // Identificativo del progetto
//
// Recupero l'identificativo del progetto
PrjID := INDE.GetRootObject(DocID)
//
// Inizializzo il TreeWalker per scorrere i database del progetto
TwDB.SetRoot(PrjID, Database, ??, ??, ??)
while True = True
{
INDETreeWalker tw = new() // TreeWalker per scorrere gli oggetti dei...
int DBID = 0 // Identificativo del database
//
// Passo al prossimo database
DBID := TwDB.GetNextObject()
if DBID = ZERO
{
break
}
//
// Inizializzo il TreeWalker per scorrere gli oggetti dei database
tw.SetRoot(DBID, ??, ??, ??, ??)
while True = True
...
}
//
// Aggiorno la query del pannello
Parole.RefreshQuery()
}
}
In questo esempio di codice, contenuto nella procedura Importa del progetto Gestione Glossario, la funzione GetNextObject viene usata per scorrere tutti i database del progetto.
Ultima modifica: 13/07/2008 / Validità: da 7.1.3300