English
Instant Developer Foundation Documentazione
  • Reference Librerie
  • Document Orientation
  • ID Document
  • Data Base

Before Load Collection

evento copia link

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

Vedi Anche

  • Load Collection By Example (procedura)
  • Load Collection From DB (procedura)

Hai trovato utile l'articolo?

Grazie per il feedback!

Ti serve altro aiuto?

Consulta il Forum