Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: ON_CLOSE - Empêcher la fermeture d'une form ! Sam 18 Déc 2010 - 12:45 | |
| Il y a de multiples posts sur le forum débattant de ce sujet. L'état actuel des connaissances sur Panoramic dit ceci: - Citation :
- L'évènement on_close est déclenché lorsque Windows a reçu l'ordre de fermer la form. Il permet de reprendre la main juste avant la fermeture pour faire "du ménage", mais pas pour empêcher de fermer la form. Windows la fermera de toutes façons.
Jack a parlé d'une possibilité d'avoir une commande qui annullerait cela. Ce serait évidemment la meilleure solution. En attendant, j'ai trouvé un moyen d'éviter la fermeture définitive pour toutes les forms autres que la form 0 ! En effet, la form 0 est associée directement au processus de base, pour Windows, et fermer cette form entraîne automatiquement l'arrêt du processus. Il n'y a pas moyen déviter cela, sauf par la nouvelle commande dont parle Jack. Mais pour toutes les autres forms, il y a un moyen ! En effet, fermer une form aute que form 0 ne la "supprime" pas - cette action ne fait qu'enlever la partie affichée. Il suffit d'un show pour la réafficher. Malheureusement, il ne sert à rien de faire cela dans l'évènement on_close, puisque la suppression de la partie visible se passe après. Mais on peut contourner le problème par un timer (encore une application pour le timer !). Si on lance un timer dont l'évènement se déclenche APRES la suppression de la partie visible de la form, il suffit de faire un show de cette form dans l'évènement timer, et tout revient ! Alors, le moyen absolu d'empêcher le programme de s'arrêter, est le suivant: - faire immédiatement HIDE 0 - créer une form 1 dans laquelle on met tout ce que l'on voulait mettre dans la form 0 - protéger la form 1 par le mécanisme décrit ci-dessus et montré dans l'exemple ci-dessous ==> ON NE PEUT PLUS FERMER L'APPLICATION ! Voici une petite démo, avec la form 0 dont la fermeture est malheureusement inévitable, et la form 1 impossible à fermer ! - Code:
-
label restaurer_0, restaurer_1, close_0, close_1
timer 100 : timer_interval 100,100 : on_timer 100,restaurer_0 timer 101 : timer_interval 101,100 : on_timer 101,restaurer_1
alpha 10 : caption 10,"Essayez de fermer la form 0 - inévitable !"
form 1 : command_target_is 1 : top 1,60 : left 1,60 alpha 11 : caption 11,"Essayez de fermer la form 1 - impossible !"
on_close 0,close_0 on_close 1,close_1 end
close_0: timer_on 100 return
close_1: timer_on 101 return
restaurer_0: timer_off 100 show 0 return
restaurer_1: timer_off 101 show 1 return
Dernière édition par Klaus le Sam 18 Déc 2010 - 17:29, édité 1 fois | |
|
dragonno
Nombre de messages : 341 Localisation : Près de Toulouse Date d'inscription : 22/01/2009
| Sujet: Re: ON_CLOSE - Empêcher la fermeture d'une form ! Sam 18 Déc 2010 - 16:23 | |
| Quel malin ce Klaus, c'est bien un maître Et aussi tu aime bien le timer hein A ce propos, le timer remettra la form mais on est obligé de stoper le timer ensuite sinon son action est répétitive. Et si on re-affichait la form avec show 1 juste après le on_close ? Ta form 1 il ets possible de la mettre en background avant-plan ? pour empêcher de fermer le form 0. | |
|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: ON_CLOSE - Empêcher la fermeture d'une form ! Sam 18 Déc 2010 - 17:28 | |
| - Citation :
- A ce propos, le timer remettra la form mais on est obligé de stoper le timer ensuite sinon son action est répétitive.
C'est ce que j'ai fait dans le programme de démo ! La première action prise dans la routine on_timer est bien TIMER_OFF... - Citation :
- Et si on re-affichait la form avec show 1 juste après le on_close ?
J'ai donné la réponse dans mon post: - Citation :
- Malheureusement, il ne sert à rien de faire cela dans l'évènement on_close, puisque la suppression de la partie visible se passe après.
- Citation :
- Ta form 1 il ets possible de la mettre en background avant-plan ? pour empêcher de fermer le form 0.
Ce n'est pas possible. Mais j'ai donné la solution dans mon post: - Citation :
- Alors, le moyen absolu d'empêcher le programme de s'arrêter, est le suivant:
- faire immédiatement HIDE 0 - créer une form 1 dans laquelle on met tout ce que l'on voulait mettre dans la form 0 - protéger la form 1 par le mécanisme décrit ci-dessus et montré dans l'exemple ci-dessous ==> ON NE PEUT PLUS FERMER L'APPLICATION ! | |
|
Contenu sponsorisé
| Sujet: Re: ON_CLOSE - Empêcher la fermeture d'une form ! | |
| |
|