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 :

Aller au dernier item d'un listview


Sujet :

Delphi

  1. #1
    Membre extrêmement actif Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 75

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Points : 171
    Points
    171
    Par défaut Aller au dernier item d'un listview
    Bonjour

    j essai de me positionner au dernier element de mon listview, mais rien a faire

    je fais ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListView1.Items[ListView1.Items.Count - 1].Selected := True;
    Ou est le pb ?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Mars 2007
    Messages : 91
    Points : 95
    Points
    95
    Par défaut
    Mr Cazaux-Moutou-Philippe.

    je ne crois pas qu'il y'as une erreure dans ton code..
    ajoute un Tedit pour le voir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ListView1.Items[ListView1.Items.Count - 1].Selected:=True;
    Edit1.Text := ListView1.Selected.Caption;
    tu dois seulement passer le focus à la Listeview :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ListView1.Items[ListView1.Items.Count - 1].Selected:=True;
    ListView1.SetFocus;

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 264
    Points : 41 665
    Points
    41 665
    Billets dans le blog
    64
    Par défaut
    ceci marche parfaitement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     TreeView.Selected:=TreeView.Items[TreeView.Items.Count-1];
    OOps je viens de m'apercevoir que c'était un listview, je m'étais habitué a tes Treeview

  4. #4
    Membre extrêmement actif Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 75

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Points : 171
    Points
    171
    Par défaut
    en fait je vois que le pb n est pas qu il ne le selectionne pas, c est qu il y a beaucoup d'images et donc un ascenceur vertical, il selectionne bien le dernier mais je suis obligé de faire défiler l'ascenceur pour le voir

    comment le faire scroller jusqu au dernier ?

    merci

  5. #5
    Membre habitué Avatar de Ludo_360
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 295
    Points : 191
    Points
    191
    Par défaut
    J'ai eu le même problème lors d'un débug d'une application, voici le code debugué:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    listbox1.Items.add(var1);
    listbox1.Selected[aa]:= true;  //selection pour afficher le dernier de la liste
    listbox1.Selected[aa]:= false; // déselction pour ne pas garder le focus
    inc(aa);
    Je ne comprends pas pourquoi ton code ne marche pas... peut-être devrais tu te servir d'une variable pour indiquer quel élément tu veux sélectionner...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    var_item:= ListView1.Items.Count - 1;
    ListView1.Items[var_item].Selected := True;
    essai avec un "var-item" prédéfini déja voir ce que ça donne.. =)

  6. #6
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut
    Bonjour,

    Cette solution ne marche pas.
    Si la ligne désirée est bien sélectionnée, la fenêtre ne descend pas pour qu'elle soit bien visible sans jouer de la molette.

    Pour l'instant, je fait un truc laborieux et bancal, mais ca marche:
    LV.Scroll(0,i*11);

  7. #7
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Il existe la méthode MakeVisible de TListItem.

    @+

  8. #8
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut
    Extra !!!

    Je viens de trouver ça:
    http://www.developpez.net/forums/sho...light=listview

    Mais dommage, tout de même que la propriété TopItem soit en lecture seule, ca aurait été le must.

  9. #9
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut
    Bonjour Claudius,

    Tu m'as grillé de quelques secondes...

    Sais tu comment faire pour que la ligne apparaisse en haut, et non en bas de la liste visible ?
    Dans l'aide, ils disent qu'on peut renseigner la propriété TopItem, mais quand on compile, ca pête.

  10. #10
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par dacid
    Tu m'as grillé de quelques secondes...


    Citation Envoyé par dacid
    Sais tu comment faire pour que la ligne apparaisse en haut, et non en bas de la liste visible ?
    Non, mais je vais jeter un coup d'oeil !

    [EDIT] Euh, pas simple c't affaire [/EDIT]

    @+

  11. #11
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Re,

    Par exemple un truc comme ca:
    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
     
    uses
      CommCtrl;
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      AListItem: TListItem;
      ItemRect: TRect;
    begin
     
      with ListView1 do
      begin
        AListItem := Items[7]; // par exemple 8° élément
        AListItem.Selected := True;
     
        if ListView_GetItemRect(Handle, 0, ItemRect, LVIR_LABEL) then
          Scroll(0, (ItemRect.Bottom - ItemRect.Top) * (AListItem.Index - TopItem.Index));
      end;
    end;
    @+ Claudius

  12. #12
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut
    Hi,

    Je m'en doutait que mon scroll aurait pointé le bout de son nez.

    C'est un peu plus ardu que le MakeVisible, mais si ca marche...
    Je vais essayer ca bientot.

    Merci pour ta réponse.

    PS: J'ai édité plus haut, mais je ne sais pas si tu l'as vu.
    Dans l'aide, Delphi dit qu'on peut affecter TopItem, mais le compilateur dit qu'il est en lecture seule... Y a p-e une surcharge ou qq chose comme ça.

  13. #13
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Re,

    Citation Envoyé par dacid
    Dans l'aide, Delphi dit qu'on peut affecter TopItem, mais le compilateur dit qu'il est en lecture seule... Y a p-e une surcharge ou qq chose comme ça.

    Oui effectivement il y a une erreur dans l'aide.
    Citation Envoyé par Aide Delphi 7
    Consultez la propriétéTopItem pour déterminer le premier élément de la vue liste que l'utilisateur peut voir.TopItem reflète la manière dont la vue liste a défilé.Vous pouvez également faire défiler la vue en définissant TopItem.
    Mais malheureusement la propriété est définit ainsi, donc en lecture seule.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        property TopItem: TListItem read GetTopItem;
    @+ Claudius

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

Discussions similaires

  1. ListView Multiselection dernier item selectionné
    Par Julien666 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 30/10/2007, 16h45
  2. Aller au dernier enregistrement +1
    Par curt dans le forum Access
    Réponses: 1
    Dernier message: 22/05/2006, 19h10
  3. [C#]Supprimer un item d'un listView
    Par fafa139 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 19/05/2006, 20h05
  4. [C#] Suppression d'un item dans une listview
    Par Popof dans le forum Windows Forms
    Réponses: 6
    Dernier message: 15/04/2006, 14h58
  5. Changer dynamiquement la couleur d'un item d'une listview
    Par little_cypress dans le forum C++Builder
    Réponses: 2
    Dernier message: 29/11/2004, 15h46

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