English
Instant Developer Foundation Documentazione
  • Tutorial report
  • Eventi di stampa

Mastro On Formatting

copia link
<< Video precedente
Apri in una finestra a tutto schermo.
Video successivo >>

Trascrizione

Abbiamo realizzato all’interno delle videate del progetto YouBB alcuni oggetti Libro dedicati alla stampa di report, ma sempre in versione statica. Dico statica in quanto tutti gli oggetti sono stati preparati unicamente in progettazione senza nessuna variazione in esecuzione.

Fortunatamente gli oggetti contenuti nell’oggetto Libro possono anche essere modificati a runtime, per soddisfare esigenze operative. E’ importante sapere che le modifiche potranno essere effettuate unicamente all’interno di Eventi emessi in determinati momenti di stampa.

Se ricordate, nelle lezioni iniziali, abbiamo parlato di come un Libro viene effettivamente prodotto in esecuzione: il motore di stampa esegue la query associata al report, richiede la creazione di una pagina Mastro, inizia a popolare le box contenute nelle Sezioni del report fino alla successiva richiesta di pagina mastro, così da mostrare tutti i record recuperati.

Seguendo questa logica, in ogni momento di stampa verrà emesso un Evento con il quale noi potremo modificare l’aspetto degli oggetti.

Visualizziamo in progettazione il Libro contenuto nella videata Localita con un doppio clic su Mastro Località.

Ogniqualvolta il motore di stampa richieda una nuova pagina, verrà emesso l’evento Mastro On Formatting. L’evento verrà emesso un attimo prima della costruzione della pagina Mastro: quindi vuol dire che sarà possibile modificare qualsiasi aspetto della pagina Mastro e qualsiasi aspetto degli oggetti contenuti nella pagina Mastro.

Vogliamo modificare l’orientamento del foglio da Orizzontale a Verticale? Vogliamo modificare la dimensione del foglio da formato A4 a formato A3? Vogliamo spostare o nascondere gli oggetti Box contenuti nella pagina? L’evento Mastro On Formatting è il momento opportuno.

Ipotizziamo di avere questa necessità: nel caso la stampa avvenga su un foglio dispari, il logo dovrà trovarsi a destra e il titolo a sinistra. Nel caso, invece, di stampa su foglio pari, lasceremo gli oggetti box nella posizione di progettazione. La pagina Mastro contiene due box, Logo Pagina e Testata Pagina, rispettivamente a sinistra e a destra del foglio che andremo a spostare a runtime.

Intercettiamo l’evento. Intercettiamo l’evento On Formatting della pagina Mastro. Sull’Albero di progetto: Mastro Località, Tasto destro Eventi, Aggiungi On Formatting.

Iniziamo a digitare il codice opportuno:

//VERIFICHIAMO SE IL NUMERO DI PAGINA E’ DISPARI
if (Libro localita.pageNumber % 2 <> 0) {


Dobbiamo verificare se il numero di pagina in stampa è pari o dispari. E’ un’informazione che possiamo recuperare dal Libro localita.pageNumber. Questa informazione utilizziamo poi l’operatore mod, cioè il %, 2 per calcolare il resto. Quindi pageNumber % 2 se è diverso da 0 vuol dire che la pagina è dispari.

   //CI SERVE CONOSCERE LO SPAZIO ORIZZONTALE IN MILLIMETRI CHE SEPARA LE DUE BOX
   Int Gap = TestataPagina.left – (LogoPagina.Left + LogoPagina.width)


Adesso abbiamo bisogno di conosce lo spazio orizzontale in millimetri che separa le due box. Dichiariamo quindi una variabile di tipo float, la chiamiamo Gap e questo Gap sarà uguale a TestataPagina.left - (LogoPagina.Left + LogoPagina.width).

   //ORA SPOSTIAMO LE DUE BOX
   // TESTATA VA AL POSTO DI LOGO
   TestataPagina.left = LogoPagina.Left

   //SPOSTO LOGO PAGINA IN AVANTI
   LogoPagina.left = TestataPagina.Left + TestataPagina.Width + Gap
}


Ora che abbiamo questo Gap, possiamo spostare le due box. Quindi, la testata va al posto del logo: TestataPagina.left = LogoPagina.Left. Adesso sistemo il logo: LogoPagina.left = TestataPagina.Left + TestataPagina.Width + Gap che abbiamo calcolato in precedenza.

Prima di compilare, ricordiamoci di abilitare il conteggio delle pagine in fase di stampa, altrimenti il nostro evento non darà il risultato sperato. E’ una proprietà del Libro, quindi doppio clic su Libro Localita e attiviamo il flag Calcola il numero di pagine prima di stampare.

Siamo pronti a compilare ed eseguire l’applicazione, Tasto F5 o Menu Modifica: Compila.

PAUSA

Applicazione avviata, utilizziamo il menu Configura, quindi Elenco Località: con il pulsante sulla toolbar richiediamo la stampa dell’elenco. Nel pdf risultante notiamo, sulla prima pagina, il logo a destra ed il titolo a sinistra, e sul secondo foglio, invece, la disposizione opposta. Possiamo quindi dire: missione compiuta.

Ultima modifica: 15/06/2021 / Validità: da 21.0.8100

Hai trovato utile l'articolo?

Grazie per il feedback!

Ti serve altro aiuto?

Consulta il Forum

Vedi anche

    Scarica il progetto di esempio You Bb Project.zip