Italian [RISOLTO] B4A - MsgboxAsync visualizzabile solo la prima volta oppure checkbox per non mostrarla più in futuro

3uowiS

Active Member
Licensed User
Buonasera, come da titolo vorrei far si che una MsgboxAsync sia visibile solo la prima volta che si accede all'activity, quindi per farlo penso di dover mettere una variabile che cambia una volta visualizzata la msgbox e quindi salvarla su un file txt da richiamare quando si apre l'activity in un secondo tempo, giusto?
Oppure esiste un modo più pratico?

In alternativa mi piacerebbe forse di più mettere la classica spunta "Non mostrarmi più in futuro", ma per farlo devo creare manualmente una msgbox tramite panel, label e checkbox in tutte le activity e anche in questo caso devo salvare un file di testo, giusto?
 

Star-Dust

Expert
Licensed User
Longtime User
B4X:
Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    Activity.LoadLayout("Layout1")
    If FirstTime Then
        ' ....
        '  MsgboxAsync  
    End If
End Sub
 

3uowiS

Active Member
Licensed User
B4X:
Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    Activity.LoadLayout("Layout1")
    If FirstTime Then
        ' ....
        '  MsgboxAsync
    End If
End Sub
Ma così se apro l'app dopo averla chiusa non me lo mostra nuovamente?
 

Star-Dust

Expert
Licensed User
Longtime User
Ma così se apro l'app dopo averla chiusa non me lo mostra nuovamente?
Allora dovevi scrivere che si doveva vedere solo al primo Avvio. Non solo la prima volta che si accede all'activity

B4X:
Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    Activity.LoadLayout("Layout1")
    If File.Exists(File.DirInternal,"messaggio.txt")= False Then
        ' ....
        '  MsgboxAsync
        File.WriteString(File.DirInternal,"messaggio.txt", "fatto")
    End If
End Sub
 

3uowiS

Active Member
Licensed User
Allora dovevi scrivere che si doveva vedere solo al primo Avvio. Non solo la prima volta che si accede all'activity

B4X:
Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    Activity.LoadLayout("Layout1")
    If File.Exists(File.DirInternal,"messaggio.txt")= False Then
        ' ....
        '  MsgboxAsync
        File.WriteString(File.DirInternal,"messaggio.txt", "fatto")
    End If
End Sub
Scusa, hai ragione. Mi sono espresso male. Quindi come pensavo devo salvare un file per ogni activity contenente una msgbox da visualizzare al primo avvio.

Mentre eventualmente volessi mettere la checkbox "non mostrare più in futuro" devo creare tutto manualmente, giusto? Meglio evitare per non appesantire troppo?
 

Star-Dust

Expert
Licensed User
Longtime User
Scusa, hai ragione. Mi sono espresso male. Quindi come pensavo devo salvare un file per ogni activity contenente una msgbox da visualizzare al primo avvio.

Mentre eventualmente volessi mettere la checkbox "non mostrare più in futuro" devo creare tutto manualmente, giusto? Meglio evitare per non appesantire troppo?
Si dovresti mettere una finestra di dialogo personalizzata. Il codice sarà più lungo. Appesantire...ci sono codici di migliaia di righe... dipende il punto di vista
 

LucaMs

Expert
Licensed User
Longtime User
Scusa, hai ragione. Mi sono espresso male. Quindi come pensavo devo salvare un file per ogni activity contenente una msgbox da visualizzare al primo avvio.

Mentre eventualmente volessi mettere la checkbox "non mostrare più in futuro" devo creare tutto manualmente, giusto? Meglio evitare per non appesantire troppo?
Si può fare in mille modi, graficamente. Resta il fatto che devi salvare la scelta dell'utente su un file (per questo, usa KeyValueStore2, facile da usare, e unico oggetto, non serve un file per ogni Activity, crea un oggetto KVS2 pubblico, ad esempio in un modulo di codice o nell'Activity Main).

Graficamente, crei un layout con una Label e una CheckBox e lo carichi in un Panel, da mostrare all'occorrenza.
 
Last edited:
Top