Scopo
Tramite questa procedura è possibile attaccare un documento al pannello, specificando anche il tipo (master o detail). Solitamente viene utilizzata per attaccare al pannello un documento master.
Sintassi
Pannello.SetDocument(documento, master)
Argomenti
documento | E' il documento da attaccare al pannello. Deve essere un oggetto derivato dalla libreria IDDocument. |
master | True se il documento deve essere considerato come master, false se deve essere considerato come detail. |
Esempio di codice
// ***************************************
// Fired when a document node is activated
// ***************************************
event EsploratoreCategorie.Albero.OnActivateDoc(
IDDocument Document // Source document that has been activated
inout boolean Cancel // Set to True to cancel further processing
)
{
// Sblocco il pannello (se è vuoto si blocca...)
Prodotto.Locked := False
//
// Se nell'albero ho cliccato su un prodotto...
if Prodotto.IsMyInstance(Document)
{
// Lo imposto nel pannello come master, così le modifiche
// potranno essere salvate nel DB.
Prodotto.SetDocument(Document, True)
//
// Vado in dettaglio
Prodotto.Layout := Form
}
else // Allora è una cstegoria
{
Categoria c = null //
//
// Prendo la categoria
c := Categoria.Cast(Document)
//
// Metto i prodotti nel pannello
Prodotto.SetCollection(c.Prodotti)
//
// Torno in lista
Prodotto.Layout := List
}
}
// Fired when a document node is activated
// ***************************************
event EsploratoreCategorie.Albero.OnActivateDoc(
IDDocument Document // Source document that has been activated
inout boolean Cancel // Set to True to cancel further processing
)
{
// Sblocco il pannello (se è vuoto si blocca...)
Prodotto.Locked := False
//
// Se nell'albero ho cliccato su un prodotto...
if Prodotto.IsMyInstance(Document)
{
// Lo imposto nel pannello come master, così le modifiche
// potranno essere salvate nel DB.
Prodotto.SetDocument(Document, True)
//
// Vado in dettaglio
Prodotto.Layout := Form
}
else // Allora è una cstegoria
{
Categoria c = null //
//
// Prendo la categoria
c := Categoria.Cast(Document)
//
// Metto i prodotti nel pannello
Prodotto.SetCollection(c.Prodotti)
//
// Torno in lista
Prodotto.Layout := List
}
}
- Se il pannello è impostato in Master le operazioni di salvataggio e cancellazione verranno eseguite direttamente sul documento e quindi sul database; altrimenti il documento verrà segnalato come modificato o cancellato ma non sarà effettuata l'operazione di SaveToDB del documento.
- In caso di blocco o sblocco di un pannello DO master, verranno bloccati o sbloccati tutti gli altri pannelli DO non master della stessa videata.
- Se il pannello è impostato in Master, allora qualunque modifica al documento (anche nei sottodocumenti) farà sì che il pannello mostri l'indicatore di MODIFICATO nella caption.
- Se il pannello è detail ed è attaccato ad un pannello master, l'operazione di salvataggio sul detail viene dirottata al pannello master.
- L'uso di questa procedura con Master = False è equivalente all'impostazione della proprietà DOcument del pannello quindi è consigliabile usare questa procedura in tutti i casi di documenti master.
- L'uso di questa procedura richiede che il pannello sia in layout Form, per evitare che l'utente operi su altre righe di una collection non presente. Per ottenere lo stesso risultato con un pannello in layout List è necessario usare la procedura SetCollection.
Ultima modifica: 22/09/2021 / Validità: da 6.5.2680