Condizioni di notifica
Questo evento viene notificato al documento durante il salvataggio in XML.
Utilizzo consigliato
Normalmente questo evento viene gestito quando occorre personalizzare il salvataggio del documento in XML. Può essere utile farlo, per esempio, se è richiesto un formato particolare dell'XML, diverso da quello che avrebbe l'XML se fosse generato dal sistema. L'evento permette infatti, di indicare quale dei due formati è possibile utilizzare per mezzo del parametro UsaElemento (per i formati XML forniti dal sistema si veda il paragrafo Note nell'articolo LoadFromXML). Inoltre è possibile specificare quale nome deve avere il nodo XML per ognuna delle proprietà del documento. E' anche possibile, utilizzando questo evento, aggiungere nodi in più nel documento.
Argomenti
Nome Interno | Parametro stringa. Rappresenta il nome della proprietà del documento che sta per essere salvata. |
Tag Esterno | Parametro di output stringa. Rappresenta il nome che il sistema deve utilizzare per l'attributo (o il nodo XML) che contiene il valore della proprietà. |
Valore | E' il valore della proprietà che verrà salvata. E' possibile cambiarlo per salvare, nel documento XML, un valore diverso da quello della proprietà. |
Usa Elemento | Parametro di output booleano. Indica al sistema quale formato occorre utilizzare per scrivere le proprietà nel documento XML. Se vale True viene usato un nodo di tipo ELEMENT, se vale False viene utilizzato un attributo del nodo che identifica la classe. |
Esempio di codice
// Fired when a property is being saved to XML
// *******************************************
event Categorie.OnSaveXMLProp(
string InternalName // Internal property name or empty to store additional attributes
inout string ExternalTag // External XML attribute name
inout string Value // Value to store
inout boolean UseElement // Set to TRUE to use an element
)
{
// Indico al sistema quale formato desidero per l'XML
UseElement := CategorieDO.XML.UsaElement
//
// Se devo traduco
if CategorieDO.XML.Traduci = True
{
// Traduco l'XML in inglese
if InternalName = IDCategoria
{
ExternalTag := CategoryID
}
if InternalName = IDCategoria +c C_O
{
ExternalTag := CategoryID +c C_O
}
//
if InternalName = NomeCategoria
{
ExternalTag := CategoryName
}
if InternalName = NomeCategoria +c C_O
{
ExternalTag := CategoryName +c C_O
}
//
if InternalName = Descrizione
{
ExternalTag := Description
}
if InternalName = Descrizione +c C_O
{
ExternalTag := Description +c C_O
}
}
//
// Aggiungo una mia proprietà: DataOra di salvataggio
if IsNull(InternalName)
{
ExternalTag := SaveTime
Value := ToString(Now())
}
}
- L'evento viene notificato due volte per ogni proprietà del documento: la prima per comunicare al sistema il valore corrente di ogni proprietà e la seconda per comunicare al sistema il valore originale di ogni proprietà. Ad ogni notifica il parametro TagEsterno contiene già il nome proposto dal sistema che, nel caso dei valori originali delle proprietà, termina con la stringa "_O".
- Dopo aver effettuato il salvataggio di tutte le proprietà, il sistema notifica l'evento al documento passando Null come valore di tutti i parametri. Se, dopo aver notificato l'evento, il sistema trova il valore della proprietà TagEsterno diversa da Null allora aggiunge un ulteriore nodo XML (o attributo a seconda del valore del parametro UsaElemento) memorizzando il valore identificato dal parametro Valore. Tale notifica speciale termina solo se il valore del parametro TagEsterno viene lasciato Null o il valore fornito al parametro TagEsterno è già stato utilizzato in precedenza.
- Impostando il parametro TagEsterno a stringa vuota la proprietà non verrà inserita nel file XML.
Ultima modifica: 01/04/2020 / Validità: da 6.5.2680