FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» ajouter des blancs dans un TXT
par lepetitmarocain Hier à 13:00

» Planétarium virtuel.
par Oscaribout Mar 14 Aoû 2018 - 19:45

» 11 (en analyse): commandes sur TAB et SUB_MENU.
par Jack Mar 14 Aoû 2018 - 14:10

» 10 (en analyse): Erreur sur variable locale.
par Jack Mar 14 Aoû 2018 - 14:05

» Métamatière, éternité et renouvellement
par Oscaribout Mar 14 Aoû 2018 - 12:40

» De retour...
par Yannick Lun 13 Aoû 2018 - 15:11

» bug SEVERE fnc+sub : (35)name already defined
par Oscaribout Dim 12 Aoû 2018 - 23:55

» Encadrement
par Jean Claude Dim 12 Aoû 2018 - 11:53

» Des rectangles...
par JL35 Dim 12 Aoû 2018 - 10:53

» TRIGGER_KEY_COMBINED_TOUCH
par Jean Claude Mar 7 Aoû 2018 - 20:58

» ITEM_SELECT N,L pour synedit
par Jean Claude Mar 7 Aoû 2018 - 19:11

» amélioration panoramic
par silverman Dim 5 Aoû 2018 - 18:34

» Commande file_readln.
par Pedro Alvarez Dim 5 Aoû 2018 - 17:08

» Klaus ?
par Jack Sam 4 Aoû 2018 - 22:48

» Défragmentation du disque dur
par JL35 Sam 4 Aoû 2018 - 21:06

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Août 2018
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier

Partagez | 
 

  Désactiver / activer la croix X de fermeture d'un FORM et +

Aller en bas 
AuteurMessage
papydall

avatar

Nombre de messages : 5983
Age : 68
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: 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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Minibug

avatar

Nombre de messages : 2996
Age : 51
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

MessageSujet: 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. drunken

En tout cas merci pour cette astuce Papydall !  Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
papydall

avatar

Nombre de messages : 5983
Age : 68
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: 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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Invité
Invité



MessageSujet: 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!
Revenir en haut Aller en bas
papydall

avatar

Nombre de messages : 5983
Age : 68
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: 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>
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
papydall

avatar

Nombre de messages : 5983
Age : 68
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: 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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Minibug

avatar

Nombre de messages : 2996
Age : 51
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

MessageSujet: 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 ! cheers
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
Jean Claude

avatar

Nombre de messages : 5574
Age : 64
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: 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+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8081
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Lun 11 Avr 2016 - 10:48

Si tu pouvais me mettre cela en forme pour le mag, je la publie.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5983
Age : 68
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: 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 tongue
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Yannick

avatar

Nombre de messages : 8081
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Lun 11 Avr 2016 - 12:30

A fond... la forme !
Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
xxx



Nombre de messages : 261
Date d'inscription : 30/03/2018

MessageSujet: 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...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5983
Age : 68
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: 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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Contenu sponsorisé




MessageSujet: Re: Désactiver / activer la croix X de fermeture d'un FORM et +   

Revenir en haut Aller en bas
 
Désactiver / activer la croix X de fermeture d'un FORM et +
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» désactiver la croix de fermeture d'une fenêtre
» [Résolu]Fermeture impossible des fenêtre PDF sous Mozilla.
» Annuler la fermeture d'une fenêtre ?
» Tutoriel désactiver la restauration systeme sous Vista
» Désactiver l'option TMC

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: