English
Instant Developer Foundation Documentazione
  • Estensibilità
  • Libreria
  • INDE TreeWalker

Set Root

procedura copia link

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

TreeWalker.SetRoot(id oggetto, tipo, maschera tipi, livello profondità, solo
  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.RefreshQuery()
  }
}

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

Vedi Anche

    Scarica il progetto Gestione Glossario
  • Get Next Object (funzione)
  • Get Object By Code (funzione)
  • Get Object By Name (funzione)
  • Get Object By ID (funzione)
  • Get Parent Object (funzione)
  • Get Prop Object (funzione)
  • Get Obj Type (funzione)
  • INDE Extension

Hai trovato utile l'articolo?

Grazie per il feedback!

Ti serve altro aiuto?

Consulta il Forum