Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Fermeture Form par la croix rouge Mer 7 Nov 2018 - 9:12 | |
| | |
|
silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Fermeture Form par la croix rouge Mer 7 Nov 2018 - 13:04 | |
| Jette une oeil ici | |
|
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Fermeture Form par la croix rouge Mer 7 Nov 2018 - 13:47 | |
| J'ai bien l'impression que l'on partage tous la même idée sur cette croix rouge.
C'est à dire de pouvoir faire marche arrière en cas de clic sur la croix de la fenêtre 0.
J'espère que Jack pourra faire le nécessaire... | |
|
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Fermeture Form par la croix rouge Mer 7 Nov 2018 - 16:01 | |
| Essayez ces deux codes que j’ai déjà postés dans je ne sais plus où ! - Code:
-
rem ============================================================================ rem Désactiver / activer la croix X de fermeture d’un FORM rem ============================================================================ Desactive_X(0) end rem ============================================================================ ' Désactiver la croix de fermeture d'un FORM ' NumForm est le numéro du FORM dont on veut désactiver / activer la fermeture par la croix SUB Desactive_X(NumForm) Dim_local hWnd : ' handle de la fenêtre FORM NumForm dim_local hMenu : ' handle du menu système de la fenêtre en cours Dim_local result%, flag% dim_local SC_CLOSE : SC_CLOSE = hex("F060") dim_local tex$ dll_on "user32" if object_exists(NumForm) = 0 message "FORM " + str$(NumForm) + " n'existe pas !!!" exit_sub end_if hWnd = handle(NumForm) : ' handle du Form NumForm hmenu = dll_call2("GetSystemMenu",hWnd,0) : ' handle du menu système de la fenêtre en cours flag% = 1 : ' La croix est désactivée result% = dll_call3("EnableMenuItem",hMenu, SC_CLOSE, flag%) tex$ = "Vous ne pouvez pas fermer FORM " + str$(NumForm) + " par la croix" tex$ = tex$ + chr$(13) + "Essayez durant 5 secondes pour vous en convaincre." + chr$(13) message tex$ pause 5000 flag% = 0 : ' La croix est à nouveau activée result% = dll_call3("EnableMenuItem",hMenu, SC_CLOSE, flag%) message "Maintenant vous pouvez fermer FORM " + str$(NumForm) + " par la croix" END_SUB rem ============================================================================
- Code:
-
rem ============================================================================ rem DisableSystemMenu rem ============================================================================ rem Désactiver les commandes système de la fenêtre se trouvant en haut à droite : rem la croix de fermeture, le bouton Agrandir et le bouton Réduire rem Désactiver le menu système qu’on obtient par un click sur le bouton en haut à gauche rem Restaurer, Déplacer, Taille, Réduire, Agrandir, Fermer rem ============================================================================ rem Permet de choisir précisément ce sur quoi on veut agir... rem A la fin on rétablit tout rem ============================================================================
DisableSystemMenu(0)
end rem ============================================================================ SUB DisableSystemMenu(NumForm) dim_local MF_BYPOSITION : MF_BYPOSITION = hex("400") Dim_local hWnd : ' handle de la fenêtre FORM NumForm dim_local hMenu : ' handle du menu système de la fenêtre en cours dim_local ret% : ' variable de retour dim_local tex$ if object_exists(NumForm) = 0 message "FORM " + str$(NumForm) + " n'existe pas !!!" : exit_sub end_if dll_on "user32" hWnd = handle(NumForm) : ' handle de la fenêtre FORM NumForm ' Essayez avec PANORAMIC EDITOR , ça marche aussi ' hWnd = handle_Form("PANORAMIC EDITOR") hmenu = dll_call2("GetSystemMenu",hWnd,0) : ' handle du menu système de la fenêtre en cours
' désactiver la croix de fermeture du FORM NumForm et la commande Fermeture du menu système ret% = dll_call3("DeleteMenu",hmenu,6,MF_BYPOSITION) ' supprimer le trait de séparation du menu système avant Fermeture ret% = dll_call3("DeleteMenu",hmenu,5,MF_BYPOSITION) ' supprimer la commande Agrandissement du menu système et la commande Agrandir de la fenêtre ret% = dll_call3("DeleteMenu",hmenu,4,MF_BYPOSITION) ' supprimer la commande Réduction du menu système et désactive la commande Réduire de la fenêtre ret% = dll_call3("DeleteMenu",hmenu,3,MF_BYPOSITION) ' désactiver la commande Déplacement du menu système ret% = dll_call3("DeleteMenu",hmenu,2,MF_BYPOSITION) ' supprimer la commande Déplacement du menu système et désactive la commande Dimension ret% = dll_call3("DeleteMenu",hmenu,1,MF_BYPOSITION) ' supprimer la commande Restauration du menu système et désactive la commande Restaurer de la fenêtre ret% = dll_call3("DeleteMenu",hmenu,0,MF_BYPOSITION) ' ------------------------------------------------------------------------------ tex$ = "Après la validation de ce message," + chr$(13) tex$ = tex$ + "Vous ne pouvez ni fermer, ni réduire, ni agrandir, ni déplacer la fenêtre !!!" tex$ = tex$ + chr$(13) + "Essayez durant 5 secondes pour vous en convaincre." + chr$(13) message tex$ pause 5000 ' rétablir le menu sytème et les commandes de fenêtre (Réduire, Agrandir, Fermer) ret% = dll_call2("GetSystemMenu",hWnd,1) tex$ = "Tout est rétabli à présent."+ chr$(13) tex$ = tex$ + "Vous pouvez réduire, agrandir,fermer, déplacer votre FORM" + chr$(13) tex$ = tex$ + "Vous pouvez également afficher le menu système de votre FORM" + chr$(13) tex$ = tex$ + "en cliquant sur le bouton en haut à gauche de la barre du titre" message tex$
END_SUB rem ============================================================================
| |
|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Fermeture Form par la croix rouge Mer 7 Nov 2018 - 17:09 | |
| Oui Papydall, ta solution est bonne, Mais les Panoramiciens qui codent un éditeur, sans utilisation d'une DLL (pour respecter le cahier des charges de Jack) n'ont pas de solution en pur Panoramic. @Silverman, Oups ! j'avais lu ton sujet "MESSAGE_EXIT_APPLICATION...", mais je l'ai oublié. A+ | |
|
Jack Admin
Nombre de messages : 2394 Date d'inscription : 28/05/2007
| Sujet: Re: Fermeture Form par la croix rouge Mer 7 Nov 2018 - 19:26 | |
| - Minibug a écrit:
- J'ai bien l'impression que l'on partage tous la même idée sur cette croix rouge.
C'est à dire de pouvoir faire marche arrière en cas de clic sur la croix de la fenêtre 0. J'espère que Jack pourra faire le nécessaire... Je suis en train de coder 2 commandes : CLOSE_INACTIVE qui inhibe la destruction de FORM0 quand on clique sur la croix rouge (un click sur la croix rouge ne fait rien), CLOSE_ACTIVE qui est le retour à l'état par défaut pour annuler l'effet de CLOSE_INACTIVE: un clic sur la croix rouge ferme FORM0 définitivement. _________________ username : panoramic@jack-panoramic password : panoramic123 | |
|
jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Mer 7 Nov 2018 - 19:36 | |
| Oui, super ! | |
|
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Fermeture Form par la croix rouge Mer 7 Nov 2018 - 19:41 | |
| Merci pour ta réactivité Jack ! Je pense que cette formule est la bonne. Elle laissera à chacun la possibilité de coder le ON_CLOSE selon ses besoins. Encore merci ! | |
|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Fermeture Form par la croix rouge Mer 7 Nov 2018 - 20:14 | |
| Voilà une bonne solution.
Tout le monde sera satisfait....
Merci Jack.
A+ | |
|
silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Fermeture Form par la croix rouge Mer 7 Nov 2018 - 20:17 | |
| C'est une excellente nouvelle jack! | |
|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Fermeture Form par la croix rouge Mer 7 Nov 2018 - 20:27 | |
| - Minibug a écrit:
- Je pense que cette formule est la bonne.
Elle laissera à chacun la possibilité de coder le ON_CLOSE selon ses besoins. Juste une précision: - Jack a écrit:
- CLOSE_INACTIVE qui inhibe la destruction de FORM0 quand on clique sur la croix rouge (un click sur la croix rouge ne fait rien),
Dans ce cas ON_CLOSE ne sert plus.... Il semble que ces 2 nouvelles commandes ne seront active que pout FORM 0. C'est tout de même une amélioration, on verra à l'utilisation. A+ | |
|
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Fermeture Form par la croix rouge Mer 7 Nov 2018 - 20:38 | |
| - Jean Claude a écrit:
- Dans ce cas ON_CLOSE ne sert plus....
Tout dépend de la façon dont Jack va coder CLOSE_INACTIVE. Il faudrait que dans les 2 cas CLOSE_ACTIVE et CLOSE_INACTIVE il y est un accès au sous programme déclenché par ON_CLOSE. Ce qui permettrait dans les 2 cas un accès au sous-programme. Enfin c'est ma vision des choses... Avec CLOSE_ACTIVE il y aurait un traitement du sous-programme puis un arrêt obligatoire du programme. Alors qu'avec CLOSE_INACTIVE, il n'y aurait qu'un traitement du sous-programme. | |
|
Contenu sponsorisé
| Sujet: Re: Fermeture Form par la croix rouge | |
| |
|