Gambas-it

Archivi (sola lettura) => Programmazione (Gambas 2) => Topic aperto da: swsooue - 26 Agosto 2010, 14:14:56

Titolo: [RISOLTO] metodo ShowModal per chiamare un nuovo form
Inserito da: swsooue - 26 Agosto 2010, 14:14:56
Ciao a tutti,

dal mio form principale, quando un utente clicca su un pulsante devo aprire un nuovo form, per cui ho fatto così:

Codice: [Seleziona]
PUBLIC SUB Pulsante_Click()

MACnew.ShowModal

END

Il nuovo form si apre regolarmente, ma se vado con il mouse a cliccare su un altro pulsante del form principale, questo funziona !!!
Io vorrei invece che chiamando il nuovo form, il form principale cessasse di funzionare finchè il nuovo form non è chiuso.
Il metodo ShowModal infatti pensavo facesse questo, ma poi ho capito che non è proprio così
(io infatti facevo il paragone con Visual Basic "MACnew.Show vbModal")

Come posso fare ??

Grazie
Gigi
Titolo: Re: metodo ShowModal per chiamare un nuovo form
Inserito da: Ceskho - 26 Agosto 2010, 14:43:50
Anche ShowDialog da lo stesso errore?

Ho notato che fai continuamente riferimento a Visual Basic. TI prego abbandona questa convinzione. Gambas è Gambas e VB è VB.
Titolo: Re: metodo ShowModal per chiamare un nuovo form
Inserito da: Berserker79 - 26 Agosto 2010, 20:39:30
Strano, perchè con showmodal si ottieno proprio quello che serve a te.
Che versione hai di gambas???
Titolo: Re: metodo ShowModal per chiamare un nuovo form
Inserito da: Picavbg - 26 Agosto 2010, 23:08:37
Domanda stupida: quando vai a cliccare per la 2^ volta sulla Form chiamante, penso che sia FMain.Form, ilaForm chiamata é sempre attiva e visibile? Qual'é il primo oggetto-evento della  nuova Form?
Titolo: Re: metodo ShowModal per chiamare un nuovo form
Inserito da: swsooue - 27 Agosto 2010, 08:56:16
Anche ShowDialog da lo stesso errore?

Ho notato che fai continuamente riferimento a Visual Basic. TI prego abbandona questa convinzione. Gambas è Gambas e VB è VB.

Si, anche ShowDialog dà lo stesso problema

Scusami se faccio riferimento a Visual Basic, ma sto portando una applicazione che ho su quel linguaggio per cui faccio riferimento a quello anche per far capire cosa devo fare.

Titolo: Re: metodo ShowModal per chiamare un nuovo form
Inserito da: swsooue - 27 Agosto 2010, 08:57:00
Strano, perchè con showmodal si ottieno proprio quello che serve a te.
Che versione hai di gambas???

Ho la versione 2.19
Vale la pena aggiornare alla 2.21 ??



Titolo: Re: metodo ShowModal per chiamare un nuovo form
Inserito da: swsooue - 27 Agosto 2010, 08:59:32
Domanda stupida: quando vai a cliccare per la 2^ volta sulla Form chiamante, penso che sia FMain.Form, ilaForm chiamata é sempre attiva e visibile? Qual'é il primo oggetto-evento della  nuova Form?

si, quando clikko per la seconda volta sulla FMain.Form, l'altra Form è sempre visibile e anche attiva.
Sulla nuova Form ho solo posizionato un bottone e una label, non ho ancora scritto del codice, potrebbe essere quello ??

Gigi
Titolo: Re: metodo ShowModal per chiamare un nuovo form
Inserito da: Ceskho - 27 Agosto 2010, 11:20:37
Domanda stupida: quando vai a cliccare per la 2^ volta sulla Form chiamante, penso che sia FMain.Form, ilaForm chiamata é sempre attiva e visibile? Qual'é il primo oggetto-evento della  nuova Form?

si, quando clikko per la seconda volta sulla FMain.Form, l'altra Form è sempre visibile e anche attiva.
Sulla nuova Form ho solo posizionato un bottone e una label, non ho ancora scritto del codice, potrebbe essere quello ??

Gigi


No. Lo showmodal è un metodo completamente slegato dal contenuto del form. Potresti anche mostrare solo un form vuoto, lo scopo di showmodal (o showdialog) è quello di mantenere attivo sempre e solo il form principale.

La tua versione di Gambas è compilata o presa dai repo?
Titolo: Re: metodo ShowModal per chiamare un nuovo form
Inserito da: milio - 27 Agosto 2010, 11:59:48
Incuriosito ho fatto un test anch'io:  :coder:

su Gambas 2.21 no problem...
su Gambas 2.19 idem...  :-\

Ho provato anche a fare cosi':
FMain con Classe di avvio
Form1 richiamata con .Show da FMain
Form2 richiamata con .ShowModal da Form1

L'unico inconveniente che ho riscontrato e' che con Form2 in ShowModal riesco a dare il focus alla FMain ma non ad utilizzare gli oggetti in essa contenuti.

Puoi allegare l'intero tuo progetto per alcuni test?
Titolo: Re: metodo ShowModal per chiamare un nuovo form
Inserito da: md9327 - 27 Agosto 2010, 12:04:47
COme accennato da Cesko, la proprietà viene impostata a livello di libreria gtk/qt, ed è slegata da Gambas. Se non funziona, ho come l'impressione ci sia qualche problema a livello di librerie, come hai installato Gambas?
Titolo: Re: metodo ShowModal per chiamare un nuovo form
Inserito da: swsooue - 27 Agosto 2010, 22:52:31
COme accennato da Cesko, la proprietà viene impostata a livello di libreria gtk/qt, ed è slegata da Gambas. Se non funziona, ho come l'impressione ci sia qualche problema a livello di librerie, come hai installato Gambas?

Ciao,

rispondo sia a te sia a Cesko:

avevo installato Gambas 2.19 semplicemente dal "Ubuntu Software Center".

Ora ho disinstallato Gambas 2.19

Ho scaricato Gambas 2.21, scompattato il pacchetto, dalla console ho fatto, in sequenza:
./configure
make
make install
(ho guardato il file INSTALL)

Tutto ok, ma ora nel menu "Applicazioni / Programmazione" non c'è più Gambas, come lo lancio e/o come lo metto nel menu ???

Gigi

Titolo: Re: metodo ShowModal per chiamare un nuovo form
Inserito da: milio - 27 Agosto 2010, 23:00:53
Usteria, leggo adesso che hai Ubunto (presumo che hai Gnome come DM) e non ho tenuto conto del fattore Gtk... le mie prove si sono basate solamente su Qt...
Titolo: Re: metodo ShowModal per chiamare un nuovo form
Inserito da: swsooue - 27 Agosto 2010, 23:06:09
Usteria, leggo adesso che hai Ubunto (presumo che hai Gnome come DM) e non ho tenuto conto del fattore Gtk... le mie prove si sono basate solamente su Qt...

.......mmmmmmm......mi sa che il problema è proprio quello  !!!

Ti confermo che Ubuntu usa Gnome come interfaccia grafica.

Gigi
Titolo: Re: metodo ShowModal per chiamare un nuovo form
Inserito da: milio - 27 Agosto 2010, 23:10:24
Prova a disabilitare il componente gb.gui e abilitare il componente gb.qt
Titolo: Re: metodo ShowModal per chiamare un nuovo form
Inserito da: swsooue - 27 Agosto 2010, 23:28:20
Prova a disabilitare il componente gb.gui e abilitare il componente gb.qt

FUNZIONA !!!!!!!!!!!!!!!   :2birre:

Gigi
Titolo: Re: [RISOLTO] metodo ShowModal per chiamare un nuovo form
Inserito da: Ceskho - 28 Agosto 2010, 01:14:53
Sulla mia amata Debian + GNOME funziona comunque.....
Titolo: Re: [RISOLTO] metodo ShowModal per chiamare un nuovo form
Inserito da: md9327 - 30 Agosto 2010, 01:42:27
Avendo spazio su disco, mettere i due DM sul sistema non è che poi sia un'idea così balzana...

Io praticamente installo tuttto, anche per avere l'opportunità di avviare l'uno o l'altro a seconda di come mi sveglio...  :D

Scherzi a parte, e DM a parte, anzi, putroppo se ne è discusso più volte, e la storia è sempre la stessa, Gambas è stato creato su KDE, e lo sviluppo predilige prima questo DM. Impresa da considerarsi di tutto rispetto, è il desiderare di unificare i due ambienti con uno switch, ma questo è lungi da essere completo, specialmente perchè i due principali DM (kde e gnome) seguono strade diverse (ovviamente) e tempi diversi. Le altre DM si basano molto sulle librerie di base di questi due, magari alleggerendo le funzionalità, ma lo strato e quasi sempre quello.

Questo per dire, che a volte la stessa applicazione funziona con uno, ma ha dei problemi con l'altro. La libreria gb.gui funziona, ma non tanto quando sarebbe bene, per cui spesso decido di adottare uno dei due in modo specifico.