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 :

Comment faire défiler un TCustomListView ?


Sujet :

C++Builder

  1. #1
    Membre expérimenté Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 886
    Points : 1 526
    Points
    1 526
    Par défaut Comment faire défiler un TCustomListView ?
    Citation Envoyé par Dans l'aide Borland y'
    Indique le premier élément visible de la vue liste.

    __property TListItem* TopItem = {read=GetTopItem};

    Description

    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.

    TopItem n'est implémentée que si ViewStyle a la valeur vsReport ou vsList. Pour les vues liste de style vsIcon et vsSmallIcon, utilisez la propriété ViewOrigin pour déterminer la position de défilement.
    ça marche très bien, sauf que ça ne se compile pas: lorsque je met TopItem = ..., le compilateur me met "TopItem n'est pas accessible" (bien évidemment, il est défini en Read uniquement).

    ViewOrigin n'est également pas utilisable puisque j'ai la propriété vsList, et parce qu'il est uniquement Read aussi.

    Questions:

    - Comment faire pour faire défiler un TListView

    - Comment interpréter la phrase "Vous pouvez également faire défiler la vue en définissant TopItem": est-ce une mauvaise traduction, ou encore un bug de cette [mode=invisible pour les modos] /*)@+###à [/mode] de Borland ?

  2. #2
    Membre à l'essai
    Inscrit en
    Juillet 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 8
    Points : 10
    Points
    10
    Par défaut
    Salut

    Tu peux faire défiler ta TListView en rendant visible un TListItem qui n'apparait pas à priori sur la TListView courante (dans le cas où il y a une barre de défilement indiquant que d'autres item sont présents).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyListView->Items->Item[i]->MakeVisible(false);

  3. #3
    Membre expérimenté Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 886
    Points : 1 526
    Points
    1 526
    Par défaut
    Bien reçu, mon colonel.

    Sauf que le MakeVisible ne me garantit pas que l'élément est en haut de la liste, il est quelque part dans la partie visible, c'est tout.

    Et ça me suffit pas. Je veux pouvoir contrôler exactement la partie affichée. Pour utiliser le MakeVisible, il faudrait que je calcule le dernier de la liste visible (en fonction de la taille de la fenêtre, de la hauteur des lignes (comment on la calcule d'ailleurs ?), de si ya des images ou pas, etc...), puis que je fasse un MakeVisible pour le dernier puis pour le premier.

    Deuxième solution, faire afficher le tout dernier de la liste avec un MakeVisible, puis celui qui doit être le premier, mais ça entraîne un double défilement et un clignotement qui sont très désagréables.

    Il doit forcément y avoir un moyen plus simple ?

  4. #4
    Rédacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Points : 1 271
    Points
    1 271
    Par défaut
    Bonjour,

    Si c'est juste le pb du clignotement, tu peut faire un LockWindowUpdate
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    LockWindowUpdate(MyListView->Handle);
    // défilement
    LockWindowUpdate(0);
    Cordialement,

    Arnaud

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 10/02/2008, 23h52
  2. Comment faire défiler des images comme sur le site suivant
    Par tidus_6_9_2 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 17/01/2008, 14h32
  3. Réponses: 2
    Dernier message: 01/01/2008, 17h34
  4. [PHP-JS] Comment faire défiler des images en php ?
    Par innova dans le forum Langage
    Réponses: 4
    Dernier message: 19/11/2006, 12h09
  5. Comment faire défiler une image dans un DBImage
    Par kolac dans le forum Bases de données
    Réponses: 1
    Dernier message: 08/04/2006, 13h45

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