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

C++Builder Discussion :

[Listview] Changer la couleur de fond d'un item sur survol souris


Sujet :

C++Builder

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 49
    Points : 27
    Points
    27
    Par défaut [Listview] Changer la couleur de fond d'un item sur survol souris
    Bonsoir à tous. Ou bonjour, plutôt, étant donnée l'heure.
    Je viens de chercher sur le forum, mais à première vue pas de réponse satisfaisante. Pardon par avance si j'ai mal cherché.

    Voilà, comme indiqué dans le titre, je souhaiterais, sur l'évènement onMouseMove() d'un Listview, pouvoir changer dynamiquement la couleur de fond de l'item que je suis en train de survoler. Pas la couleur de la font du Caption, mais la couleur de fond, via un "Canvas->Brush->Color = MaCouleur".

    Dans cet évènement, j'arrive, bien entendu, à connaître l'index de l'item survolé. Mon problème étant que je ne sais pas comment "remettre un coup de peinture". Je serais dans un évènement onCustomDrawItem(), la question ne se poserait pas. Faut-il que je force le déclenchement de cet évènement ?

    Je précise également que je ne veux en aucun cas utiliser la propriété HotTrack, car l'effet obtenu est relativement immonde, pardonnez-moi ^^
    Et puis on est tributaire de la gestion intrinsèque, et de ce fait, cantonné à une affreuse couleur bleue.

    Donc voilà. Pour résumer, j'aimerais réimplémenter ma propre gestion de ce "HotTrack".
    Est-ce réalisable ? Quelles sont les pistes à suivre ?

    Par avance merci.
    Cordialement.

    Run.

  2. #2
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 288
    Points : 334
    Points
    334
    Par défaut
    Oui, il faut que tu implémente du custom draw sur ton ListView.
    Dans ce cas il faudra aussi que tu garde la propriété hot track car c'est elle qui provoque l'événement de dessin dans le custom draw.
    Si tu craint des effets de bord de la VCL dans le hot track tu peux toujours essayer de shunter la VCL en mettant la propriété HotTrack a false et en forçant toi-même le style du List View (LVS_EX_TRACKSELECT). je n'ai pas vérifié dans le source de la VCL, parfois ça marche (quand la VCL se réfère uniquement à ses propriétés) parfois non (quand elle interroge Windows).

    yarp
    www.senosoft.com

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 49
    Points : 27
    Points
    27
    Par défaut
    Salut Yarp. Désolé pour le retard de réponse.

    Problème résolu, et sans passer HotTrack à true. J'ai déclaré deux entiers longs, un pour l'item précédemment sélectionné, et le courant.

    Dans onMouseMouve, j'initialise correctement les valeurs.

    Si l'indice de l'item précédent est valide (différent de -1 dans mon cas) je passe Item->StateIndex de l'item correspondant à isNone.

    Si l'indice de l'item courant est également valide, Item->StateIndex de l'item courant passe à isSelected.

    Et enfin, il ne reste plus dans onCustumDrawItem qu'à tester la valeur Item->StateIndex et appliquer la couleur de fond suivant la valeur.

    Merci, et au plaisir !

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

Discussions similaires

  1. changer la couleur de fond d'un item specifique dans la listbox
    Par bily-s dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 23/07/2010, 17h09
  2. comment changer la couleur de fond dans un box au survol
    Par ml1234 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 23/05/2009, 15h56
  3. Changer la couleur de fond cellules ListView
    Par mpereg dans le forum Général VBA
    Réponses: 0
    Dernier message: 24/03/2008, 11h48
  4. [POO] Changer la couleur de fond d'un tableau
    Par Netoman dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/12/2004, 20h12
  5. Changer la couleur de fond de l'écran
    Par tnk dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 19/01/2003, 01h37

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