Get Object By Name

funzione copia link

Scopo

Cerca un oggetto in base al nome e ne ritorna il puntatore.

È possibile anche ricercare per DBCode con la funzione GetObjectByCode e per GUID con la funzione GetObjectByID oppure crearsi un proprio algoritmo di ricerca utilizzando un TreeWalker.

Sintassi

int IDOggetto = 0  // Puntatore dell'oggetto trovato
// 
IDOggetto := INDE.GetObjectByName(id oggetto radice, nome, tipo, maschera tipo)

Argomenti

ID Oggetto Radice Puntatore dell'oggetto in cui cercare. Solitamente il puntatore ad un oggetto viene recuperato tramite una delle seguenti funzioni: GetNextObject, GetObjectByID, GetObjectByCode, GetObjectByName, GetParentObject, GetPropObject.
Nome Nome dell'oggetto da cercare.
Tipo Tipo dell'oggetto che si vuole recuperare. 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.

Valore di ritorno

Viene ritornato il puntatore del primo oggetto che viene trovato con il nome specificato. Se non è stato trovato nessun oggetto viene ritornato ZERO.

Esempio di codice

// ****************************************************************************
// Evento notificato al documento prima di caricare una collection del suo tipo
// ****************************************************************************

event OggettoBase.BeforeLoadCollection(
  IDDocument Parent       // E' il documento padre che ha chiesto il caric...
  IDCollection Collection // E' la collection da caricare.
  inout boolean Skip      // Parametro di output booleano. Se impostato a ...
)
{
  int prjID = 0 // Puntatore del progetto
  // 
  // Recupero il puntatore del progetto

  prjID := GetTag(Project ID)
  // 
  // Se è valorizzato il GUID

  if GUID <> Empty String
    ...
  // 
  // Se è valorizzato il Codice

  if DBCode <> Empty String
    ...
  // 
  // Se è valorizzato il nome

  if Nome <> Empty String
  {
    int objID = 0 // 
    // 
    // Cerco l'oggetto per Nome

    objID := EsempiMS.INDE.GetObjectByName(prjID, Nome, ??, ??)
    // 
    if objID > ZERO
    {
      OggettoBase obj = new() // 
      // 
      // Lo carico

      if obj.LoadFromINDE(objID)
      {
         Collection.Add(obj)
      }
    }
  }
  // 
  // Se è valorizzato il tipo

  if Tipo > ZERO
    ...
}
  • 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 tutte gli statement di tipo Update occorre impostare il parametro Tipo alla somma delle costanti "Statement" e "Update" e come Maschera Tipo alla costante "Tipo + modello".
  • Se il puntatore passato come parametro ID Oggetto Radice non corrisponde ad alcun oggetto nel progetto aperto, allora verrà generata un'eccezione.

Ultima modifica: 23/03/2021 / Validità: da 7.1.3300