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 du Club
    Inscrit en
    Octobre 2004
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 115
    Points : 68
    Points
    68
    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 averti
    Avatar de Neo41
    Inscrit en
    Janvier 2003
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 241
    Points : 403
    Points
    403
    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 du Club
    Inscrit en
    Octobre 2004
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 115
    Points : 68
    Points
    68
    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
    Points : 6 498
    Points
    6 498
    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;
        }
      }
    }

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 115
    Points : 68
    Points
    68
    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 averti
    Avatar de Neo41
    Inscrit en
    Janvier 2003
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 241
    Points : 403
    Points
    403
    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