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 :

Clique droit dans une ListBox


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2004
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 115
    Par défaut Clique droit dans une ListBox
    Bonjours a tous,

    voila, j'ai une listbox contenant ma liste de livre. J'ai mis en place un popup sur cette listbox. Donc dès que je clique avec le bouton droit ce popup s'affiche (ce qui est normal). Or ce que j'aimerais faire c'est dès que je fais un clique droit celui ci selectionne l'élément situé sous la souris tel un clique gauche.


    Merci de votre aide et bonne soirée a tous

  2. #2
    Membre expérimenté
    Avatar de Neo41
    Inscrit en
    Janvier 2003
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 241
    Par défaut
    Bonjour,

    voici une astuce basée sur le calcul de la hauteur d'un item et du Y de la souris:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    void __fastcall TForm1::ListBox1MouseUp(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
      if(Button == mbRight)
      {
        int Index = 0;
        Index = Y / ListBox1->ItemHeight;
        if(Index < ListBox1->Items->Count)
        {
            ListBox1->ItemIndex = Index;
        }
      }
    }
    Bon courage

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2004
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 115
    Par défaut
    Slt,

    merci de ton aide. ton astuce marche quasi bien. sauf que j'ai un leger soucis. Tant que je ne bouge pas la barre de défilement verticale ta méthode marche. Sauf que si je descend la barre, sa marche plus. Il reccupere l'item comme si cette barre n'avait bougé.

    Quelqu'uns aurait-il une solution ??

    MERCI EN TT CAS

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Salut
    Le calcul est correct, mais il faut aussi tenir compte de TopIndex
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    void __fastcall TForm1::ListBox1MouseUp(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
      if(Button == mbRight)
      {
        int Index = 0;
        Index = Y / ListBox1->ItemHeight;
        if(Index + ListBox1->TopIndex < ListBox1->Items->Count)
        {
            ListBox1->ItemIndex = Index + ListBox1->TopIndex;
        }
      }
    }
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2004
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 115
    Par défaut
    C'est bon j'ai trouvé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    void __fastcall TForm1Principale::ListBoxJeuxMouseDown(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
      if(Button == mbRight)
      {
        int Index = 0;
        Index = (Y / ListBoxJeux->ItemHeight)+ListBoxJeux->TopIndex;
     
        if(Index < ListBoxJeux->Items->Count)
        {
          ListBoxJeux->ItemIndex = Index;
          ListBoxClick(Sender);
        }
      }
    }
    Moi j'ai mis le code dans MouseDown car dans MouseUp le code ne se lancait que une fois sur 2. Et pour tenir compte du déplacement de la barre verticale j'ai rajouté a "Index" : TopIndex qui indique l'indice situé en haut de la listbox

    MERCI ENCORE DE TON AIDE

  6. #6
    Membre expérimenté
    Avatar de Neo41
    Inscrit en
    Janvier 2003
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 241
    Par défaut
    Désolé j'avais pas fais le test avec une barre de défilement

    PS; N'oublies pas le tag Résolu en bas à gauche

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

Discussions similaires

  1. réagir au clic droit dans une listbox
    Par simac dans le forum C++
    Réponses: 3
    Dernier message: 21/12/2014, 12h07
  2. cadrer a droite dans une ListBox
    Par gilles_906 dans le forum VB.NET
    Réponses: 5
    Dernier message: 16/04/2011, 11h53
  3. Récupérer les valeurs clique dans une ListBox
    Par zooffy dans le forum ASP.NET
    Réponses: 10
    Dernier message: 22/05/2008, 12h01
  4. Clic droit dans une ListBox
    Par tonton67 dans le forum C++Builder
    Réponses: 2
    Dernier message: 01/04/2008, 21h29
  5. clic droit pour selectionner dans une listbox
    Par Jeannot dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 23/08/2007, 16h32

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