Condizioni di notifica
Questo evento viene notificato dai pannelli multi-pagina quando l'utente o il programma cambiano la pagina corrente. Questo può avvenire nei seguenti casi:
- L'utente cambia pagina cliccando sulle linguette.
- Il programma cambia la pagina attiva impostando la proprietà Page del pannello.
Utilizzo consigliato
L'evento di OnChangePage può essere utilizzato per aggiornare l'interfaccia utente a seconda della pagina di dati visualizzata.
Siccome è possibile impedire il cambiamento di pagina impostando il parametro Cancel a True, è possibile usare questo evento per verificare che i dati sulla pagina siano completi.
Argomenti
New Page | E' un numero intero che rappresenta il numero della pagina in fase di attivazione. Deve essere confrontato con la proprietà Me delle pagine del pannello. |
Cancel | E' un parametro di uscita booleano. Se lo si imposta a True si impedisce il cambiamento di pagina. |
Esempio di codice
// *********************************************************************
// Fired when in a multi-page layout, the panel changes the active page.
// *********************************************************************
event Ordini.Ordini.OnChangePage(
int NewPage // Nuova Pagina
inout boolean Cancel // Imposta a True per impedire il cambio pagina
)
{
// Se la pagina attuale è quella del destinatario...
if Ordini.Page = Ordini.Destinatario.Me()
{
// Se ho indicato il destinatario ma non il corriere...
if NOT(IsNull(Ordini.DestinatarioOrdine)) AND IsNull(Ordini.CorriereOrdine)
{
// Allora non posso cambiare pagina.
// P.S. questo vale anche per gli ordini già presenti nel DB.
Cancel := True
Ordini.SetInfoMessage(ERROR, MSG Indicare Corriere, ??)
}
}
}
// Fired when in a multi-page layout, the panel changes the active page.
// *********************************************************************
event Ordini.Ordini.OnChangePage(
int NewPage // Nuova Pagina
inout boolean Cancel // Imposta a True per impedire il cambio pagina
)
{
// Se la pagina attuale è quella del destinatario...
if Ordini.Page = Ordini.Destinatario.Me()
{
// Se ho indicato il destinatario ma non il corriere...
if NOT(IsNull(Ordini.DestinatarioOrdine)) AND IsNull(Ordini.CorriereOrdine)
{
// Allora non posso cambiare pagina.
// P.S. questo vale anche per gli ordini già presenti nel DB.
Cancel := True
Ordini.SetInfoMessage(ERROR, MSG Indicare Corriere, ??)
}
}
}
Ultima modifica: 03/04/2020 / Validità: da 6.5.2680
- Non si devono confondere i pannelli multi-pagina con le visualizzazioni a schede (tabbed view). Queste ultime permettono di includere più oggetti visuali diversi nello stesso spazio a video, mentre i pannelli multi-pagina servono per mostrare diversi sotto insiemi di campi a partire dallo stesso set di dati.
- E' possibile conoscere la pagina attualmente mostrata utilizzando la proprietà Page del pannello.
- Se si imposta la proprietà Page del pannello all'interno di questo evento si possono verificare le condizioni per un loop infinito.