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
//
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