Creazione procedura di videata
copia linkTrascrizione
Analizziamo come una parte delle logica operativa, necessariamente sia definita all’interno dell’interfaccia attraverso procedure , procedure che possono essere locali a livello di videata o globali all’intera applicazione.
La procedure globali potranno essere richiamate in qualsiasi punto del vostro codice, a differenza delle procedure locali che essendo interne alla videata, l’esecuzione richiede che l’oggetto videata sia in memoria, quindi aperto.
La prima differenza sta proprio in questo concetto: la procedura globale è richiamabile sempre e nel suo ciclo di vita non ha bisogno di nient’altro, a differenza della procedura locale che necessità dell’oggetto padre in cui è creata.
Facciamo un esempio di entrambi: iniziamo con la procedura interna a una videata: nella videata Appartamenti vorrei una procedura, che abbia un parametro di ingresso opzionale , un documento Appartamento, e se presente posizioni il pannello sul documento e venga mostrato in dettaglio.
Albero di progetto: Videata Appartamenti -> Tasto destro -> Aggiungi Procedura.
Public void ApriPer(optional Appartamento docAppartamento) {
If (docAppartamento != null) {
//Cerchiamo il documento nel pannello
Appartamenti.findDocument(docAppartamento)
}
}
Siccome come questa procedura è impostata come Public, significa che possiamo richiamarla, sia all’interno della videata, sia all’esterno, ma ricordiamoci di una cosa: richiamando la procedura dall’esterno se la videata è aperta tutto bene, se la videata fosse chiusa per forza di cosa prima automaticamente viene aperte e successivamente eseguita la procedura.
Potrebbe essere utile richiamare questa procedura da un’altra videata: quella delle Prenotazioni: aggiungiamo nel dettaglio delle Prenotazioni, un Command Button chiamiamolo Scheda: attenzione quali macro operazioni vorremmo eseguire a seguito del clic sul Command Button?
Vorremmo recuperare il documento presente nel pannello, controllare se la proprietà IdAppartamento è valorizzata ed in caso affermativo caricare dal database un documento Appartament; a quel punto aprire la videata Appartamenti e passarvi il documento da mostrare.
Andiamo per gradi: abbiamo un metodo che carica un documento Appartamento partendo dalla chiave primaria? No, allora prima di tutto creiamo un metodo che dato un ID carichi e ritorni un documento; il posto ideale dove creare il metodo quale sarebbe? Nella struttura del documento stesso: nel nostro caso Appartamento
. Albero di progetto, documento Appartamento, tasto destro Aggiungi Procedura.
Public Appartamento loadDocument(string PrimaryKey) {
}
Se lasciamo il metodo così, siamo obbligati a richiamarlo utilizzando una istanza del documento, cioè dobbiamo creare una variabile, instanziarla etc: se invece trasformiamo il metodo in statico, potremo richiamarlo semplicemente con il nome della classe dove il metodo è contenuto: cambio.
Public static Appartamento loadDocument(string PrimaryKey) {
Appartamento document = null;
//ISTRUZIONE DI CARICAMENTO DOCUMENTALE
Return document;
}
Completeremo questo metodo più avanti, ora torniamo alla videata Prenotazioni e aggiungiamo una procedura in risposta al clic delCommand Button Scheda: ci si posiziona sul Command Button in interfaccia, tasto destro -> Aggiungi Procedura: questa procedura verrà richiamata quando si farà clic sul Command Button.
Cosa abbiamo bisogno? In primis ci serve il documento Prenotazione presente nel pannello: definiamo una variabile di tipo Prenotazione.
Prenotazione docPrenotazione = PRENOTAZIONI.document
Per catturare il documento selezionato nel pannello, basta chiederlo all’oggetto pannello. Document.
Ci serve inoltre un documento di tipo Appartamento: altra variabile.
Apartamento docAppartamento = null
Ora iniziamo il vero codice.
If (docPrenotazione != null) {
If (length(docPrenotazione.IdAppartamento) != 0 ) {
//Carico il documento Appartamento
docAppartamento = APPARTAMENTO.loadDocument(docPrenotazione.iDAppartamento)
}
}
If (docAppartamento != null) {
//Apriamo la videata Appartamenti
Appartamenti.show();
Appartamenti.ApriPer(docAppartamento)
}
Come notato abbiamo creato 2 procedure locali con la caratteristica che una chiama l’altra: per poter chiamare la ApriPer pero’ ho scritto Appartamenti.show perché essendo interna alla videata, la videata deve essere aperta; se non avessi scritto l’istruzione di apertura? andava in errore? per niente, il framework avrebbe aperto la videata automaticamente.
Il metodo che abbiamo visto è il metodo per passare dei parametri durante l’apertura di una videata, semplicemente si apre la videata con Show e successivamente si richiama una procedura pubblica di videata che abbia dei parametri.
La procedure globali potranno essere richiamate in qualsiasi punto del vostro codice, a differenza delle procedure locali che essendo interne alla videata, l’esecuzione richiede che l’oggetto videata sia in memoria, quindi aperto.
La prima differenza sta proprio in questo concetto: la procedura globale è richiamabile sempre e nel suo ciclo di vita non ha bisogno di nient’altro, a differenza della procedura locale che necessità dell’oggetto padre in cui è creata.
Facciamo un esempio di entrambi: iniziamo con la procedura interna a una videata: nella videata Appartamenti vorrei una procedura, che abbia un parametro di ingresso opzionale , un documento Appartamento, e se presente posizioni il pannello sul documento e venga mostrato in dettaglio.
Albero di progetto: Videata Appartamenti -> Tasto destro -> Aggiungi Procedura.
Public void ApriPer(optional Appartamento docAppartamento) {
If (docAppartamento != null) {
//Cerchiamo il documento nel pannello
Appartamenti.findDocument(docAppartamento)
}
}
Siccome come questa procedura è impostata come Public, significa che possiamo richiamarla, sia all’interno della videata, sia all’esterno, ma ricordiamoci di una cosa: richiamando la procedura dall’esterno se la videata è aperta tutto bene, se la videata fosse chiusa per forza di cosa prima automaticamente viene aperte e successivamente eseguita la procedura.
Potrebbe essere utile richiamare questa procedura da un’altra videata: quella delle Prenotazioni: aggiungiamo nel dettaglio delle Prenotazioni, un Command Button chiamiamolo Scheda: attenzione quali macro operazioni vorremmo eseguire a seguito del clic sul Command Button?
Vorremmo recuperare il documento presente nel pannello, controllare se la proprietà IdAppartamento è valorizzata ed in caso affermativo caricare dal database un documento Appartament; a quel punto aprire la videata Appartamenti e passarvi il documento da mostrare.
Andiamo per gradi: abbiamo un metodo che carica un documento Appartamento partendo dalla chiave primaria? No, allora prima di tutto creiamo un metodo che dato un ID carichi e ritorni un documento; il posto ideale dove creare il metodo quale sarebbe? Nella struttura del documento stesso: nel nostro caso Appartamento
. Albero di progetto, documento Appartamento, tasto destro Aggiungi Procedura.
Public Appartamento loadDocument(string PrimaryKey) {
}
Se lasciamo il metodo così, siamo obbligati a richiamarlo utilizzando una istanza del documento, cioè dobbiamo creare una variabile, instanziarla etc: se invece trasformiamo il metodo in statico, potremo richiamarlo semplicemente con il nome della classe dove il metodo è contenuto: cambio.
Public static Appartamento loadDocument(string PrimaryKey) {
Appartamento document = null;
//ISTRUZIONE DI CARICAMENTO DOCUMENTALE
Return document;
}
Completeremo questo metodo più avanti, ora torniamo alla videata Prenotazioni e aggiungiamo una procedura in risposta al clic delCommand Button Scheda: ci si posiziona sul Command Button in interfaccia, tasto destro -> Aggiungi Procedura: questa procedura verrà richiamata quando si farà clic sul Command Button.
Cosa abbiamo bisogno? In primis ci serve il documento Prenotazione presente nel pannello: definiamo una variabile di tipo Prenotazione.
Prenotazione docPrenotazione = PRENOTAZIONI.document
Per catturare il documento selezionato nel pannello, basta chiederlo all’oggetto pannello. Document.
Ci serve inoltre un documento di tipo Appartamento: altra variabile.
Apartamento docAppartamento = null
Ora iniziamo il vero codice.
If (docPrenotazione != null) {
If (length(docPrenotazione.IdAppartamento) != 0 ) {
//Carico il documento Appartamento
docAppartamento = APPARTAMENTO.loadDocument(docPrenotazione.iDAppartamento)
}
}
If (docAppartamento != null) {
//Apriamo la videata Appartamenti
Appartamenti.show();
Appartamenti.ApriPer(docAppartamento)
}
Come notato abbiamo creato 2 procedure locali con la caratteristica che una chiama l’altra: per poter chiamare la ApriPer pero’ ho scritto Appartamenti.show perché essendo interna alla videata, la videata deve essere aperta; se non avessi scritto l’istruzione di apertura? andava in errore? per niente, il framework avrebbe aperto la videata automaticamente.
Il metodo che abbiamo visto è il metodo per passare dei parametri durante l’apertura di una videata, semplicemente si apre la videata con Show e successivamente si richiama una procedura pubblica di videata che abbia dei parametri.
Ultima modifica: 10/05/2022 / Validità: da 20.5.8000