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 :

Detecter les clic pour des composants superposés.


Sujet :

Delphi

  1. #1
    Membre éclairé Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Points : 717
    Points
    717
    Par défaut Detecter les clic pour des composants superposés.
    Bonjour à tous,

    La question est plus ou moins dans le titre. Voilà, tous les composants d'une simulation électrique que je crée sont issus d'un TImage. Du coup c'est bien plus facile de détecter un clic; un dblclic...
    Le problème maintenant c'est qu'on me demande d'afficher un popup de sélection lorsque plusieurs éléments sont superposés.

    Donc ma question c'est, existe-t-il, si possible sans tester pixel par pixel mes composants, un moyen d'obtenir la liste de tous les éléments se trouvant sous le curseur de la souris ?

    Merci, et A+.
    For crying out loud !

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut

    Tu peux tester par exemple en utilisant ClientRect de TImage (à vérifier) et PtInRect qui te renverra si oui ou non le curseur est dans l'image.
    Ensuite, grâce à ControlCount, tu parcours toutes les TImage qu'il y a sur la Form
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  3. #3
    Membre éclairé Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Points : 717
    Points
    717
    Par défaut
    Merci pour ton aide.

    Effectivement la propriété à l'air de marcher (Avec toutefois BoundsRect au lieu de ClientRect).

    Il me reste quand même un problème: la détection du mouseMouve ou du MouseClic...Je souhaiterais la faire sur ma fiche principale, mais c'est le TImage le plus "haut" qui intercepte l'évènement. Je sais qu'il existe un moyen pour intercepter un message windows mais là je vois pas comment.

    Merci encore.

    A+.
    For crying out loud !

  4. #4
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 152
    Points
    10 152
    Par défaut
    Si changer ta manière de faire n'est pas trop contraignante, tu ferais mieux d'utiliser un TPaintBox et de gérer tes composants électriques par des objets "invisible", qui se dessinent sur le TPaintBox. Ainsi, tes traitements seront beaucoup plus rapides, et il te suffira d'utiliser le OnMouseXXX du TPaintBox.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  5. #5
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Citation Envoyé par sjrd
    Si changer ta manière de faire n'est pas trop contraignante, tu ferais mieux d'utiliser un TPaintBox et de gérer tes composants électriques par des objets "invisible", qui se dessinent sur le TPaintBox. Ainsi, tes traitements seront beaucoup plus rapides, et il te suffira d'utiliser le OnMouseXXX du TPaintBox.
    +1
    Effectivement si tu classes tes composants comme des classes qui se dessinent et ont leur taille et leur position respectives, ce sera mille fois plus simple de faire ce que tu veux. Et en plus, ce sera plus rapide à afficher, moins lourd en ressource et plus élégant. Bref, que demander de plus ?
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  6. #6
    Membre éclairé Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Points : 717
    Points
    717
    Par défaut
    Oui, à ce stade je peux encore changer ma facon de faire.

    En fait j'avais choisit un TImage parceque je trouvais qu'on pouvait afficher des images plus complexes avec, et parceque je pensais implémenter un changement d'icônes pour mes objets...

    Merci à vous, je considère mon problème comme résolu.

    A+.
    For crying out loud !

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

Discussions similaires

  1. Désactiver les contraintes pour des tests unitaires
    Par felipe2000fr dans le forum Hibernate
    Réponses: 1
    Dernier message: 06/04/2011, 09h50
  2. Réponses: 3
    Dernier message: 19/09/2009, 16h37
  3. Réponses: 6
    Dernier message: 13/05/2009, 15h27
  4. Detecter les clic sur les lien de mon site
    Par toure32 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/12/2007, 13h18

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