Generazione di un report

In questo tutorial si mostreranno i componenti principali dell’oggetto Report e si realizzerà un semplice report contenente una griglia dati che mostra i valori di un oggetto. Alla fine del tutorial si avrà un file pdf con un’intestazione, una sezione con una griglia dati, un’interruzione di pagina e un piè di pagina che mostra il numero di pagina corrente e la data di creazione del report.

Introduzione

Per iniziare, creare un nuovo progetto denominato ReportProject. Creare un oggetto Motor nella cartella di modello ed aggiungere a tale oggetto tre variabili chiamate Speed, Acceleration e Torque. Trascinare Motor nel Pannello Tipi, nella cartella Modello, al fine di creare il corrispondente tipo di modello. Creare una cartella denominata MyMotors nella cartella di modello e istanziare tre oggetti Motor al suo interno. Inserire dei valori a piacere per i parametri Speed, Acceleration e Torque per ciascuna istanza di Motor.

Creazione e configurazione di un report

Creare un nuovo oggetto Report (denominato Report1) facendo clic destro sulla cartella di progetto Reports >> Nuovo >> Report.

Nel Pannello proprietà è possibile impostare le proprietà del file PDF che si vuole generare, tra cui le seguenti:

  • Dimensione pagina: consente di selezionare la dimensione della pagina (formati supportati A3, A4, A5, Letter, Legal, Executive) oppure una dimensione personalizzata specificando la larghezza e l’altezza della pagina.

  • Foglio di Stile: consente di selezionare un foglio di stile personalizzato. Quando si crea la prima istanza di un report, viene creato automaticamente un foglio di stile specifico per gli oggetti Report.

  • Margini: consente di impostare dei margini di pagina. Per lo scopo del tutorial, impostarli a 10mm.

Intestazione

Espandere Report1 e aprire l’oggetto Intestazione nell’editor dell’interfaccia utente. Aggiungere un’etichetta facendo clic destro su Intestazione >> Nuovo >> Etichetta. Mettere l’etichetta al centro della pagina impostando le proprietà Allineamento orizzontale e Allineamento verticale a Centro. Impostare poi il testo a «My Report» e Dimensione font al valore 16. Oltre all’etichetta, è possibile inserire rettangoli, pannelli e immagini. Ad esempio, per inserire un’immagine, fare clic destro su Intestazione >> Nuovo >> Immagine, associare alla proprietà Percorso l’immagine desiderata ed impostare la proprietà Altezza a 20mm e Allineamento orizzontale con «Destra».

Sezioni

Aggiungere una sezione griglia dati facendo clic destro su Sezioni e selezionando Nuovo >> Sezione griglia dati. Assegnare al Modello della sezione griglia dati alla cartella MyMotors. Aggiungere poi tre nuove colonne (Name, Speed e Acceleration e Torque) e impostare i seguenti collegamenti dinamici per ciascuna colonna della griglia:

  • Name: creare un collegamento dinamico tra la proprietà Testo e l’attributo BrowseName di {Item}/Motor.

  • Speed: creare un collegamento dinamico tra la proprietà Testo e {Item}/Motor/Speed.

  • Acceleration: creare un collegamento dinamico tra la proprietà Testo e {Item}/Motor/Acceleration.

  • Torque: creare un collegamento dinamico tra la proprietà Testo e {Item}/Motor/Torque.

Per lasciare dello spazio rispetto all’intestazione di pagina, impostare la proprietà Margine superiore della sezione griglia dati a 10mm.

In Sezioni è possibile inserire anche una Sezione pannello (per l’inserimento di etichette, rettangoli e immagini) e Interruzione di pagina (per fare in modo che la sezione successiva inizi su una nuova pagina). A titolo di esempio, si può aggiungere un oggetto Interruzione di pagina (da Nuovo >> Interruzione di pagina) e poi una Sezione pannello (Nuovo >> Sezione Pannello), inserendo in quest’ultimo un’etichetta con testo «Sezione 1».

Piè di pagina

Aggiungere un’etichetta nel Piè di pagina e aggiungere un collegamento dinamico tra proprietà Testo e Reports >> Report1 >> Numero pagina corrente per visualizzare il numero di pagina corrente. Analogamente è possibile inserire il numero di pagine totali creando un collegamento tra la proprietà Testo e Reports >> Report1 >> Numero pagine totali.

Per inserire la data di generazione del file PDF, aggiungere una nuova etichetta e creare un collegamento tra Testo e Reports >> Report1 >> Data e ora di stampa. Se si vogliono concatenare le più è possibile utilizzare un String formatter.

Aggiungere una linea che separa il Piè di pagina dalle sezioni del report tramite l’inserimento di un rettangolo, impostando la proprietà Altezza a 0.5mm e Allineamento orizzontale con «Adatta».

Note

La dimensione automatica è supportata solo per oggetti Etichetta (ad eccezione dei testi in collegamento dinamico con le proprietà PageCount e PageNumber).

Generazione PDF

Creare un pulsante in UI >> MainWindow e impostare la sua proprietà Testo con «Genera report». Impostare poi l’evento MouseClickEvent del pulsante selezionando Reports/Report1/Genera PDF. Configurare i due argomenti nel seguente modo:

  • OutputPath: inserire il percorso completo incluso il nome del file pdf.

    Note

    Affinchè il file pdf venga generato con successo, accertarsi che la cartella che conterrà il file pdf esista sul filesystem.

  • LocaleId: creare un collegamento dinamico con {Session}/Session/Localdeds per generare i report nell’locale dell’utente corrente di sessione.

Evento GeneratePdfCompletedEvent

Tramite l’evento GeneratePdfCompletedEvent, è possibile selezionare un metodo oppure un’azione da eseguire al completamento della generazione del report. A scopo di questo esempio, apriremo un popup che mostra i contenuti del report tramite un visualizzatore pdf.

Creare un oggetto Popup1 nella cartella UI (da Contenitori >> Popup) e inserire al suo interno l’oggetto Visualizzatore PDF (da Contenuti >> Visualizzatore PDF). Impostare il percorso di quest’ultimo a C:/MyReports/MyReport.pdf.

Per aprire il popup una volta completata la generazione del Report, selezionare Pulsante1 sotto la MainWindow e cliccare il tasto «+» sul pannello Eventi per aggiungere un evento esterno. Selezionare Report/Report1/PDF generato per aggiungere l’evento di pdf generato del report. Premere il tasto «+» in corrispondenza dell’evento Report1/PdfGeneratedEvent e selezionare il commando Commands/UICommands/OpenDialog. Impostare la proprietà Dialog, sotto Input arguments, a Popup1 per visualizzare il report una volta completata la generazione.

Avviare QRuntime e premere sul pulsante «Generate report» per generare il report nella cartella C:/Reports. Al completamento della generazione, apparirà un popup che mostra il file pdf generato.

Scarica il progetto di esempio da qui.