Vai al contenuto

Impariamo Xojo: Utilizzare le WebDialog

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: