Autore Topic: MessageBox non è sopra, ma sotto la form ToolBox che lo genera.  (Letto 1200 volte)

Offline clabe69

  • Gambero
  • **
  • Post: 50
    • Mostra profilo
Salve; nel mio progetto, c'è una form base "FMain" FullScreen ed una form ToolBox "Archivio".
Quando è aperta la Archivio, in seguito a determinate condizioni, potrebbe aprire un MessageBox riguardante Archivio.
Questa MessageBox non si apre in primo piano, sopra Archivio, ma sotto; bloccando tutto perchè nascosta.
Per sbloccare la situazione devo premere Ctrl + Alt + Esc che mi fà riaffiorare il MessageBox.

Quando usavo Ubuntu 10.10 Maveric questo non succedeva, i MessageBox si aprivano sopra la form che li aveva generati; ora, che per rimanere al passo con i tempi, e  non dover usare Unity, sono passato a Mint 13 ho questo problema.
Potete aiutarmi a risolverlo?
Grazie.

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re: MessageBox non è sopra, ma sotto la form ToolBox che lo genera.
« Risposta #1 il: 07 Novembre 2012, 15:22:56 »
Potrebbe succedere perchè la procedura che apre la Messagebox risiede in FMain e non in Archivio. E' una mia ipotesi, bisognerebbe dare una occhiata al listato.
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: MessageBox non è sopra, ma sotto la form ToolBox che lo genera.
« Risposta #2 il: 07 Novembre 2012, 17:02:15 »
Nell'immediato, ossia nel frattempo che non si risolve il problema diversamente, potresti nascondere il Form (se non ho capito male è il Form secondario "Archivio") che copre il Message.Box, e poi farlo riapparire nuovamente:
Codice: gambas [Seleziona]

     Archivio.Hide
       Message.Info("Alibaba e i 40 ladroni")
     Archivio.Show
« Ultima modifica: 07 Novembre 2012, 23:14:34 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 Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: MessageBox non è sopra, ma sotto la form ToolBox che lo genera.
« Risposta #3 il: 07 Novembre 2012, 20:10:04 »
È un bug da segnalare agli sviluppatori perchè questo non è il corretto funzionamento dell'oggetto in esame.

Offline clabe69

  • Gambero
  • **
  • Post: 50
    • Mostra profilo
Re: MessageBox non è sopra, ma sotto la form ToolBox che lo genera.
« Risposta #4 il: 08 Novembre 2012, 15:53:19 »
Citazione
Potrebbe succedere perchè la procedura che apre la Messagebox risiede in FMain e non in Archivio
No, la procedura che apre il messagebox è su Archivio.
Lo stesso programma girava correttamente su Ubuntu 10.10.

Citazione
potresti nascondere il Form che copre il Message.Box
Ho provato Archivio.Hide, ma non c'è il massagebox, devo usare sempre Ctrl + Alt + Esc, e comunque non è bello far sparire e poi far riapparire una finestra così, non trovi?

Questo è il codice che stà su Archivio e che genera il messagebox:
Codice: gambas [Seleziona]

PUBLIC SUB Timer1_Timer()

  DIM sql AS String
 
  Timer1.Enabled = FALSE
  sql = "SELECT id FROM tmag WHERE scorta <= qmin"
  MyRes = modConn.$Conn.Exec(sql)
  IF MyRes.Available THEN
    SELECT Message.info("Attenzione il prodotto " & MyRes!id & " stà finendo")
      CASE 1
        Timer1.Delay = 10000
        Timer1.Enabled = TRUE
    END SELECT
  ENDIF

END


A titolo informativo, ho provato con Gambas3, funziona in parte, cioè con il messagebox, vengono visualizzati anche i pannelli della scrivania, che essendo FMain FullScreen, non dovrebbero vedersi.
« Ultima modifica: 08 Novembre 2012, 16:11:58 da clabe69 »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: MessageBox non è sopra, ma sotto la form ToolBox che lo genera.
« Risposta #5 il: 09 Novembre 2012, 01:49:50 »
....comunque non è bello far sparire e poi far riapparire una finestra così, non trovi?
Condivido, ma - appunto - io ho precisato che nell'immediatezza, cioè fino a quando non risolvevi la questione definitivamente, per tentare di far funzionare l'applicativo, potevi nel frattempo usare quell'accorgimento (che a me invece funziona).

Comunque...
« Ultima modifica: 09 Novembre 2012, 01:57:56 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.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: MessageBox non è sopra, ma sotto la form ToolBox che lo genera.
« Risposta #6 il: 05 Marzo 2013, 12:43:32 »
In alternativa potresti generare una finestra del tipo MessageBox mediante JavaScript. In particolare, nella cartella "Dati" del progetto crei un file HTML, che chiamiamo per esempio: file_message.html, avente il seguente codice:
Codice: html [Seleziona]

&lt;HTML>
  &lt;HEAD>

  &lt;SCRIPT type="text/javascript">
      alert("Alibaba ed i 40 ladroni");
  &lt;/script>

  &lt;/head>
 &lt;/html>


mentre nel codice Gambas poni - tra gli altri comandi - anche il richiamo a quel codice html mediante l'oggetto WebView. Bisognerà, dunque, attivare il componente gb.qt4.webkit.
Facciamo un esempio semplice e pratico:
Codice: gambas [Seleziona]

Private wv As WebView


Public Sub Button1_Click()

   With wv = New WebView(Me)
' Qui richiamiamo il file HTML:
     .Url = "file_message.html"
   End With
 
End

Tieni conto, comunque, che l'apertura del MessageBox mediante questa soluzione non blocca il normale processo del codice Gambas; impedisce però l'azione del mouse sugli oggetti posti sul Form sino a quando la finestra del MessageBox non sarà stata chiusa.
« Ultima modifica: 05 Marzo 2013, 13:15:00 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. »