Gambas-it

Gambas3 => Programmazione => Topic aperto da: akrobaticone - 17 Aprile 2019, 10:45:45

Titolo: Chiudere i form aperti da un form principale
Inserito da: akrobaticone - 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?

Titolo: Re:Chiudere i form aperti da un form principale
Inserito da: Michy9393 - 17 Aprile 2019, 11:43:46
Forse e dico forse questo errore è stato "gestito" a prescindere in modo da evitare crash strani.
Titolo: Re:Chiudere i form aperti da un form principale
Inserito da: akrobaticone - 17 Aprile 2019, 12:56:22
se invece è un bug alla prossima versione smette di funzionare
atroce dilemma......
Titolo: Re:Chiudere i form aperti da un form principale
Inserito da: allegfede - 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 ...
Titolo: Re:Chiudere i form aperti da un form principale
Inserito da: Gianluigi - 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 ...

Titolo: Re:Chiudere i form aperti da un form principale
Inserito da: allegfede - 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
Titolo: Re:Chiudere i form aperti da un form principale
Inserito da: Gianluigi - 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.
Titolo: Re:Chiudere i form aperti da un form principale
Inserito da: akrobaticone - 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
Titolo: Re:Chiudere i form aperti da un form principale
Inserito da: akrobaticone - 19 Aprile 2019, 11:31:23
Il progetto che dovrebbe risolvere anche
https://www.gambas-it.org/smf/index.php?topic=6904.0 (https://www.gambas-it.org/smf/index.php?topic=6904.0)
Titolo: Re:Chiudere i form aperti da un form principale
Inserito da: Gianluigi - 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?
Titolo: Re:Chiudere i form aperti da un form principale
Inserito da: akrobaticone - 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