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 :

[débutant] Listview et double-clic


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 [débutant] Listview et double-clic
    Bonjour et oui c'est encore moi. Tjrs des gros pbs avec le composant listview.
    Enoncé du problème très simple, solution impossible (pour moi lol)
    Voilà, j'aimerais que lorsque je double-clique sur n'importe quelle "case" de ma liste, ça me renvoie le numéro de la ligne correspondante.
    Parce que voilà, ensuite je suis sensé ouvrir une autre fenetre et cette autre fenetre a besoin de quelques infos (pas toutes) situées dans les cases de la ligne qui a été selectionnée.
    Je ne sais pas si j'ai été assez clair, du moins je l'espère. Je suis sur cette galère depuis ce matin et j'avoue que je commence à perdre espoir..
    Je vous remercie par avance, toute proposition (décente ) est la bienvenue 8)

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Salut,

    Une solution est d'utiliser la propriété Selected de la ListBox.
    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    // Dans l'evenement OnClick de la ListBox
    int index = 0;
    while (!ListBox->Selected[index] && index < ListBox->Count)
    {
    index++
    }
    En sortie de la boucle, si la valeur de index est inférieure au nombre d'items dans la ListBox, alors index est l'indice de l'item sélectionné.

    J'espère que ça répond à ta question.

  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 bensh merci pour ta réponse mais ma question concerne le composant TListView et non TListBox; Avec TlistBox en effet pas de pbs lol, mais ça m'a l'air un brin plus complexe avec TLIstView.
    Je suis sur ce $#%^&&# de problème depuis ce matin

  4. #4
    Membre régulier
    Avatar de bebeours
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 103
    Points : 123
    Points
    123
    Par défaut
    J'ai peut être pas bien compris ce que tu souhaites faire mais la propriété ItemIndex de ta TListView me semble être la solution.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Désolé, j'avais mal lu la question.

    As-tu essayé la propriété ItemFocused pour récupérer l'item sélectionné et ensuite la méthode GetNextItem en spécifiant les directions Right et Left. De proche en proche, tu peux ainsi récupérer tous les éléments d'une ligne.

  6. #6
    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 bebeours, effectivement c'est l'itemindex que je cherche à récupérer. Je viens de tester à l'instant, le point positif c'est que ça ne marche que lorsque je clique sur des "cases" de ma première colonne.
    Par contre lorsque je clic sur les cases des autres colonnes, ça me renvoie toujours -1.
    Y a-t-il un moyen de résoudre ce problème, genre une sorte d'ItemIndex pour les colonnes ?
    Damn j'en peux plus lol, la TListview va me dégouter de builder avant d'avoir commencé
    Merci pour la piste, je sens que je suis pas loin, du moins j'espère...

  7. #7
    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
    Oops bensh désolé j'avais pas vu ton message. Merci pour l'astuce ItemFocused je note ça peut tjrs servir, mais en fait je cherche vraiment uniqument le numero de la ligne.
    Merci à tous les 2 de me pêter main forte en tout cas, je me sens moins seul

  8. #8
    Membre régulier
    Avatar de bebeours
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 103
    Points : 123
    Points
    123
    Par défaut
    Et si tu utilises :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ListView1->Selected->Index;
    ça fonctionne mieux ?

  9. #9
    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
    Re bebeours.
    J'avais testé cette solution ce matin et elle est pire que celle que tu m'as aimablement proposé tt à l'heure.
    A savoir que tjrs pareil, pour les items de la première colonne aucun souci ça renvoie chaque fois l'index associé nickel.
    Par contre qd je double clique sur des cases hors de la première colonne, j'ai une exception "Access violation at adress..." lol. Enfin non pas lol du tout ^^
    Je commence à croire que je que je veux faire est impossible, et pourtant j'ai vu le même systeme sur un autre logiciel (dont je n'ai pas le source of course)
    Merci quand même.

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 481
    Points : 242
    Points
    242
    Par défaut
    Voir à :
    http://groups.google.fr/groups?q=LVHITTESTINFO+lvhtti&hl=fr&lr=&ie=UTF-8&selm=3977B64D.77D0A146%40cornell.edu&rnum=1

  11. #11
    Membre régulier
    Avatar de bebeours
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 103
    Points : 123
    Points
    123
    Par défaut
    J'ai une autre piste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ListView1->GetNearestItem(ListView1->ScreenToClient(Mouse->CursorPos,sdLeft))->Index;
    Ca donne quoi ?

  12. #12
    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
    Alors là je dis Waowwwwwwwwwwwww youpi youpi Pasqualini mon sauveur Yeah !!
    Mais c'est un truc de malade cette solution, tu m'étonnes je pouvais toujours chercher lol.

    Re bebeours, au moment où je poste ce message je n'ai pas encore testé ta solution tellement je suis content d'avoir trouvé un bout de code qui marche.
    Mais je vais le faire, et si ça marche ce serait excellent parce que là c'est quand même "hot", jamais j'aurais pu trouver tout seul.
    Je te tiens au courant, là je fais un break parce que overdose de BCB, j'y suis depuis 10h ce matin non stop
    Merci encore à vous tous et spéciale dédicace à Pasqualini.
    Heureusement que y a des gens comme vous, ça fait vraiment plaisir 8)

  13. #13
    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
    Bonsoir bebeours, je viens de tester le bout de code que m'as donné, mais malheureusement chez moi il ne passe pas à la compilation.
    Et comme d'une part je n'ai pas les compétences requises pour le corriger, et que d'autre part grâce à Pasqualini "ça tourne" à présent, je pense que je vais laisser comme ça.
    Encore une fois merci de t'être (de vous être) employés à résoudre ce problème, vous m'avez enlevé une sacrée épine du pied.

    ===== Edition ===========

    Au cas où le lien de pasqualini viendrait à ne plus marcher - on n'est jamais trop prudent, je copie ci dessous la portion de code qui m'a sauvé la vie, si ça peut éviter à d'autres de galérer comme moi...

    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
    16
    17
    18
     
     
    void __fastcall TForm1::ListView1MouseDown(TObject *Sender,
       TMouseButton Button, TShiftState Shift, int X, int Y)
    {
       LVHITTESTINFO lvhtti;
       lvhtti.pt = Point(X, Y);
     
       if (SNDMSG(ListView1->Handle, LVM_SUBITEMHITTEST, 0,
                  reinterpret_cast<LPARAM>(&lvhtti)) != -1)
       {
          const int row = lvhtti.iItem;
          const int col = lvhtti.iSubItem;
     
          ShowMessage(row);
          ShowMessage(col);
       }
    }

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

Discussions similaires

  1. double clic listview +usercontrol
    Par genie-netcom dans le forum Windows Forms
    Réponses: 1
    Dernier message: 16/12/2009, 12h30
  2. Cocher une checkbox au double clic dans un listview
    Par fred65200 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/01/2009, 12h12
  3. Réponses: 2
    Dernier message: 09/10/2007, 11h31
  4. Réponses: 3
    Dernier message: 25/08/2006, 14h01
  5. Réponses: 5
    Dernier message: 08/06/2006, 16h11

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