Autore Topic: Message (box) non bloccante  (Letto 606 volte)

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Message (box) non bloccante
« il: 28 Marzo 2013, 19:49:51 »
Come e' prassi il message (message box) blocca l'esecuzione del programma principale fino alla pressione degli opportuni pulsanti.
Mi chiedevo: esiste un modo per informare l'utente senza bloccare il programma in attesa?

ovvero, all'avvio mi connetto al DB e (se tutto va bene) notifico all'utente che la connessione e' riuscita, ma nel frattempo eseguo le query e carico i dati nel form.

Poi se l'utente preme il pulsante del message box mezz'ora dopo ho gia' caricato tutto e sono pronto.

in VB me lo ero fatto con un form non modale e un timer che chiudeva in automatico dopo uno certo tempo .... ma sono speranzoso che qualcosa sia gia' presente in GB ;-)
se corri, morirai stanco (motto degli sniper)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.269
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Message (box) non bloccante
« Risposta #1 il: 28 Marzo 2013, 19:58:12 »
A mio modesto avviso, se vuoi una cosa veloce e semplice, creati una finestra/Form con la Classe Window:

Codice: gambas [Seleziona]

Public Sub Button1_Click()

  Dim w As Window   ' oppure te la dichiari "globale" al di fuori della routine

   With w = New Window
     .X = 'dove vuoi tu
     .Y = ' dove vuoi tu
     .W = ' come vuoi tu
     .H = ' come vuoi tu
     .Show
   End With

End


Ovviamente nella finestra - simil-Form - ci puoi inserire tutti gli oggetti che vuoi.
Esempio:
Codice: gambas [Seleziona]

Private w as Window
Private bt As Button


Public Sub Button1_Click()

 With w = New Window
  .X = 100
  .Y = 100
  .W = 200
  .H = 100
  .Background = Color.Yellow
  .Show
 End With

With bt = New Button(w) As "bt"
  .W = 60
  .H = 30
  .X = 30
  .Y = 60
  .Caption = "Chiudi !"
End With

End


Public Sub bt_Click()
  
' Chiude la finestra-Form:
   w.Close
  
End







Ci sarebbe, poi, anche una modalità con l'integrazione del linguaggio JavaScript:
http://www.gambas-it.org/smf/index.php?topic=2396.msg27468#msg27468
ma ti vai a complicare un po' la vita.  ;D .......
« Ultima modifica: 08 Agosto 2013, 20:24:05 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.269
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Message (box) non bloccante
« Risposta #2 il: 08 Agosto 2013, 20:17:35 »
...non c'è, in vero, limite alla complicazione della propria vita  ;D , perché volendo potrai crearti una finestra utilizzando direttamente le funzioni esterne del API di SDL:

http://www.gambas-it.org/wiki/index.php?title=Creare_una_finestra_mediante_le_funzioni_del_API_di_SDL


« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Re: Message (box) non bloccante
« Risposta #3 il: 09 Agosto 2013, 12:33:24 »
no no ... mi e' bastato il tuo codice d'esempio .... a complicarmi la vita ci penso gia' da solo ;-)
se corri, morirai stanco (motto degli sniper)