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 :

ListView - l'index de la colonne de l'item sélectionné ?


Sujet :

Delphi

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 16
    Par défaut ListView - l'index de la colonne de l'item sélectionné ?
    Bonjour

    J'utilise le composant TlistView en multi colonnes avec gestion de l'événement <onSelect> qui me renvoie l'item actif.

    J'ai beau éplucher l'aide en ligne et tout le toutim, je ne parviens pas à récupérer l'index de la colonne de l'item. Je cherche un truc du genre <item.col>

    Cette propriété existe-t-elle ?
    Pour illustrer, voici la procédure en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.lstResultsSelectItem(Sender: TObject; Item: TListItem;
      Selected: Boolean);
    begin
    wordlight(item.data);
    end;

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 096
    Par défaut
    TListView.GetHitTestInfoAt : THitTests est un début

    Consulte le code de GetHitTestInfoAt dans ComCtrls, tu verras que cela utilise en interne un LVHITTESTINFO, je pense que iSubItem est très intéressant à mon avis !

    Plusieurs versions possibles !
    Tu as X et Y, tu as aussi TListColumn.Width, une petite boucle et tu trouves la colonne
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 16
    Par défaut
    J'avais effectivement envisagé d'utiliser l'information x et y mais j'espérais trouver plus précis. Merci pour ton aide !

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 096
    Par défaut
    X et Y sont fournis par Windows, lui aussi les utilisent en permanence pour savoir où tu cliques !
    Faut juste jouer avec ScreenToClient pour avoir les bonnes coordonnées

    J'ai utilisé MCHITTESTINFO pour le TMonthCalendar pour récupérer des zones hors de la grille de calendrier comme la zone des mois comme MCHT_CALENDARDATE ou MCHT_TODAYLINK pour affiner le OnClick

    Le LVHITTESTINFO est conçu pour cela !
    Si j'ai le temps, je le ferais dans mon application à bordel (en C++Builder)

    EDIT
    Code c++ : 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 TVCLManipForm::ListViewManipColumnDblClick(TObject *Sender)
    {
      //
      LVHITTESTINFO LstClicInfo;
      LstClicInfo.pt = ListViewManipColumn->ScreenToClient(Mouse->CursorPos);
     
      int RowIdx = ListViewManipColumn->Perform(LVM_SUBITEMHITTEST, 0, (LPARAM)&LstClicInfo);
      int ColIdx = LstClicInfo.iSubItem; // 0 = main, 1..n = sub
      if (RowIdx >= 0)
      {
        if (ColIdx > 0)
          ShowMessage(ListViewManipColumn->Items->Item[RowIdx]->SubItems->Strings[ColIdx - 1]); // 0 based
        else
          ShowMessage(ListViewManipColumn->Items->Item[RowIdx]->Caption);
      }
    }
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 16
    Par défaut
    Merci pour le tuyau, Shai.
    C'est quoi ton application à "bordel", tu projettes d'ouvrir une maison close ?

    ... je sors ...

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/08/2007, 14h04
  2. Index sur plusieurs colonnes
    Par JojoLaFripouille dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 20/07/2006, 15h32
  3. Réponses: 10
    Dernier message: 29/03/2006, 16h14
  4. Index sur une colonne Date
    Par sjaeger dans le forum Oracle
    Réponses: 11
    Dernier message: 10/11/2005, 14h55
  5. Réponses: 1
    Dernier message: 04/05/2005, 11h43

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