Procedure collegate a Box
copia linkTrascrizione
Abbiamo preparato insieme una nuova videata Situazione ed è arrivato il momento di testarla. Ho avviato l’applicazione e sono già posizionato nella videata.
Beh devo dire che il risultato era quello atteso, ovvio, migliorando gli Stili visuali applicando font specifici, si potrebbe migliorare l’aspetto grafico… ma a noi, in questo momento, interessano le funzionalità.
Proviamo ad applicare un appartamento. Ad esempio, Apart Student. Bè, il libro centrale viene ristampato e le informazioni mostrati sembrano corrette.
Torniamo a mostrare tutti gli appartamenti!! Purtroppo, non si riesce, non si riesce ad impostare il valore VUOTO al campo Appartamento. Questa sarebbe una modifica da apportare. Sinceramente, ne vedo anche altre oltre ad IdAppartamento che deve poter essere NULL:
Proviamo a modificare il progetto per ottenere anche questi risultati.
Per consentire il valore NULL al campo di pannello idAppartamento è necessario che il campo idAppartamento della tabella IMDB sia Opzionale.
Doppio clic sul campo idAppartamento della tabella IMDB: come notate non è possibile modificare il flag Opzionale, in quanto il campo possiede un dominio associato, nello specifico il Modello DO.
(Per un recap dell’argomento domini vi rimando ad una lezione del Tutorial Applicazioni Web, precisamente nella sezione Lavorare con i database, Creazione dominio)
Non è consigliabile togliere il dominio, meglio apportare una piccola modifica al dominio stesso. Quindi, nell’Albero di progetto, Libreria Database, Modello DO, doppio clic.
Basta impostare il flag Permetti modifica flag OPZIONALE e confermare: questa modifica consente di decidere direttamente nelle impostazioni del campo idAppartamento se abilitare o disabilitare il flag Opzionale.
Quindi, tornando alla definizione del campo idAppartamento, della tabella IMDB, possiamo notare come il flag Opzionale è utilizzabile. Quindi, un clic sulla voce Opzionale e disattiviamo il flag su Chiave Primaria. Confermo.
La seconda richiesta era la visualizzazione, all’interno della card, del Nome e della Località dell’appartamento.
Passiamo in anteprima del report, Report Situazione.
L’altezza della box Nominativo potrebbe essere ridotta per far spazio ad una nuova box di Appartamento.
Facciamo un doppio clic sulla box Nominativo, ed impostiamo una altezza inferiore, altezza 5 millimetri, quindi confermiamo.
Per aggiungere una nuova box potremmo trascinare il campo dalla Master Query del Report, il problema è che l’informazione richiesta non è presente nella Master Query, e non è possibile includerla con operazioni di Join tra tabelle in quanto il report è Documentale.
Quindi, come possiamo procedere? Iniziamo creando una box con del testo e poi vediamo come implementare la modifica.
Sulla toolbar di progettazione, scegliamo il pulsante relativo all’Etichetta e disegniamo un rettangolo.
Assegniamo come identificativo Appartamento.
Doppio clic subito sull’oggetto Appartamento. andiamo ad impostare:
Da Sinistra: 3 millimetri
Dall’alto: 10 millimetro
Larghezza: 39 millimetri
Altezza: 4 millimetri
Ridimensionamento Orizzontale: Adatta
Stile Visuale: Situazione H5
Potremmo prevedere la modifica dello span contenuto, nella fase di stampa: precisamente nell’evento Before Formatting della Sezione Dettaglio.
Sezione Dettaglio, Tasto Destro, Eventi, Vai a Before Formatting.
In questo evento possiamo leggere qualsiasi valore del record in stampa con la logica di Valore Campo report
Anche questa richiesta dovrebbe essere a posto. Possiamo passare alla modifica del Button Dettaglio. In Button Dettaglio modifichiamo un attimo lo span contenuto, lasciamo solo la parola Dettaglio.
La funzionalità da implementare per questa box è il clic, il clic con procedura collegata: normalmente gli elementi presenti in un libro non solo cliccabili, ma è possibile abilitare la funzionalità modificando lo stile Visuale associato. Nel nostro caso, lo stile visuale in Situazione Button.
Libreria Database, Default Report Style, Situazione, Button è lo stile che scegliamo.
Attiviamo il flag Cliccabile e confermiamo.
Il metodo di associazione procedura ad un oggetto box è identico a quello per un campo di pannello, quindi: etichetta Button Dettagli, tasto destro, Aggiungi Procedura.
All’interno di procedure attaccate ad oggetti box, è sempre possibile recuperare l’intero record o l’intero documento nel caso di report documentali. Vuole quindi dire che potremmo utilizzare Valore campo report per conoscere qualsiasi campo presente nella Master Query, od anche recuperare l’intero documento sotteso al report.
Beh devo dire che il risultato era quello atteso, ovvio, migliorando gli Stili visuali applicando font specifici, si potrebbe migliorare l’aspetto grafico… ma a noi, in questo momento, interessano le funzionalità.
Proviamo ad applicare un appartamento. Ad esempio, Apart Student. Bè, il libro centrale viene ristampato e le informazioni mostrati sembrano corrette.
Torniamo a mostrare tutti gli appartamenti!! Purtroppo, non si riesce, non si riesce ad impostare il valore VUOTO al campo Appartamento. Questa sarebbe una modifica da apportare. Sinceramente, ne vedo anche altre oltre ad IdAppartamento che deve poter essere NULL:
- Sotto al nominativo, all’interno della card, dovrebbe comparire il nome e la località dell’appartamento
- Button Dettagli: dovrebbe essere cliccabile e consentire la visualizzazione della scheda di prenotazione
- Elenco Servizi: l’icona check dovrebbe essere visibile solo sull’elemento selezionato.
Proviamo a modificare il progetto per ottenere anche questi risultati.
Per consentire il valore NULL al campo di pannello idAppartamento è necessario che il campo idAppartamento della tabella IMDB sia Opzionale.
Doppio clic sul campo idAppartamento della tabella IMDB: come notate non è possibile modificare il flag Opzionale, in quanto il campo possiede un dominio associato, nello specifico il Modello DO.
(Per un recap dell’argomento domini vi rimando ad una lezione del Tutorial Applicazioni Web, precisamente nella sezione Lavorare con i database, Creazione dominio)
Non è consigliabile togliere il dominio, meglio apportare una piccola modifica al dominio stesso. Quindi, nell’Albero di progetto, Libreria Database, Modello DO, doppio clic.
Basta impostare il flag Permetti modifica flag OPZIONALE e confermare: questa modifica consente di decidere direttamente nelle impostazioni del campo idAppartamento se abilitare o disabilitare il flag Opzionale.
Quindi, tornando alla definizione del campo idAppartamento, della tabella IMDB, possiamo notare come il flag Opzionale è utilizzabile. Quindi, un clic sulla voce Opzionale e disattiviamo il flag su Chiave Primaria. Confermo.
La seconda richiesta era la visualizzazione, all’interno della card, del Nome e della Località dell’appartamento.
Passiamo in anteprima del report, Report Situazione.
L’altezza della box Nominativo potrebbe essere ridotta per far spazio ad una nuova box di Appartamento.
Facciamo un doppio clic sulla box Nominativo, ed impostiamo una altezza inferiore, altezza 5 millimetri, quindi confermiamo.
Per aggiungere una nuova box potremmo trascinare il campo dalla Master Query del Report, il problema è che l’informazione richiesta non è presente nella Master Query, e non è possibile includerla con operazioni di Join tra tabelle in quanto il report è Documentale.
Quindi, come possiamo procedere? Iniziamo creando una box con del testo e poi vediamo come implementare la modifica.
Sulla toolbar di progettazione, scegliamo il pulsante relativo all’Etichetta e disegniamo un rettangolo.
Assegniamo come identificativo Appartamento.
Doppio clic subito sull’oggetto Appartamento. andiamo ad impostare:
Da Sinistra: 3 millimetri
Dall’alto: 10 millimetro
Larghezza: 39 millimetri
Altezza: 4 millimetri
Ridimensionamento Orizzontale: Adatta
Stile Visuale: Situazione H5
Potremmo prevedere la modifica dello span contenuto, nella fase di stampa: precisamente nell’evento Before Formatting della Sezione Dettaglio.
Sezione Dettaglio, Tasto Destro, Eventi, Vai a Before Formatting.
In questo evento possiamo leggere qualsiasi valore del record in stampa con la logica di Valore Campo report
Event BeforeFormatting() {
String myId =””
String labelAppartamento = “”
//Attenzione che Intellisense propone diversi idAppartamento; noi utilizziamo quello relativo al libro con la scritta Valore Campo Report
myID = LibroSituazione.idAppartamento
//Con il costrutto SELECT INTO VARIABLES recuperiamo i valori dal DB
Select into variables
vNome = Appartamenti.Nome
vDenominazione = Localita.Denominazione
From Appartamenti OUTER JOIN Localita
Where Appartamento.id = myId
//Passiamo alla composizione della stringa da applicare allo span
labelAppartamento = vNome + “ (“ + vDenominazione + “)”
//Trascino lo span dall’albero di progetto
spanAppartamento.text = labelAppartamento
}
Anche questa richiesta dovrebbe essere a posto. Possiamo passare alla modifica del Button Dettaglio. In Button Dettaglio modifichiamo un attimo lo span contenuto, lasciamo solo la parola Dettaglio.
La funzionalità da implementare per questa box è il clic, il clic con procedura collegata: normalmente gli elementi presenti in un libro non solo cliccabili, ma è possibile abilitare la funzionalità modificando lo stile Visuale associato. Nel nostro caso, lo stile visuale in Situazione Button.
Libreria Database, Default Report Style, Situazione, Button è lo stile che scegliamo.
Attiviamo il flag Cliccabile e confermiamo.
Il metodo di associazione procedura ad un oggetto box è identico a quello per un campo di pannello, quindi: etichetta Button Dettagli, tasto destro, Aggiungi Procedura.
All’interno di procedure attaccate ad oggetti box, è sempre possibile recuperare l’intero record o l’intero documento nel caso di report documentali. Vuole quindi dire che potremmo utilizzare Valore campo report per conoscere qualsiasi campo presente nella Master Query, od anche recuperare l’intero documento sotteso al report.
In questo caso vorremmo aprire la videata Prenotazioni passando come parametro il documento:
void ButtonDettagli() {
//Dichiariamo una variabile oggetto
PRENOTAZIONE docPrenotazione = ReportSituazione.document
If (docPrenotazione != null) {
Prenotazioni.show()
Prenotazioni.ApriPer(docPrenotazione)
}
}
Non ci rimane che l’ultima richiesta, l’ultima richiesta, precisamente l’icona presente nel Libro Servizi dovrebbe comparire solo sull’elemento selezionato.
Per ottenere questo risultato dobbiamo, in qualche modo, memorizzare l’elemento selezionato o almeno il valore del campo ID che è un valore univoco. Aggiungiamo una variabile globale alla videata Videata: Albero di progetto, Videata Situazione, Tasto destro, Aggiungi Variabile Globale.
Assegno come identificativo idServizioSelezionato ed imposto come tipo Dati Character.
Valorizziamo e testiamo la variabile nell’evento di formattazione della sezione Dettaglio del libro servizi: Libro Servizi, Report, Sezione Dettaglio, tasto destro, Aggiungi Before Formatting.
Vi ricordo che l’evento scatta per ogni record stampato. Quindi noi potremmo, in primis, verificare il valore della variabile e, in caso fosse NULL, impostarla all’ID del record in stampa. Successivamente, controllare la variabile con l’ID in stampa per capire se mostrare o nascondere l’icona.
Event Dettaglio.OnBeforeFormatting() {
If (idServizioSelezionato.length = 0) {
idServizioSelezionato = LibroServizi.Report.ID
}
//CON QUESTO ABBIAMO FATTO LA VALORIZZAZIONE INIZIALE
//ORA CONTROLLIAMO QUANTO VALE PER CAPIRE SE MOSTRARE L’IMMAGINE
If (idServizioSelezionato = LibroServizi.Report.ID) {
redCheck.visible = true
}
Else {
redCheck.visible = false
}
}
Con questo evento sicuramente l’immagine comparirà sul primo record e verrà nascosta nei record successivi. Però, consentendo il click sulla box Denominazione, potremmo modificare il valore idServizioSelezionato per simulare il cambio selezione.
Doppio clic sulla box Denominazione ed attiviamo il flag Cliccabile presente nelle proprietà visuali. (Come notate è possibile rendere cliccabile una box sia con l’impostazione sullo stile visuale, sia direttamente nella box).
A questo punto aggiungiamo la procedura: box Denominazione, tasto destro, Aggiungi Procedura. Nella procedura modifichiamo il valore idServizioSelezionato prendendo il valore report del record in stampa, precisamente, trascino il valore dalla Master Query.
Void Denominazione() {
idServizioSelezionato = LibroServizi.Report.ID
//Non basta modificare il valore della variabile, dobbiamo anche comunicare al libro di ristamparsi
//Abbiamo bisogno che venga rieseguita anche la query sul database ? Direi di no, nessun record è cambiato, quindi basta un refresh
LibroServizi.refresh(1,-1)
}
Abbiamo corretto ed implementato nuove funzionalità alla videata Situazione, funzionalità che sono ovviamente da testare, quindi possiamo benissimo compilare: tasto F5 o menu Modifica Compila.
PAUSA
Applicazione avviata, Offerte, Situazione.
Come all’inizio, applichiamo un appartamento, Apart Student, per vedere se la parte centrale viene ristampata correttamente.
Proviamo a importare il valore NULL, questa volta è possibile per l’appartamento. Effettivamente vengono stampati tutti gli appartamenti con l’indicazione dell’appartamento.
Il Libro Servizi? Bè, anche il Libro Servizi sembra corretto: un clic, cambia la selezione ed effettivamente cambia anche l’icona per l’elemento scelto.
Ultima modifica: 15/06/2021 / Validità: da 21.0.8100