Scopo
La procedura Refresh chiede al sistema di aggiornare il book ristampando tutte le pagine fino a quella attualmente mostrata. Tale procedura è necessaria in quanto il sistema conserva in memoria le pagine già stampate del book mediante il metodo Print. La procedura Refresh svuota la copia in memoria delle pagine e forza il sistema a ristamparle fino a ritornare alla pagina corrente. La procedura Refresh è da utilizzarsi solo per i book contenuti nelle videate poiché solo in questo caso le pagine già stampate vengono conservate in memoria. Nel caso di stampa su PDF o su stampante, infatti, le pagine già stampate non vengono conservate in memoria come indicato nella documentazione riguardante il metodo Print.
Sintassi
Book.Refresh(da pagina, a pagina)
Argomenti
Da Pagina | Indica il numero della prima pagina da aggiornare |
A Pagina | Indica il numero dell'ultima pagina da aggiornare |
Esempio di codice
// Fired after changes in panel are saved to database
// **************************************************
event ImpiegatiBook.ConfigBook.AfterCommit(
int RowsUpdated // Number of rows inserted or updated
int RowsInErrors // Number of rows that cannot be updated due to databas...
)
{
int OldFitMode = 0 // Valore precedente della proprietà Fit_Mode
//
// Memorizzo il vecchio valore del Fit_Mode e aggiorno il valore della
// proprietà
OldFitMode := ImpiegatiBook.ImpiegatiBookPage.FitMode
ImpiegatiBook.ImpiegatiBookPage.FitMode := ConfigBook.FitMode
//
// Comunico al sistema le nuove dimensioni del book
ImpiegatiBook.SetSize(ConfigBook.Width, ConfigBook.Height)
//
// Ci sono 2 casi in cui la Set_Size non aggiorna automaticamente il book:
// 1) la proprietà Fit_Mode era NONE e tutte le pagine in memoria avevano
// tale valore. In quel caso la Set_Size non aggiorna il book e devo
// farlo io.
// 2) non sono state modificate le dimensioni. In questo caso la Set_Size
// non fa nulla e devo pensarci io a ristampare il book
if (OldFitMode <> ConfigBook.FitMode AND OldFitMode = None) OR NOT(
ConfigBook.ModifDims)
{
// Devo aggiornare tutte le pagine già stampate del book
ImpiegatiBook.Refresh(ONE, C-1)
//
// Ripristino il flag che indica se le dimensioni sono state modificate
// (vedi evento di OnUpdatingRow)
ConfigBook.ModifDims := False
}
}
- Normalmente questa procedura viene utilizzata quando occorre ristampare nuovamente il book perché alcune delle proprietà degli oggetti del book stesso (pagine, sezioni, box, span) sono stati modificati. In questo caso la chiamata alla procedura Print avrebbe l'effetto di ristampare solo alcune pagine (quelle non conservate in memoria a seguito della stampa; vedi la documentazione del metodo Print per ulteriori informazioni riguardanti la conservazione delle pagine in memoria dopo la stampa dei book in anteprima).
- Attenzione: le query dei reports su database non vengono rieseguite a meno ché non sia stato chiamato il metodo RefreshQuery prima della chiamata alla procedura Refresh. Qualora questo non avvenga il sistema utilizzerà la copia in memoria dei records letti durante l'ultima stampa del book. Questo non avviene per le query dei sub-reports che vengono comunque rieseguite durante la stampa anche se tali query sono su tabelle o viste del database.
- Se il book ha il flag Precount Pages attivo ed una delle pagine del book è mostrata in anteprima, la chiamata alla procedura Refresh ha l'effetto di stampare il book due volte: la prima volta viene ristampato il book dalla prima all'ultima pagina (questo per sapere quante pagine contiene il book); la seconda volta viene ristampato il book dall'inizio fino alla pagina che venvia mostrata prima della chiamata alla procedura.
- Qualora il book sia contenuto in una porzione di videata ma nessuna pagina del book venisse mostrata la chiamata alla procedura Refresh ha il solo effetto di svuotare la copia in memoria delle pagine già stampate. Dopo la procedura il book continuerà a non mostrare nessuna pagina.
- Questa procedura è diversa dalla procedura UpdateBook in quanto quest'ultima aggiorna il book solo se almeno uno dei parametri delle query del book (qualora ve ne siano) è cambiato.
Ultima modifica: 23/03/2021 / Validità: da 6.5.2680