English
Instant Developer Foundation Documentazione
  • Reference Librerie
  • Document Orientation
  • ID Document
  • Proprietà

Get Property Index

funzione copia link

Scopo

Questa funzione serve per reperire l'indice di una delle proprietà pubbliche del documento in base ad alcuni dei suoi parametri quali nome logico, nome fisico...

Questa funzione può essere usata in tutti i casi in cui si voglia interagire con le proprietà del documento in modo generico, cioè senza sapere di quale tipo di documento si tratta. Può essere utile quindi per realizzare servizi documentali trasversali che trattano i vari tipi di documenti in modalità generica.

Sintassi

int pidx = 0 // L'indice della proprietà cercata
// 
pidx := Doc.GetPropertyIndex(chiave di ricerca, cerca per nome, cerca per concetto, cerca per codice campo, cerca per codice proprietà)

Argomenti

Chiave Di Ricerca E' una espressione stringa che specifica il nome, il concetto o il codice della proprietà da cercare.
Cerca Per Nome E' un parametro booleano con valore di default True. Indica se la chiave di ricerca deve essere cercata come nome della proprietà. Il nome della proprietà è quello indicato nell'IDE di IN:DE senza gli spazi.
Cerca Per Concetto E' un parametro booleano con valore di default True. Indica se la chiave di ricerca deve essere cercata come concetto supportato dalla proprietà. Una proprietà supporta un concetto se ad essa, o al campo del database da cui essa dipende, è associato un dominio in cui è stata valorizzata la proprietà Concept nell'IDE di IN:DE.
Cerca Per Codice Campo E' un parametro booleano con valore di default False. Indica se la chiave di ricerca deve essere cercata come nome fisico (DB Code) del campo del database relativo alla proprietà.
Cerca Per Codice Proprietà E' un parametro booleano con valore di default False. Indica se la chiave di ricerca deve essere cercata come nome fisico (DB Code) della proprietà.

Valore di ritorno

Viene ritornato un numero intero che rappresenta l'indice della proprietà cercata, oppure ZERO se nessuna proprietà del documento corrisponde ai parametri. Solitamente il valore di ritorno viene utilizzato all'interno di chiamate ai metodi GetProperty o SetProperty.

Esempio di codice

// *******************************************
// Analizza il documento e carica le proprietà
// *******************************************

public void Ispettore.CaricaProprietà(
  IDDocument Doc // Il documento da analizzare
)
{
  IDDocumentStructure ds = null // La struttura del documento
  int np = 1                    // Enumera le proprietà
  // 
  // Cancelliamo il contenuto precedente

  delete from ProprietàOggetto
  // 
  // Recupero il meta schema dell'oggetto

  ds := Doc.GetStructure()
  // 
  // Enumeriamo le proprietà

  while np <= ds.GetPropertyCount()
  {
    IDPropertyDefinition pr = null // La definizione della proprietà np-esima
    string nome = ""               // Nome della proprietà
    string valore = ""             // Valore Attuale
    string vorg = ""               // Valore Originale
    // 
    // Recupero la definizione della proprietà np-esima

    pr := ds.GetPropertyDefinition(np)
    // 
    // Prelevo il nome e i valori

    nome := pr.UIName
    valore := Doc.GetProperty(np)
    vorg := Doc.GetOriginalValue(np)
    // 
    // Solo se la proprietà non è temporanea

    if NOT(pr.Transient)
    {
      // Creo la riga di proprietà nel pannello
      insert values into ProprietàOggetto
         set NomeProprietà := nome
         set ValoreProprietà := valore
         set ValoreOriginale := vorg
         set IndiceProprietà := np
    }
    // 
    // Prossima proprietà

    np := np + ONE
  }
  // 
  Mostro la proprietà che implementa il "concetto" di data iniziale
  {
    int dataidx = 0 // L'indice della proprietà DATA INIZIALE
    // 
    dataidx := Doc.GetPropertyIndex(DO_DATAINIZIALE, ??, ??, ??, ??)
    // 
    if dataidx > ZERO
    {
      ProprietàOggetto.LabelDataIniziale.Caption := FormatMessage(MSG Iniziale, ToString(
         Doc.GetProperty(dataidx)), ??, ??, ??, ??)
    }
    else  // 
    {
      ProprietàOggetto.LabelDataIniziale.Caption := MSG Iniziale Supportata
    }
  }
}
  • Se il documento supporta il servizio Extensible Schema, allora potranno essere cercate anche le proprietà estese a runtime.

Ultima modifica: 25/03/2021 / Validità: da 6.5.2680

Vedi Anche

  • Concept (proprietà)
  • Set Property (procedura)
  • Get Property (funzione)

Hai trovato utile l'articolo?

Grazie per il feedback!

Ti serve altro aiuto?

Consulta il Forum