Condizioni di notifica
Questo evento viene notificato ad un documento prima di caricare una collection del suo tipo. Se, ad esempio, si sta caricando la collection Righe del documento Ordine, allora l'evento viene notificato ad un'istanza del documento Riga. La procedura di caricamento delle collection, infatti, prima di caricarla crea un'istanza fittizia del documento che deve essere contenuto nella collection e lo usa per notificare il metodo. L'evento viene notificato nei seguenti casi:
- Prima di caricare una collection tramite il metodo LoadCollectionByExample.
- Prima di caricare una collection tramite il metodo LoadCollectionFromDB.
- Quando pannelli o alberi DO caricano collection di documenti dal database.
Utilizzo consigliato
Questo evento deve essere gestito quando il caricamento della collection non può essere definito tramite una query SQL definita a design time. Nell'esempio di codice sotto riportato vedremo come caricare la struttura delle directory dell'hard-disk: per fare ciò è necessario definire una procedura di caricamento personalizzata.
Argomenti
Parent | E' il documento padre che ha chiesto il caricamento della collection. Può essere Null Object se l'evento viene notificato dalla procedura LoadCollectionByExample. |
Collection | E' la collection da caricare. |
Skip | Parametro di output booleano. Se impostato a True, allora il caricamento standard non verrà effettuato. |
Esempio di codice
// Fired before a collection is loaded
// ***********************************
event Directory.BeforeLoadCollection(
IDDocument Parent // Parent Document
IDCollection Collection // Collection to load
inout boolean Skip // Set to TRUE to skip normal processing
)
{
Directory d = null // La directory Parent
string nd = "" // Le directory trovate sull'HD
//
// Prelevo la directory padre
d := Directory.Cast(Parent)
//
// Salto il caricamento standard (non è sul DB!)
Skip := True
//
// Leggo la prima directory che mi interessa
nd := ReadDirectory(d.Percorso +c C\ +c Asterisco, Directory)
//
// Finchè trovo altre directories...
while nd <> Empty String
{
Directory dd = new() //
//
// Carico il nuovo oggetto sottodirectory
dd.Nome := nd
dd.Percorso := d.Percorso +c C\ +c nd
dd.SetOriginal()
dd.Loaded := True
//
// Se effettivamente rappresenta una directory (anche i file vengono enumerati!)
if FileAttributes(dd.Percorso) = Directory
{
// Allora lo aggiungo alla collection delle sotto-directory
Collection.Add(dd)
}
//
// Passo alla prossima
nd := ReadDirectory(??, ??)
}
}
- Se il parametro Parent è valorizzato, allora occorre usarlo per sapere quali documenti devono essere caricati nella collection
- Se il parametro Parent NON è valorizzato, allora occorre guardare le proprietà dell'oggetto a cui viene notificato l'evento per sapere quali documenti caricare.
Ultima modifica: 20/09/2021 / Validità: da 6.5.2680