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 :

Interdire le focus à une fenêtre lorsqu'on clique dessus


Sujet :

Delphi

  1. #1
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut Interdire le focus à une fenêtre lorsqu'on clique dessus
    Salut!

    Je cherche le moyen d'intercepter le focus d'une Form. Je m'explique: Lorsque je clique sur une form, celle-ci récupère immédiatement le focus et la fenêtre qui se situait dessus au 1er plan passe alors en arrière-plan. Pour pouvez voir avec la démo suivante que les controls scintillent lorsqu'on clique sur la form d'arrière-plan puisque la form au 1er plan perd le focus avant de le récupérer...
    http://sub0.developpez.com/delphi/pngform2.zip

    J'ai essayé avec les évènements, les messages, Application.OnMessage, un timer, etc... Je n'ai pas réussi à trouver. Si je mets la propriété Enabled de la form à False, ça marche , mais il ya un beep lorsque je clique dessus...

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 343
    Points : 392
    Points
    392
    Par défaut
    En fait l'idée serait de laisser le message WM_ arriver à la fenêtre mais de le passer à la trappe, une surcharge du message qui ne ferait rien.
    Il me semble avoir vu cela quelque part, si ça donne des idées au forum...
    Bon code

  3. #3
    Membre expérimenté
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Points : 1 331
    Points
    1 331
    Par défaut
    Tu peux pas utiliser l'évènement 'OnActivate' pour vite rechanger le focus ?

    Ou peut être faire des ShowModal pour contourner le pb ?

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 875
    Points : 11 365
    Points
    11 365
    Billets dans le blog
    6
    Par défaut
    pas de clignotement, mais plus drôle : en testant, des fiches s'ouvrent par dessus, et en cliquant sur le bouton de la TaskBar, ta fiche revient, sans les contrôles label, Memo, ni le bouton Exit jusqu'à ce que je clique dessus ???

    quand on clique sur le bouton de la TaskBar, ça envoie un message SYS_COMMAND avec un autre paramètre : WM_ACTIVATE dans ce cas ?

    est-ce ce message que tu cherches à catcher ?

  5. #5
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Merci pour vos réponses. Je vais essayer ces solutions.

    tourlourou, pour résumé, je possède 2 forms superposées; La form d'arrière-plan utilise un bitmap PNG obtenu avec la fonction UpdateLayeredWindow. Mais cette fonction masque aussi les contrôles de la form, j'ai donc été obligé d'utiliser une 2ème form transparente mise par dessus pour contenir les controls au 1er plan.
    Pour déplacer le programme, puisque la form du dessus (des controls) est transparente, je clique obligatoirement sur la form d'arrière-plan. C'est donc elle qui est cliquée et elle passe alors au 1er plan et du coups, les controls disparaissent...

    Merci pour votre aide.

  6. #6
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Salut!
    Il semblerait que WM_NCHITTEST fasse l'affaire...
    Merci à tous !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/05/2007, 10h37
  2. interdire de redimmentionner une fenêtre
    Par florantine dans le forum Agents de placement/Fenêtres
    Réponses: 9
    Dernier message: 09/12/2005, 09h21
  3. Réponses: 4
    Dernier message: 05/09/2005, 16h01
  4. Réponses: 3
    Dernier message: 22/08/2005, 17h15

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