IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Problème de double clique sur barre de titre d'une form


Sujet :

Delphi

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 78
    Points : 35
    Points
    35
    Par défaut Problème de double clique sur barre de titre d'une form
    les programeurs,

    moi j'ai un pb est comment empecher le double clique sur la barre de titre d'une forme.

    merci a l'avance.

  2. #2
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Tu veux éviter de faire un double clic pour ne pas agrandir ou rétrécir ta fenêtre...

  3. #3
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    visiblement tu ne peux pas faire ca de maniere simple.
    Je te conseille plutot de gerer les effets que le click en lui meme.
    Essaye de detecter ce qui est responsable (maximize/restore) et surcharge les methodes associées pour autoriser ou annuler l'effet.

    Sinon tu peux utiliser d'autres types de bordures comme bstoolwindow ou encore rien du tout.
    Apres rien ne t'empeche d'en redessiner une dan la partie top de ta form ....

  4. #4
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    +1 avec Clorish

    Si c'est pour "capturer" l'agrandissement et la réduction de form et annuler leur effet, il vaudrait mieux se tourner vers un autre type de fenêtre. Pour se faire, il faut éditer la propriété BorderStyle de la Form en question :

    Divers choix te sont proposés :
    Citation Envoyé par Aide Delphi
    bsDialog Non redimensionnable ;bordure de boîte de dialogue standard
    bsSingle Non redimensionnable ;bordure simple
    bsNone Non redimensionnable ;pas de bordure visible
    bsSizeable Bordure redimensionnable standard
    bsToolWindow Identique àbsSingle avec une petite barre de titre
    bsSizeToolWin Identique àbsSizeable avec une petite barre de titre
    Voilà voilà

  5. #5
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par Clorish
    visiblement tu ne peux pas faire ca de maniere simple.
    Ben si !

    Tu places TApplicationEvents sur ta form puis tu implémente OnMessage comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
      var Handled: Boolean);
    begin
      if (Msg.message = WM_NCLBUTTONDBLCLK) then
        Handled := True;
    end;
    @+ Claudius

  6. #6
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    sauf que la tu catch tous les messages double-click

    Il faudrait plus de finesse ...
    A la rigeur si on arrive a detecter la cible du message et encore.
    Ou alors combiné avec le message MouseDown pour tester les coord de la sourie en position absolue, a savoir si elle se trouve dans ou hors de la barre de menu.

    Je pense qu'effectivement, il n'y a pas de solution triviale a ce genre de probleme

    Il faut savoir uen chose aussi : TForm est un composant a moitié derivé des objets windows .... reste plus qu'a esperer que le comportement lié au double click ne soit pas trop enfoncé dans les APIs windows

  7. #7
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par Clorish
    sauf que la tu catch tous les messages double-click
    Non non, j'intercepte uniquement les double-click sur la zone non client de la fenêtre: WM_NCLBUTTONDBLCLK.

    @+

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 78
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par Cl@udius
    Non non, j'intercepte uniquement les double-click sur la zone non client de la fenêtre: WM_NCLBUTTONDBLCLK.

    @+
    merci pour vous reponse,

    mais j'ai tester vos propositions mais rien d'effet, je peux pas intercepter les double clique sur la barre de menu de ma form.

    je pens qu'il fallait chercher aux APIWindows mais laquelle.

    merci en avance.

  9. #9
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par kheldoun ahmed
    moi j'ai un pb est comment empecher le double clique sur la barre de titre d'une forme.
    puis

    Citation Envoyé par kheldoun ahmed
    je peux pas intercepter les double clique sur la barre de menu de ma form.
    Le code que je t'ai proposé annule le double-clic effectué sur la barre de titre de la forme.
    Maintenant reste à savoir si c'est vaiment ce que tu recherches. ???

    @+

  10. #10
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Citation Envoyé par Cl@udius
    Non non, j'intercepte uniquement les double-click sur la zone non client de la fenêtre: WM_NCLBUTTONDBLCLK.
    autant pour moi
    Je savais meme pas qu'il y avait 2 types de messages
    Comme quoi on en apprends encore tous les jours

  11. #11
    Membre habitué Avatar de Ludo_360
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 295
    Points : 191
    Points
    191
    Par défaut
    Lors d'un double clic tu peux récupérer les coordonnées de la souris , tu passes en référence client (ScreenToClient) puis tu compares avec la dimension de la zone de la barre de titre. Sachant que le point (0,0) est situé en haut à gauche de ta form (juste en dessous de ta barre de titre en fait) tu peux, après quelques réglages, trouver facilement cette zone.
    Libre à toi de déterminer ce que tu veux faire de cet égènement après...

    voila

    ludo

Discussions similaires

  1. [XL-2007] empecher un double clic sur barre titres sous excel 2007
    Par zanys dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/04/2017, 14h05
  2. Réponses: 6
    Dernier message: 10/11/2012, 00h07
  3. Quatrième bouton sur la barre de titre d'une fenêtre
    Par Yacine95000 dans le forum MFC
    Réponses: 8
    Dernier message: 02/06/2004, 17h54
  4. [VB6] masquer la barre de titre d'une form
    Par tiboleo dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 09/12/2002, 17h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo