| Désactiver / activer la croix X de fermeture d'un FORM et + | |
|
|
Auteur | Message |
---|
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Désactiver / activer la croix X de fermeture d'un FORM et + Dim 10 Avr 2016 - 15:22 | |
| - 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") 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%) message "Vous ne pouvez pas fermer FORM " + str$(NumForm) + " par la croix" pause 2000 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 ============================================================================
Dernière édition par papydall le Lun 11 Avr 2016 - 5:03, édité 1 fois | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Désactiver / activer la croix X de fermeture d'un FORM et + Dim 10 Avr 2016 - 15:49 | |
| C'est très pratique et très facile a mettre en oeuvre. Un appel de DLL avec un flag a 0 ou 1, on ne peut plus simple. Etant encore sous Win7, et pour m'affranchir des problèmes de bordures de fenêtre, je travaille en border_hide aussi souvent que possible. En plus cela donne en look Win10 a mes programmes. Comme cela plus de problème de croix. En tout cas merci pour cette astuce Papydall ! | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Désactiver / activer la croix X de fermeture d'un FORM et + Dim 10 Avr 2016 - 16:22 | |
| En cas de pépins, il reste toujours <ALT + F4> pour fermer une fenêtre | |
|
| |
Invité Invité
| Sujet: Re: Désactiver / activer la croix X de fermeture d'un FORM et + Lun 11 Avr 2016 - 0:05 | |
| Bonsoir. Cosmos70 en passant par là, a eu l'idée de se servir de celle de Papydall pour empécher la fermeture de la croix, mais celle de Panoramic_Editor: - Code:
-
' Pour désactiver l'Editeur Panoramic, selon Papydall Desactive_X() terminate end SUB Desactive_X() dll_on "user32" 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")
hWnd = handle_Form("PANORAMIC EDITOR") : ' handle de Panoramic_Editor 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%) dll_off end_sub Cela fait plusieurs fois en voulant fermer une fenêtre, je clique sur celle de Panoramic Editor qui est juste dessous. Et ça fonctionne bien! |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Désactiver / activer la croix X de fermeture d'un FORM et + Lun 11 Avr 2016 - 1:12 | |
| Bonne idée d’utiliser cette sub pour désactiver la croix de Panoramic Editor. Ça éviterait de fermer l’Editeur par inadvertance. Par ailleurs, on peut l’appliquer à toute fenêtre dont on peut déterminer le handle.
NB : N’oubliez pas que vous pouvez toujours fermer la fenêtre courante par la combinaison <ALT + F4> | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Désactiver / activer la croix X de fermeture d'un FORM et + Lun 11 Avr 2016 - 5:11 | |
| Voici une SUB plus complète pour désactiver les commandes système ainsi que l’affichage du menu système d’une fenêtre : Interdire de fermer, de réduire, d’agrandir, de déplacer une fenêtre, d’afficher son menu système. Ça permet de choisir précisément ce sur quoi on veut agir. Après la démonstration, on rétablit tout. Le code est suffisamment documenté pour suivre son déroulement. Vous pouvez tester une à une les fonctions DLL_CALL pour observer leur effet. REMARQUE : On peut utiliser cette sub pour toute fenêtre (même autre qu’une fenêtre de PANORAMIC) dont on peut déterminer le handle. - 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 ============================================================================
Remarque : les boutons Réduire et Agrandir à gauche de la croix sont désactivés bien qu'ils restent affichés. | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Désactiver / activer la croix X de fermeture d'un FORM et + Lun 11 Avr 2016 - 8:29 | |
| De plus en plus fort papydall... Bravo ! | |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Désactiver / activer la croix X de fermeture d'un FORM et + Lun 11 Avr 2016 - 9:58 | |
| C'est excellent, on peut enfin gérer une fenêtre comme on le souhaite.
Merci Cosmos et Papydall.
A+ | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 11 Avr 2016 - 10:48 | |
| Si tu pouvais me mettre cela en forme pour le mag, je la publie. | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Désactiver / activer la croix X de fermeture d'un FORM et + Lun 11 Avr 2016 - 12:10 | |
| Comme j’aime bien les formes, je mettrai tout ça en forme quand je me sentirai en bonne forme | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 11 Avr 2016 - 12:30 | |
| A fond... la forme ! | |
|
| |
Fredisland
Nombre de messages : 261 Date d'inscription : 30/03/2018
| Sujet: Re: Désactiver / activer la croix X de fermeture d'un FORM et + Sam 28 Avr 2018 - 14:20 | |
| Deux ans plus tard je ne peux que plussoyer pour ces petits bouts de code absolument terribles ! Merci... | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Désactiver / activer la croix X de fermeture d'un FORM et + Sam 28 Avr 2018 - 18:37 | |
| Je suis sûr que beaucoup de trucs, d’astuces et des idées intéressantes se trouvent un peu partout sur ce forum. Souvent, le problème est comment les retrouver ? Ça m’arrive d’être agréablement surpris par le dépoussiérage de l’un de mes codes que j’ai oublié que j’en suis l’auteur.
Merci Fredisland pour la remise en lumière de ces trucs. | |
|
| |
Contenu sponsorisé
| Sujet: Re: Désactiver / activer la croix X de fermeture d'un FORM et + | |
| |
|
| |
| Désactiver / activer la croix X de fermeture d'un FORM et + | |
|