English
Instant Developer Foundation Documentazione
  • Reference Librerie
  • Reportistica
  • Libreria Sezione
  • Proprietà

Show Children

proprietà copia link

Scopo

La proprietà ShowChildren è da utilizzarsi solo per sezioni di tipo GroupHeader e indica al sistema se occorre stampare o meno tutte le sezioni incluse nel gruppo, in particolare:

  1. Sezioni di tipo GroupHeader più interne
  2. Sezioni di tipo Detail
  3. Sezioni di tipo GroupFooter più interne e allo stesso livello di quella corrente
Se il valore della proprietà ShowChildren è False verrà stampato solo il GroupHeader. Non verranno stampati né GroupHeader interni, né sezioni di tipo Detail, né sezioni di tipo GroupFooter interne al gruppo né sezioni di tipo GroupFooter dello stesso gruppo della sezion GroupHeader.

Normalmente la proprietà ShowChildren viene letta per mostrare, per esempio, l'immagine + o - a seconda che la sezione di gruppo sia aperta o chiusa. Viene, invece, modificata qualora si desideri aprire o chiudere un gruppo da codice.

Sintassi

boolean child = 0 // Deveono essere mostrati i figli del gruppo?
// 
child := Sezione.ShowChildren

Quando letta

Ritorna True se occorre stampare i figli della sezione GroupHeader, False altrimenti.

Quando impostata

Mostra o nasconde i figli della sezione GroupHeader e la corrispondente sezione di tipo GroupFooter.

Esempio di codice

// *********************
// Apro tutti i dettagli
// *********************

public void CategorieBook.ApriTutti()
{
  CategorieBook.ReportCategorie.IdcategoriaGroupHeader.ShowChildren :=
    True
  // 
  CategorieBook.Refresh(ONE, C-1)
}
  • Attenzione: Se la proprietà ShowChildren viene modificata all'interno dell'evento BeforeFormatting la modifica ha effetto solo sulla sezione in fase di formattazione (consulta il videocorso Mastro On Formatting). Se la proprietà ShowChildren viene modificata al di fuori dagli eventi di formattazione della sezione, da quel momento in poi tutte le copie della sezione avranno la proprietà ShowChildren valorizzata allo stesso modo. In quest'ultimo caso è come se alla proprietà ShowChildren fosse stato fornito tale valore a design-time.
  • Attenzione: La modifica alla proprietà ShowChildren nell'evento AfterFormatting non ha alcun effetto poiché la sezione è già stata posizionata sulla pagina in fase di formattazione.
  • Se la proprietà ShowChildren viene modificata all'interno di una procedura legata ad una box attiva contenuta nella sezione tale modifica ha effetto solo sulla singola copia della sezione. Tale modifica equivale ad una modifica alla proprietà fatta all'interno degli eventi di formattazione della sezione che contiene la box.
  • Se viene modificata la proprietà ShowChildren durante gli eventi di formattazione della sezione o durante la procedura collegata ad una box attiva contenuta nella sezione non è necessario ristampare il book. Tale modifica avrà effetto immediato. Qualora, invece, la modifica sia fatta fuori dagli eventi di validazione e non all'interno della procedura collegata alla box attiva potrebbe essere necessario ristampare il book utilizzando la procedura Refresh dello stesso.
  • La modifica alla proprietà ShowChildren all'interno dell'evento BeforeFormatting è "permanente" nel senso che tale informazione viene memorizzata in una struttura dati che permane anche se il book viene completamente ristampato. Questo permette, per esempio, di aprire o chiudere alcuni gruppi quando il book è mostrato in una porzione di videata web e poi di stampare tale book su PDF conservando lo stato di apertura e chiusura dei gruppi. L'unico modo per svuotare tale struttura dati permanente è quello di modificare il valore della proprietà ShowChildren al di fuori dell'evento di BeforeFormatting. Tale modifica viene applicata all'oggetto definito a design time e, in questo caso, il sistema elimina dagli stati permanenti tutte le informazioni riguardanti le copie delle sezioni derivate dalla sezione a cui è stata modificata la proprietà ShowChildren. Tale struttura dati viene comunque eliminata alla chiusura della videata che contiene il book.
  • Se la sezione GroupHeader contiene una box cliccabile e la box è collegata alla sezione stessa il sistema, quando viene cliccata la box, inverte lo stato della proprietà ShowChildren della sezione che contiene la box cliccabile. Tale modifica è anch'essa permanente e viene conservata nella struttura dati indicata al punto precedente. In questo caso, inoltre, il sistema esegue le seguenti operazioni:
    1. elimina tutte le pagine a partire dalla pagina corrente fino alla fine mediante una chiamata alla procedura Book.Refresh (PaginaCorrente, -1)
    2. ristampa automaticamente la pagina corrente del book mediante una chiamata alla procedura Book.Print (PaginaCorrente, PaginaCorrente).

    Lo stesso comportamento si ottiene se si collega alla box cliccabile una procedura ed in tale procedura si inverte lo stato della proprietà ShowChildren della sezione GroupHeader che contiene la box.
  • Attenzione: Qualora sia necessario leggere il valore della proprietà ShowChildren occorre farlo nell'evento AfterFormatting della sezione. La lettura nell'evento BeforeFormatting, infatti, potrebbe non essere corretta in alcuni casi, in particolare se la sezione che viene aperta o chiusa è la prima di una pagina. Il sistema, infatti, quando viene aperta o chiusa una sezione distrugge automaticamente tutte le pagine a partire dalla pagina in cui si trova la sezione che è stata espansa o collassata. Poi ricostruisce la stessa pagina in cui si trovava la sezione cambiata. Ora, se la sezione è la prima della pagina il sistema non notifica l'evento BeforeFormatting dato che la sezione è già stata formattata mentre veniva riempita la pagina precedente ed è ancora presente nella cache del motore di stampa. Quindi, in questo caso particolare, il sistema estrae la sezione dalla cache e la inserisce nella pagina senza notificare l'evento BeforeFormatting. Dopo aver inserito la sezione nella pagina il sistema notifica l'evento AfterFormatting. Se viene espansa o collassata una sezione diversa dalla prima il sistema non possiede tale copia in cache pertanto deve notificare l'evento BeforeFormatting.

Ultima modifica: 02/11/2022 / Validità: da 6.5.2680

Vedi Anche

  • Print (procedura)
  • Before Formatting (evento)
  • After Formatting (evento)
  • Refresh (procedura)

Hai trovato utile l'articolo?

Grazie per il feedback!

Ti serve altro aiuto?

Consulta il Forum