Condizioni di notifica
Questo evento viene notificato dal sistema durante il caricamento di un documento da XML mediante la funzione LoadFromXML.
Utilizzo consigliato
Normalmente questo evento viene gestito quando occorre personalizzare il caricamento del documento da XML. Può essere utile farlo, per esempio, se il formato dell'XML è diverso da quello che avrebbe l'XML se fosse generato dal sistema per mezzo della funzione SaveToXML. L'evento permette, infatti, dato il nome di un attributo di un nodo XML di indicare al sistema a quale proprietà del documento corrisponde.
Argomenti
Nome Interno | Parametro di output stringa. Rappresenta il nome della proprietà del documento che occorre valorizzare utilizzando il nome dell'attributo del nodo XML il cui nome è stato comunicato mediante il parametro Tag Esterno. |
Tag Esterno | E' una stringa che rappresenta il nome dell'attributo del nodo XML (o il nome del nodo XML, vedi il paragrafo Note dell'articolo LoadFromXML per i diversi formati supportati) in fase di caricamento. |
Valore | Parametro di output stringa. Rappresenta il valore letto da XML. E' possibile modificare il valore prima che il sistema lo utilizzi per valorizzare la proprietà del documento. |
Elemento | Non utilizzato. |
Cancel | Parametro di output booleano. Se impostato a True indica al sistema di non valorizzare la corrispondente proprietà del documento. |
Esempio di codice
// ************************************************
// Fired when an attribute is being loaded from XML
// ************************************************
event Categorie.OnLoadXMLProp(
inout string InternalName // Internal Name. You can choose where to store the attribute
string ExternalTag // Name of the attribute as it appears in the XML file
inout string Value // Value of the attribute. You can change it!
inout boolean IsElement // Reserved for future use
inout boolean Cancel // Set to TRUE to disable attribute setting
)
{
// Traduco l'XML in inglese
if ExternalTag = CategoryID
{
InternalName := IDCategoria
}
if ExternalTag = CategoryID +c C_O
{
InternalName := IDCategoria +c C_O
}
//
if ExternalTag = CategoryName
{
InternalName := NomeCategoria
}
if ExternalTag = CategoryName +c C_O
{
InternalName := NomeCategoria +c C_O
}
//
if ExternalTag = Description
{
InternalName := Descrizione
}
if ExternalTag = Description +c C_O
{
InternalName := Descrizione +c C_O
}
}
// Fired when an attribute is being loaded from XML
// ************************************************
event Categorie.OnLoadXMLProp(
inout string InternalName // Internal Name. You can choose where to store the attribute
string ExternalTag // Name of the attribute as it appears in the XML file
inout string Value // Value of the attribute. You can change it!
inout boolean IsElement // Reserved for future use
inout boolean Cancel // Set to TRUE to disable attribute setting
)
{
// Traduco l'XML in inglese
if ExternalTag = CategoryID
{
InternalName := IDCategoria
}
if ExternalTag = CategoryID +c C_O
{
InternalName := IDCategoria +c C_O
}
//
if ExternalTag = CategoryName
{
InternalName := NomeCategoria
}
if ExternalTag = CategoryName +c C_O
{
InternalName := NomeCategoria +c C_O
}
//
if ExternalTag = Description
{
InternalName := Descrizione
}
if ExternalTag = Description +c C_O
{
InternalName := Descrizione +c C_O
}
}
- L'evento viene notificato due volte per ogni proprietà del documento: la prima volta per valorizzare la proprietà e la seconda volta per scrivere il valore originale di tale proprietà. Se il documento è stato salvato dal sistema mediante la funzione SaveToXML il nome del nodo XML (o dell'attributo a seconda del formato scelto per il salvataggio) termina con la stringa "_O" per indicare che quel nodo XML identifica il valore originale della proprietà.
-
Qualora il valore sia di tipo diverso da stringa è possibile utilizzare la funzione di libreria Convert per indicare ad Instant Developer di non utilizzare un controllo stretto dei tipi di dato. Quindi è possibile scrivere:
Valore := Convert(Now())
per sostituire il valore letto da XML con la data e ora correnti.
Ultima modifica: 01/04/2020 / Validità: da 6.5.2680