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

MFC Discussion :

Manipulation scrollbar de CListCtrl


Sujet :

MFC

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    177
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 177
    Par d�faut Manipulation scrollbar de CListCtrl
    Bonjour � tous!
    Apr�s m'�tre arrach� la moiti� des cheveux sur ce probl�me, je me sens dans l'obligation de vous demander de sauver l'autre partie de mon cr�ne bient�t chauve
    Je me connecte � une base de donn�es pour r�cup�rer des lignes, mais l� o� �a se complique, c'est que je vais devoir attaquer des bases poss�dant plusieurs centaines de milliers de lignes.
    Je dois afficher ces donn�es dans un CListCtrl, mais je ne r�cup�re que 5000 lignes par 5000 lignes.
    L'id�e serait de dire :
    Ma CListCtrl contient, par exemple, 100 000 lignes (SetScrollInfo)
    Donc, quand j'affiche mes 5000 lignes dans le haut de la liste, j'ai une scrollbar verticale qui est affich�e comme si la liste contenait bien mes 100 000 lignes.
    Jusqu'ici tout va bien!

    Mais ensuite, je demande � descendre plus bas dans la liste. Et si on descend en dessous des 5000 lignes, l'utilisateur voit du vide.
    L'id�e serait de rafraichir, au moment du rel�chement de la scrollbar.
    Je r�ussi � intercepter l'�v�nement parfaitement, mais je n'arrive pas � dire � ma liste:
    Maintenant tu affiches 5000 lignes (que j'ai nouvellement copi� en m�moire) � l'endroit que je veux dans la liste, tout en gardant la m�me taille de scrollbar:

    - Scrollbar calcul�e et affich�e pour 100 000 �l�ments dans la liste
    - 5000 lignes affich�es entre la position (mettons) 60 000 et 65 000 (le reste des lignes de la liste est vide)
    - Position de la Scrollbar coh�rente avec la position des 5000 lignes par rapport � l'ensemble.

    J'esp�re que j'ai �t� clair.
    Mon probl�me est compliqu� car je dois afficher les donn�es de base de donn�es ENORMES, dans une CListCtrl, sans pour autant saturer le serveur de requ�tes SELECT. Si vous avez une autre solution : JE SUIS PRENEUR!

    Mais quoi qu'il en soit, s'il vous plait : AIDEZ MOI!
    Merci d'avance

  2. #2
    R�dacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par d�faut
    Utilisation des listctrl 'virtuel' (http://www.codeproject.com/KB/list/virtuallist.aspx)
    En gros, cela pourrait � �a:
    1/ Une premi�re requ�te pour le nombre d'enregistrement,
    2/ Un SetItemCount(),
    3/ Un cache �ventuel pour tes donn�es et �viter les select trop fr�quent,
    4/ Et bien s�r, le traitement de LVN_GETDISPINFO

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    177
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 177
    Par d�faut
    Bon ok!
    Franchement c'est vraiment g�nial car, maintenant, j'arrive a afficher ce que je veux de la base de donn�e et peu importe la quantit� de donn�e.
    Seul ENORME probleme, c'est que j'utilise d�j� une librairie qui me permet d'�diter n'importe quel champ de ma liste
    Cette �dition fonctionne sur un principe de SetItemText..
    Je pense que je n'ai pas besoin de d�tailler plus, vous comprenez ce que cela engendre

  4. #4
    R�dacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par d�faut
    Modification des donn�es par SetItemText Pas tr�s bien ficel� tous �a. Il aurait �t� plus logique de mettre � jour les donn�es puis de rafraichir l'IHM au besoin...
    Bon, si tu peux modifier ta lib, alors c'est le mieux � faire.
    Si tu ne peux pas modifier ta lib, alors une piste peut �tre de subclasser ton contr�le et traiter le LVM_SETITEMTEXT ou LVM_SETITEM.

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    177
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 177
    Par d�faut
    Modification des donn�es par SetItemText
    Il y a un autre moyen?

    Parce que si c'est le cas, je suis pr�t � faire les modifs qui s'imposent...
    D'un autre cot�, je n'ai pas vraiment le choix

  6. #6
    R�dacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par d�faut
    Citation Envoy� par fantomchris Voir le message
    Il y a un autre moyen?
    En toute logique, tu devrais mettre � jour ton 'document' et ensuite rafra�chir les donn�es l� o� il y en a besoin.

  7. #7
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    177
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 177
    Par d�faut
    Ce que tu veux dire, c'est que je dois entrer les donn�es dans ma liste chain�e, et ensuite renvoyer vers la liste?

Discussions similaires

  1. R�ponses: 2
    Dernier message: 27/05/2011, 19h04
  2. R�ponses: 14
    Dernier message: 04/11/2008, 10h25
  3. R�ponses: 6
    Dernier message: 07/09/2005, 20h31
  4. [Listbox] ScrollBar Horizontal
    Par haleem dans le forum VB 6 et ant�rieur
    R�ponses: 4
    Dernier message: 20/04/2005, 07h53
  5. [MFC] CListCtrl : manipuler Selectionchanged
    Par mychawel dans le forum MFC
    R�ponses: 2
    Dernier message: 13/07/2004, 14h16

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