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 :

Comment pointer une ligne dans une ListView


Sujet :

Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 24
    Points : 7
    Points
    7
    Par défaut Comment pointer une ligne dans une ListView
    Je voudrais pointer une ligne dans une listView
    Avec une ListBox, il suffit de dire :
    ListBox1.ItemIndex:=4;
    pour avoir la ligne No.5 qui se "marque" puisque la ligne 0 existe.
    Avec la ListView, ça ne marche pas, il doit y avoir une autre ligne adaptée.
    Je ne l'est pas trouvée.
    Pourtant, il ne donne pas une erreur de syntaxe à la compilation.
    Si quelqu'un connaît la réponse, merci par avance de me l'indiquer.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 470
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 470
    Points : 1 343
    Points
    1 343
    Par défaut
    Bonjour à toutes et à tous,

    @ Tolede78, en jouant sur la propriété "Item.Selected".

    @+,

    Cincap

  3. #3
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2008
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 666
    Points : 643
    Points
    643
    Par défaut
    salut,

    Citation Envoyé par Tolede78 Voir le message
    Je voudrais pointer une ligne dans une listView
    Avec une ListBox, il suffit de dire :
    ListBox1.ItemIndex:=4;
    pour avoir la ligne No.5 qui se "marque" puisque la ligne 0 existe.
    Avec la ListView, ça ne marche pas, il doit y avoir une autre ligne adaptée.
    Je ne l'est pas trouvée.
    Pourtant, il ne donne pas une erreur de syntaxe à la compilation.
    Si quelqu'un connaît la réponse, merci par avance de me l'indiquer.
    il faut d'abord avoir le focus du ListView pour pouvoir sélectionner un item et puis se positionner sur l'item en question.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ListView1.SetFocus;
    ListView1.ItemIndex:=3;
    tu peux aussi le sélectionner avec des pointillés sans dessiner en "bleu" item sélectionné:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    ListView1.SetFocus;
    ListView1.Items[3].Focused := true;
    end;
    a+

    NABIL74

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 470
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 470
    Points : 1 343
    Points
    1 343
    Par défaut
    @ Tolede78, ou encore ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    procedure TMain.Quelleligneestslctionne1Click(Sender: TObject);
      begin
       if ListView1.ItemIndex = -1 Then
         begin
          Edit1.Text := 'Pas de Ligne séléctionnée';
           exit;
         end;
     
        Edit1.Text := 'La Ligne ' +  IntToStr(ListView1.ItemIndex + 1) + ' est sélectionnée';
      end;
    @+,

    Cincap

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 24
    Points : 7
    Points
    7
    Par défaut
    J'ai essayé les différentes options, et rien ne marche.
    Je ne peux pas utiliser "LV1.SetFocus" car j'ai des variables qui se détruisent.
    Peut-être que je n'ai pas exposé le problème assez en détail:
    Il s'agit d'un répertoire. Quand j'ajoute un nom, je le place à sa place dans le fichier par ordre alpha, et je connais son rang dans le fichier. Ensuite, j'affiche la ListView et je voudrais pointer sur le dernier enregistrement entré, c'est-à-dire, le rang dans le fichier -1
    Avec ListBox, la fonction "LV1.ItemIndex:=rangx" fonctionne.

    J'ai essayé "Item.Selected", mais il ne reconnaît pas "Selected"
    Non c
    déclaré qu'il me dit.
    Merci à tous

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 470
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 470
    Points : 1 343
    Points
    1 343
    Par défaut
    @ Tolede78,

    J'ai essayé "Item.Selected", mais il ne reconnaît pas "Selected"
    pourtant :

    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
    19
    20
    21
    22
    23
     
    procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
      Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
    begin
    with Sender as TListView do
      begin
        with Canvas do
        begin
     
               if Item.Selected then
          begin
            Brush.Color := cllime;//ou rgb(220,220,255);
            Pen.Style := psDot;
            Pen.Color := clGray;
          end
          else
          begin
            Pen.Style := psSolid;
            Pen.Color := Brush.Color;
          end;
      end;
     end;
    end;
    @+,

    Cincap

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 24
    Points : 7
    Points
    7
    Par défaut
    Merci à Cincap
    Ca me paraît tout de même un peu compliqué pour marquer une ligne.
    mais j'ai quand même noté la procédure que je vais décortiquer, car je n'avais jamais vu une déclaration de procédure avec autant d'arguments

Discussions similaires

  1. [XL-2007] Comment supprimer des lignes d'une plage dans une colonne sous condition
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 05/06/2015, 12h34
  2. Réponses: 4
    Dernier message: 15/10/2009, 14h33
  3. Réponses: 1
    Dernier message: 04/04/2008, 13h14
  4. [MySQL] Comment insérer 6 lignes en une fois dans une base mysql avec du PHP ?
    Par Alexandrebox dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/02/2008, 15h39
  5. Réponses: 3
    Dernier message: 29/01/2008, 13h08

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