Autore Topic: Chiudere i form aperti da un form principale  (Letto 868 volte)

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Chiudere i form aperti da un form principale
« il: 17 Aprile 2019, 10:45:45 »
Ciao
Da  Form1 do il comando
Form2.close
anche se Form2 non è aperto il programma non riporta un errore (la cosa mi stupisce un po)
da una parte mi va bene poichè ho necessità chiudere tutti i form aperti (tranne il primo) )in una volta sola e con questo semplicemente faccio l'elenco dei form del mio progetto seguiti da .close
il dubbio però è che non sia la modalità corretta e che possa prima o poi creare qualche problema 
cosa ne pensate?

"e il naufragar m'è dolce in questo mar"

Offline Michy9393

  • Gran Maestro dei Gamberi
  • *****
  • Post: 570
  • Ubuntu: Linux for Human Beings
    • Mostra profilo
Re:Chiudere i form aperti da un form principale
« Risposta #1 il: 17 Aprile 2019, 11:43:46 »
Forse e dico forse questo errore è stato "gestito" a prescindere in modo da evitare crash strani.

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re:Chiudere i form aperti da un form principale
« Risposta #2 il: 17 Aprile 2019, 12:56:22 »
se invece è un bug alla prossima versione smette di funzionare
atroce dilemma......
"e il naufragar m'è dolce in questo mar"

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Re:Chiudere i form aperti da un form principale
« Risposta #3 il: 17 Aprile 2019, 13:14:39 »
suppongo che la tua applicazione usi diversi form "NON MODALI" .....
comunque capisco il problema.

ad una prima occhiata non mi sembra che ci sia la possibilita' di accedere "velocemente" ai form "figli" di una finestra ...
se corri, morirai stanco (motto degli sniper)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Chiudere i form aperti da un form principale
« Risposta #4 il: 17 Aprile 2019, 13:44:42 »
Ciao
Da  Form1 do il comando
Form2.close
anche se Form2 non è aperto il programma non riporta un errore (la cosa mi stupisce un po)
da una parte mi va bene poichè ho necessità chiudere tutti i form aperti (tranne il primo) )in una volta sola e con questo semplicemente faccio l'elenco dei form del mio progetto seguiti da .close
il dubbio però è che non sia la modalità corretta e che possa prima o poi creare qualche problema 
cosa ne pensate?

Credo che  Michy9393 abbia ragione, questo succede anche con db connection close, nel dubbio che un domani questo comportamento possa variare potresti anteporre Try al comando.

@allegfede,
non ho capito questa parte della tua risposta:
Citazione
ad una prima occhiata non mi sembra che ci sia la possibilita' di accedere "velocemente" ai form "figli" di una finestra ...

nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Re:Chiudere i form aperti da un form principale
« Risposta #5 il: 17 Aprile 2019, 16:59:10 »
intendevo che sarebbe stato interessante avere un algoritmo che facesse una cosa del tipo

for each form in fmain.childrens
  if form.loaded=true then
     form.close
  end if
next form

cosi' uno non avrebbe dovuto aggiungere la chiamata di chiusura per ogni form che ha creato, hardcoded nel codice
« Ultima modifica: 17 Aprile 2019, 17:01:40 da allegfede »
se corri, morirai stanco (motto degli sniper)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Chiudere i form aperti da un form principale
« Risposta #6 il: 17 Aprile 2019, 19:54:04 »
Ricordati che se tu imposti la finestra principale ad esempio la FMain così:
Codice: [Seleziona]
Application.MainWindow = Me
Quando chiudi la finestra main si chiudono automaticamente tutte le finestre.
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re:Chiudere i form aperti da un form principale
« Risposta #7 il: 18 Aprile 2019, 08:49:18 »
La cosa dovrebbe funzionare così
siamo su raspberry con display touch
avvio programma con finestra di login
la quale si chiude e apre il menu principale dal quale vengono lanciati altri form
nel frattempo un timer avanza e se nessuna operazione viene compiuta fa chiudere tutti i form aperti e riapre quello di login
con
Codice: [Seleziona]
Application.MainWindow=me
nel menu principale in effetti la cosa sembra funzionare a patto che i form non siano MODALI
all'evento timer do
Codice: [Seleziona]
Me.close ' mi chiudo e si chiudono tutti gli altri form
FLogin.show ' si apre la finestra di login

creu un piccolo progetto di esempio e lo pubblico
"e il naufragar m'è dolce in questo mar"

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re:Chiudere i form aperti da un form principale
« Risposta #8 il: 19 Aprile 2019, 11:31:23 »
Il progetto che dovrebbe risolvere anche
https://www.gambas-it.org/smf/index.php?topic=6904.0
"e il naufragar m'è dolce in questo mar"

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Chiudere i form aperti da un form principale
« Risposta #9 il: 19 Aprile 2019, 16:05:40 »
Mi sembra che funzioni a dovere, l'unica cosa che non ho capito è perché usi un modulo in più (module1) quando potresti spostare la variabile pubblica tim direttamente nel modulo F e poi in Timer1_Timer cambiare Module1.tim con F.tim.
C'è una ragione particolare?
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re:Chiudere i form aperti da un form principale
« Risposta #10 il: 19 Aprile 2019, 16:25:37 »
non c'è un motivo particolare
pensavo al programma che sto facendo e li esiste gia un modulo F per le funzioni e un modulo V per le variabili
per quello che le ho tenute separate, ma in effetti in questo programma non ha senso tenere due moduli
allego il programma aggiornato con le correzioni
« Ultima modifica: 19 Aprile 2019, 16:31:47 da Akrobaticone »
"e il naufragar m'è dolce in questo mar"