Scopo
Imposta il nodo radice dal quale il TreeWalker parte per cercare gli oggetti, permettendo anche di filtrare il risultato in base al tipo di oggetto. Dopo aver utilizzato la procedura SetRoot, è possibile scorrere gli oggetti tramite la funzione GetNextObject.
Se per esempio si imposta una tabella come nodo radice, senza specificare alcun filtro, il TreeWalker scorrerà la tabella stessa, i suoi campi, le sue relazioni, i suoi trigger, le righe di codice e gli altri oggetti contenuti nei trigger, i suoi indici e i suoi vincoli nell'ordine in cui si trovano nel progetto.
Sintassi
area tematica)
Argomenti
ID Oggetto | Puntatore dell'oggetto da impostare come radice. Solitamente il puntatore ad un oggetto viene recuperato tramite una delle seguenti funzioni: GetNextObject, GetObjectByID, GetObjectByCode, GetObjectByName, GetParentObject, GetPropObject. |
Tipo | Tipo di oggetti che si vogliono scorrere. L'elenco dei possibili tipi è contenuto nella lista valori Tipi Oggetto. Il valore predefinito è 0 ossia qualsiasi tipo. In questo parametro è anche possibile esplicitare un "modello" di oggetto, che ne rappresenta un sottotipo, e una "versione", che rappresenta un ulteriore specificazione di tipo. |
Maschera tipo | Parametro che indica quali parti del parametro Tipo verranno considerate; i possibili valori sono contenuti nella lista valori Tipi Maschera. Il valore predefinito è "Tipo" ovvero si considera solo il tipo di oggetto e non il modello e la versione. |
Livello profondità | Livello di profondità che si vuole raggiungere; se impostato a zero viene percorso solo il nodo radice, se impostato a uno verrà visitato il nodo radice e i figli di primo livello e così via. Il valore di default è 9999, ossia tutti i livelli. |
Solo area tematica | Se impostato a True permette di navigare solo fra gli oggetti dell'Area Tematica attualmente attiva. Il valore predefinito è False ovvero vengono visitati anche gli oggetti non contenuti nell'Area Tematica attiva. Se non c'è un'area tematica attiva, allora questo parametro non ha significato. |
Note
- Dopo aver chiamato questa procedura è possibile scorrere fra gli oggetti effettuando un ciclo in cui viene richiamata la funzione GetNextObject, che ritorna il puntatore al prossimo oggetto trovato.
- Per percorrere tutti gli oggetti senza filtrarli per tipo è possibile chiamare questa procedura valorizzando solo il primo parametro, cioè l'oggetto dal quale si vuole iniziare la navigazione.
- Il parametro Maschera Tipo è da utilizzare nel caso in cui si voglia effettuare una ricerca più raffinata specificando anche un modello o una versione. Per esempio se si vuole ricercare tutti gli statement di tipo Update occorre impostare il parametro Tipo alla somma delle costanti "Statement" e "Update" e il parametro Maschera Tipo alla costante "Tipo + Modello".
- Se il puntatore passato come parametro ID Oggetto non corrisponde ad alcun oggetto nel progetto aperto, allora verrà generata un'eccezione.
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, ??, ??, ??)
//
// Ciclo fino alla fine degli oggetti enumerati
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()
//
// Non ci sono altri database nel progetto
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.
}
}
In questo esempio di codice, contenuto nella procedura Importa del progetto Gestione Glossario, viene usato un TreeWalker per scorrere tutti i database del progetto.
Ultima modifica: 24/03/2021 / Validità: da 7.1.3300