In sintesi
In questa lezione vediamo come creare book partendo da pannelli e come associare fra di loro i due oggetti.
Nota: questo video corso è stato realizzato con la versione 4 di Instant Developer. Anche se i contenuti sono ancora attuali e sono utili per imparare ad utilizzare Instant Developer, alcune affermazioni sono di fatto superate. Per i dettagli e le ultime novità sulle funzionalità illustrate vi rimandiamo alla sezione di reference che viene tenuta aggiornata giornalmente.
In questa lezione vediamo come creare book partendo da pannelli, come associare un book ad un pannello e come utilizzare l'evento di On Print generato dal sistema quando viene stampato un book legato ad un pannello.
Fino ad ora abbiamo visto book già disegnati. Nella lezione precedente abbiamo visto come disegnare un book. In questa lezione vediamo come Instant Developer ci permette di utilizzare il layout di un pannello per disegnare completamente un book.
In questa form vediamo che è già presente un book inserito in un frame nel form. Ora supponiamo di voler aggiungere un nuovo book nascosto che visualizzi tutti gli impiegati. Dovremmo aggiungere un nuovo book, poi definire la Master Query aggiungere le box e gli span.
Instant Developer ci permette di farlo molto velocemente. Possiamo aggiungere un book selezionando il comando dal menu contestuale del pannello. E' stato aggiunto un nuovo book già pronto per la stampa. Instant Developer ha inserito un nuovo book vuoto. Ha copiato la Master Query del pannello nella Master Query del report, riportanto tabelle, campi ed espressioni. Poi ha inserito le box e gli span all'interno del report seguento il layout del pannello. Instant Developer utilizza come riferimento il layout in Form se il pannello lo possiede, altrimenti utilizza il layout in lista. Se ci interessa utilizzare il layout lista del pannello quando questo viene aperto in form possiamo disabilitare per un attimo il flag Has Form dalle proprietà del pannello, creare il book che in questo caso utilizza il layout list e poi ripristinare il flag Has Form al valore originale.
La larghezza delle box che sono state create è stata calcolata partendo dalla larghezza dei corrispondenti panel field del pannello.
Inoltre il book è collegato al pannello. Infatti aprendo il menu contestuale sul pannello non è più disponibile il comando Add Book, bensì il comando Delete Panel Book. Questo comando permette di scollegare il book dal pannello.
Se un book è collegato ad un pannello viene aggiunta l'icona di stampa alla toolbar del pannello. Quando l'utente preme il bottone di stampa da pannello viene stampato il book su PDF (per applicazioni WEB) o su schermo (per applicazioni Client/Server).
E' anche possibile collegare un book nascosto già disponibile ad un pannello tirando il book sul pannello, come suggerito dalla Status Bar.
Vediamo come funziona il book di pannello a run-time. Apriamo la form Impiegati e vediamo che è stata aggiunta l'icona di stampa. Se la premiamo viene stampato il book associato su PDF.
Torniamo al progetto. Quando l'utente preme sul bottone di stampa del pannello (visibile solo se il pannello possiede un book ad esso collegato) viene scatenato l'evendo di On Print. Aggiungiamolo.
All'evento viene passato il parametro Print Destination che permette di cambiare la destinazione della stampa del book di pannello. Come suggerito dal commento se non viene cambiato viene stampato su PDF, ma potremmo anche stamparlo a video o su stampante. Poi possiamo anche interrompere la procedura di stampa assegnando il valore True al parametro Cancel.
Vediamo infine il significato del parametro Set Where Clause.
Normalmente il sistema copia le selezioni QBE dal pannello al primo report del book collegato al pannello. Questo vuol dire che se, per esempio, apriamo il pannello, entriamo in QBE e scegliamo i soli ID compresi tra 3 e 5 poi stampiamo il book premendo il bottone di stampa, il sistema aggiunge una clausola Where alla Master Query del report selezionando i soli ID compresi tra 3 e 5 copiando la selezione dal pannello. Se non vogliamo che questo venga fatto possiamo impostare a False il parametro Set Where Clause per indicare al sistema che non vogliamo copiare la Where Clause dal pannello al primo report del book ma vogliamo stampare tutti i records.
Proviamo a re-dirigere la stampa a video. Compiliamo e verifichiamo.
Verifichiamo anche la selezione dal QBE al book di pannello. Selezioniamo i soli utenti con ID compreso tra 3 e 5. Poi stampiamo il book. Come ci aspettavamo viene aperta l'anteprima del book nascosto e vengono stampati i soli impiegati selezionati nel pannello.
Se creiamo il book nel modo visto prima Instant Developer aggiunge un nuovo book utilizzando una pagina Template Standard. Se invece volessimo utilizzare una pagina Template disegnata da noi dovremmo creare il book, disegnare la pagina Template e poi tirare il pannello sul book. Instant Developer, in questo caso, aggiunge solo un nuovo Report al book utilizzando la pagina Template che questo contiene già. Instant Developer, in questo caso, collega le sezioni del nuovo report alle stesse box a cui sono collegate le sezioni del report già esistente. Una volta tirato il pannello e creato il nuovo report possiamo cancellare il report già esistente.
Proviamo a copiere questa operazione.
Proviamo ad aggiungere un nuovo book alla form Impiegati. Poi editiamo la pagina Template. Poi collegiamo le sezioni del report già presente alle box della pagina Template. Questa operazione serve solo perché Instant Developer utilizza questi link per il nuovo report creato partendo dal pannello. Poi tiriamo il pannello sul book. Infine cancelliamo il vecchio report vuoto e controlliamo il report così ottenuto. Vediamo che Instant Developer ha sfruttato i link del vecchio report per comporre il nuovo ed ha collegato le sezioni nel modo atteso. Anche in questo caso viene collegato il book al pannello.