Autore Topic: Hide form chiamante  (Letto 3458 volte)

Offline aulin

  • Gambero
  • **
  • Post: 83
    • Mostra profilo
Hide form chiamante
« il: 21 Novembre 2010, 20:08:48 »
Ho pensato di non far visualizzare la form chiamante.Tipo :
Codice: [Seleziona]
 Me.Hide
     ProgettoTotVis.ShowModal
 Me.Show
Risultato : Me.hide funziona, visualizzo correttamente  ProgettoTotVis.ShowModal però non riesco a ridare il controllo al form chiamante.
Torna addirittura al Main.
Ho provato anche
Codice: [Seleziona]
NomeForm1.Hide
     ProgettoTotVis.ShowModal
NomeForm1.Show
Stesso risultato.
Si può operare in questo modo?

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: Hide form chiamante
« Risposta #1 il: 21 Novembre 2010, 20:12:38 »
prova con

Codice: [Seleziona]
 Me.Hide
     ProgettoTotVis.ShowModal
 Me.Showmodal

Offline aulin

  • Gambero
  • **
  • Post: 83
    • Mostra profilo
Re: Hide form chiamante
« Risposta #2 il: 21 Novembre 2010, 22:30:18 »
Tentativo fallito. Invalid Object

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Hide form chiamante
« Risposta #3 il: 22 Novembre 2010, 00:00:07 »
Devi rimostrare il form principale nella sub di chiusura di quello richiamato....se ad esempio hai un form principale FMain ed un form che richiami FChiamato allora devi fare così:

in FMain apri FChiamato mentre in FCHiamato dai

Codice: gambas [Seleziona]
PUBLIC SUB Form_Close()

  FMain.Show()

END

Offline aulin

  • Gambero
  • **
  • Post: 83
    • Mostra profilo
Re: Hide form chiamante
« Risposta #4 il: 22 Novembre 2010, 00:28:24 »
Va leggermente meglio, ma ora quando provo a chiudere la FChiamata non me la chiude.
La logica che vorrei ottenere sarebbe questa:
Avere la Fmain sempre sullo sfondo
da Fmain --> Form1
           da       Form1 --> Form2 rendendo hide la Form1
quando chiudo la Form2 rendere hide la form2 e rendere nuovamente visibile la Form1 con i dati precedentemente inseriti.



Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Hide form chiamante
« Risposta #5 il: 22 Novembre 2010, 11:40:42 »
Puntualizzo una cosa: se chiudi Form2 non puoi renderlo nascosto. Chiudendolo viene distrutto.
Detto questo, ti devo ricordare che quando si opera con le finestre bisogna ricordarsi che se una finestra che ha aperto un'altra finestra è invisibile nel momento in cui chiudi quest'ultima, allora il controllo torna alla finestra genitore della prima, nel tuo caso FMain.

Ti allego il modo in cui risolvi il problema. Facendo gestire tutto a Form2 e Form1 funziona egregiamente.
In pratica da Form1 devi chiamare Form2: questo renderà invisibile Form1.
Al momento in cui chiudi Form2, renderai solo invisibile questa finestra riattivando Form1. Da qui chiuderai Form2.
Visita il mio sito personale: http://www.leonardomiliani.com

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Hide form chiamante
« Risposta #6 il: 22 Novembre 2010, 11:46:21 »
Ops....  non mi ero accorto che si era nella sezione G3. Cmq la logica del metodo dovrebbe funzionare anche con questa versione.
Visita il mio sito personale: http://www.leonardomiliani.com

Offline aulin

  • Gambero
  • **
  • Post: 83
    • Mostra profilo
Re: Hide form chiamante
« Risposta #7 il: 22 Novembre 2010, 16:53:54 »
Purtroppo non funziona.
Quando provo a chiudere la Form2 questa non si chiude, anche se sotto di essa si vede l'apertura della Form1. Altro problema : la Form1 che viene riaperta e nella quale erano stati inseriti dei dati, viene completamente resettata. Morale la Form2 non si schioda dal video. C'è qualcosa che le impedisce di chiudersi.

Questa modalità la vorrei gestire per evitare di avere a video molte forms aperte contemporaneamente.

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Hide form chiamante
« Risposta #8 il: 22 Novembre 2010, 22:09:02 »
Domanda. Ma non funziona il mio codice da solo o non funziona il mio codice inserito nel tuo programma?
Visita il mio sito personale: http://www.leonardomiliani.com

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: Hide form chiamante
« Risposta #9 il: 22 Novembre 2010, 23:03:45 »
Purtroppo non funziona.
Quando provo a chiudere la Form2 questa non si chiude, anche se sotto di essa si vede l'apertura della Form1. Altro problema : la Form1 che viene riaperta e nella quale erano stati inseriti dei dati, viene completamente resettata. Morale la Form2 non si schioda dal video. C'è qualcosa che le impedisce di chiudersi.

Questa modalità la vorrei gestire per evitare di avere a video molte forms aperte contemporaneamente.

Leggendo i post di questa discussione, mi sono tornate in mente notazioni fattemi da amici del Forum sulla sconvenienza di pensare oggigiorno, con le grosse capacità di RAM disponibili, al risparmio di spazio. Riportando tale ragionamento sul caso da te prospettato, noto che gestisci solamente tre Form. Mi sembra che sia un impegno di spazio non impossibile da gestire dentro un PC attuale, per cui io non mi preoccuperei più di tanto e, nel richiamare la Form dipendente, agirei sulla proprietà "visible" della Form chiamante:
 
Codice: gambas [Seleziona]
Form2.ShowModal
 Me.Visible = False


Nella Form2, per rientrare nella Form1, scriverei:
Codice: gambas [Seleziona]
Form1.Visible = True
Me.close


Dovresti così tornare alla Form1 senza perdere niente di quello che avevi al momento della chiamata della Form2.

Quello che vorresti fare tu é ottimale, ma per riottenere la Form1 con quello che avevi prima dell'Hide, dovresti andare  a ricostruire i dati precedenti, con evidente impegno di spazio in memoria in termini di codice. Alla fine, se riuscissi a guadagnare qiualcosa, sarebbe, ben poca cosa.
 :)
Ciao.



:ciao:

Offline aulin

  • Gambero
  • **
  • Post: 83
    • Mostra profilo
Re: Hide form chiamante
« Risposta #10 il: 22 Novembre 2010, 23:24:00 »
Codice: [Seleziona]
Public Sub BTN_VisAvProgetto_Click()
  ProgettoTotVis.TB_SiglaProgetto.Text = Me.TB_SiglaProgetto.Text
  ProgettoTotVis.TB_DesProgetto.Text = Me.TB_Descrizione.Text
  ProgettoTotVis.VB_AnnoProgetto.Value = Me.VB_AnnoProgetto.Value
     ProgettoTotVis.ShowModal
      Me.Visible = False
End


Public Sub BTN_Chiudi_Click()
 InsDatiMensili.Visible = True
  Me.close

End


Posto la parte di codice col le sub interessate. Purtroppo non funziona. Quando chiudo  ProgettoTotVis  la Form InsDatiMensili resta invisibile.
Mistero ....
Il problema comunque non era quello di risparmiare spazio, bensì un fattore estetico. Volevo avere quando necessario, la possibilità di avere sul video solo la form aperta senza form sottostanti, esclusivamente per un problema di pulizia della videata.


Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: Hide form chiamante
« Risposta #11 il: 23 Novembre 2010, 06:51:00 »
metti me.visible prima di
progettototvis.showmodal
aprendo un for in modale la riga sucessiva viene "letta solo dopo la chiusura del form modale

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Hide form chiamante
« Risposta #12 il: 24 Novembre 2010, 11:16:43 »
Scusa ma non hai usato il codice che ti ho messo online.
E poi è normale che con

"Form.ShowModal
Me.Visibile = False

Me.Visible non sia eseguita dato che l'esecuzione passa all'altro form e rendi invisibile quello chiamante quando torna l'esecuzione su di lui, cosa che poi fa passare per forza il focus sul Main.
Visita il mio sito personale: http://www.leonardomiliani.com