Scopo
Questa funzione consente di impostare il valore attuale di una delle proprietà pubbliche del documento riferenziandola per indice.
Può quindi essere utile per realizzare un servizio documentale trasversale che modifica i documenti senza dover conoscerne il tipo.
Sintassi
IDDocument doc = new() // Il documento da modificare
//
doc.SetProperty(indice proprietà, valore)
//
doc.SetProperty(indice proprietà, valore)
Argomenti
Indice Proprietà | E' un numero intero da 1 al numero di proprietà pubbliche del documento e indica quale proprietà deve essere impostata. Se l'indice è al di fuori dei valori indicati si otterrà un'eccezione |
Valore | E' il nuovo valore che la proprietà deve assumere |
Esempio di codice
// ***************************************************
// Fired when a panel command is about to be executed.
// ***************************************************
event Ispettore.ProprietàOggetto.OnCommand(
int Command // Command issued
inout boolean Cancel // Set to TRUE to cancel the command
)
{
IDDocument doc = null // Il documento da modificare
//
// Recupero il documento attivo
doc := Struttura.ActiveDocument
//
// Se ho premuto il tasto SALVA
if Command = Update
{
// Chiedo al documento se permette di essere modificato
if doc.GetLock(??, ??, ??)
{
// Apro una transazione documentale
doc.BeginTransaction()
//
// Ciclo sulle proprietà in memoria
for each row
{
select
NomeProprietàOggetto := NomeProprietà
ValoreProprietàOggetto := ValoreProprietà
ValoreOriginaleProprietàOggetto := ValoreOriginale
IndiceProprietàOggetto := IndiceProprietà
from
ProprietàOggetto // Master Table
//
record po
string NomeProprietàOggetto //
string ValoreProprietàOggetto //
string ValoreOriginaleProprietàOggetto //
int IndiceProprietàOggetto //
//
// Se la proprietà è statao modificata...
if po.ValoreProprietàOggetto <> po.ValoreOriginaleProprietàOggetto
{
// La scrivo nel documento
doc.SetProperty(po.IndiceProprietàOggetto, po.ValoreProprietàOggetto)
}
}
//
// Chiudo la transazione
doc.EndTransaction()
}
else // Dico che il documento non vuole essere modificato
{
EsempiDO.MessageBox(MSG Documento Essere)
}
}
}
// Fired when a panel command is about to be executed.
// ***************************************************
event Ispettore.ProprietàOggetto.OnCommand(
int Command // Command issued
inout boolean Cancel // Set to TRUE to cancel the command
)
{
IDDocument doc = null // Il documento da modificare
//
// Recupero il documento attivo
doc := Struttura.ActiveDocument
//
// Se ho premuto il tasto SALVA
if Command = Update
{
// Chiedo al documento se permette di essere modificato
if doc.GetLock(??, ??, ??)
{
// Apro una transazione documentale
doc.BeginTransaction()
//
// Ciclo sulle proprietà in memoria
for each row
{
select
NomeProprietàOggetto := NomeProprietà
ValoreProprietàOggetto := ValoreProprietà
ValoreOriginaleProprietàOggetto := ValoreOriginale
IndiceProprietàOggetto := IndiceProprietà
from
ProprietàOggetto // Master Table
//
record po
string NomeProprietàOggetto //
string ValoreProprietàOggetto //
string ValoreOriginaleProprietàOggetto //
int IndiceProprietàOggetto //
//
// Se la proprietà è statao modificata...
if po.ValoreProprietàOggetto <> po.ValoreOriginaleProprietàOggetto
{
// La scrivo nel documento
doc.SetProperty(po.IndiceProprietàOggetto, po.ValoreProprietàOggetto)
}
}
//
// Chiudo la transazione
doc.EndTransaction()
}
else // Dico che il documento non vuole essere modificato
{
EsempiDO.MessageBox(MSG Documento Essere)
}
}
}
- L'espressione passata nel parametro valore può essere di un qualunque tipo base, tuttavia è consigliabile che corrisponda al tipo della proprietà che si sta per impostare. Se, ad esempio, si sta impostando una proprietà String, è consigliabile usare una espressione stringa all'interno del parametro valore.
Ultima modifica: 16/11/2022 / Validità: da 6.5.2680