Utilizzando Xojo Web, spesso capita di dover aver bisogno di raccogliere dall’utente delle scelte con una finestra modale. Questo post mostra come sia semplice raccogliere le informazioni inserite (se inserite).
Poniamo di avere un progetto Web e di voler far inserire delle informazioni, che magari dobbiamo controllare o registrare su un db.
Per semplicità, diciamo che vogliamo inserire in una label il valore scritto dall’utente e se ha indicato che l’informazione è importante mostrarla in grassetto.
Abbiamo quindi la nostra pagina con una label che rappresenta l’informazione e un pulsante per richiedere le informazioni all’utente:
La finestra modale (webDialog1) richiede le informazioni che desideriamo:
Vogliamo anche gestire il fatto che l’utente può annullare il comando. Per cui aggiungiamo una proprietà ok as boolean alla webDialog1 e scriviamo il codice: per il pulsante Annulla scriviamo nell’evento Action:
Self.close |
Per il pulsante Salva scriviamo nell’evento Action:
ok=true Self.close |
Ovviamente in un uso reale prima di accettare i dati questi vanno verificati in modo da capire se sono compatibili. O si può anche tenere il pulsante Salva disabilitato in partenza e che si abilita solo se l’utente scrive qualcosa.
Vediamo ora cosa scrivere nell’evento Action del pulsante che deve richiamare la Dialog:
//Creo la dialog Dim md As New WebDialog1 //Aggiungo la gestione della chiusura della dialog AddHandler md.dismissed, AddressOf FaiQualcosaConLaDialog //Mostro la dialog md.Show |
Resta da definire il metodo FaiQualcosaConLaDialog.Questo metodo gestisce l’evento Dimissed della Dialog per cui ha come parametro una WebDialog (l’oggetto base) per cui la definiamo come:
Sub FaiQualcosaConLaDialog(w as WebDialog) //Controllo se la dialog è quella che mi aspetto //Magari sfruttando questo posso usare un metodo unico // per diverse dialog If w IsA WebDialog1 Then //Ottengo il riferimento alla WebDialog1 Dim ww As WebDialog1=WebDialog1(w) If ww.ok Then //L'utente ha premuto il pulsante Salva // per cui posso utilizzare i dati inseriti Label1.Text=ww.TextField1.Text //stImportante è uno stile che evidenzia in qualche modo // il testo inserito Label1.Style=If(ww.Checkbox1.Value, stImportante, Nil) End If End If End Function |
A questo punto posso lanciare la mia applicazione:
Premo il pulsante e inserisco i dati:
Premo Salva e osservo il risultato: