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 :

[Composant Graphique] List Box "synchronis�s"


Sujet :

C++Builder

  1. #1
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par d�faut [Composant Graphique] List Box "synchronis�s"
    Oui Bonjour tout d'abord
    Dans mon appli j'ai 8 listx boxs qui recoivent chacune des donnees de maniere simultan�es, c'est a dire qu'elles ont, a n'importe quel moment, le meme nombre d'elements dans la liste.
    J'aimerais pouvoir, en deplacant la "scroll bar" de l'une des listes, deplacer celles de toutes les autres pour me retrouver au meme niveau, lorsque je parcours les listes en "scrollant".
    En gros je voudrais rendre les scrolls bars de mes differentes listboxs dependantes.
    Au mieux, je parviens a que lorsque l'on selectionnne un element d'un liste, les autres elements du meme index se selectionnent ds les autres listes. Mais ca ne fonctionne pas tres bien comme feinte :/

    Si vos avez une meilleure feinte, un composant plus adequat ou une solutiona ca, je vous en remercie d'avance
    Merci, bonne journ�e.

  2. #2
    Membre Expert
    Avatar de Gilles Lou�se
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Par d�faut
    Malheureusement, je ne crois pas qu'on ait acc�s � la position du scroll en temps r�el d'un ListBox. Ce que je vous conseillerais pour simulmer cet effet est de mettre un ScrollBar horozontal sur tous les ListBox, vous pouvez m�me cacher celui du ListBox au profit du nouveau.

    Voici le code pour deux TListBox. Au moment du OnShow de la forme principale, vous initialisez les Min et Max des TScrollBar ajout�s.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    void __fastcall TForm1::FormShow(TObject *Sender)
    {
    ScrollBar1->Min=0;
    ScrollBar1->Max=ListBox1->Count;
    ScrollBar2->Min=0;
    ScrollBar2->Max=ListBox1->Count;
    }
    Voici l'�v�nement OnChange du premier ScrollBar.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void __fastcall TForm1::ScrollBar1Change(TObject *Sender)
    {
    TScrollBar* S=(TScrollBar*)Sender;
     
    ListBox1->TopIndex=S->Position;
    ListBox2->TopIndex=S->Position;
     
    ScrollBar1->Position=S->Position;
    ScrollBar2->Position=S->Position;
    }
    Ce code convertit le Sender en un pointeur de type TScrollBar*. Ensuite le TopIndex de tous les ListBox est mis � la position du ScrollBar. Puis on impose aux positions de tous les TScrollBar d'�tre la m�me.

    Ensuite, vous forcez l'�v�nement OnChange du deuxi�me ScrollBar de la deuxi�me ListBox en le connectant � l'�venement ci-dessus, il appara�t d'ailleurs dans la liste d�roulante dans l'inspecteur d'objets (�venement OnChange de ScrollBar2).

    � partir de l�, il est facile de g�n�raliser ce principe pour autant de ListBox que vous voulez.

    � bient�t
    Gilles

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par d�faut
    Merci
    Ca marche impeccable

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par d�faut
    Ouais ok ca marche impec mais a pres usage, je me rends comptre que j'ai juste besoin d'une scrool barre pour bouger toutes les autres et que donc les uatres j'en ai pas besoin.
    Bref actuellement, j'ai une scrool bar qui me "dirige" toutes mes autres lists box grace a votre methode.
    Cependant, n'y a-t-il pas moyen de ne plus afficher les scroll bars des listbox pour ne plus avoir qu'a utiliser juste la scroll bar "globale"?
    Il me semblat que c'etait une propriet� des lists boxs mais je dois me tromper surement ...
    Merci encore.

  5. #5
    Membre Expert
    Avatar de Gilles Lou�se
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Par d�faut
    Je ne crois pas qu'on puisse ne pas afficher le ScrollBar vertical des TListBox, donc une astuce consisterait � faire se chevaucher les TListBox de mani�re � cacher leurs TScrollBar et de mettre le ScrollBar agissant sur le ScrollBar de la TListBox la plus � droite, ainsi on ne voit pas les TScrollBar des ListBox car ils sont tous cach�s, on ne voit que le ScrollBar agissant � droite.

    Une autre solution consisterait � utiliser des TMemo au lieu des TListBox mais je n'ai pas trouv� le moyen de modifier l'affichage d'un TMemo en imposant un num�ro de ligne comme ligne visible en haut (i.e. l'�quivalent de la propri�t� TopIndex des TListBox).

    � bient�t
    Gilles

  6. #6
    Membre habitu�
    Inscrit en
    Juin 2003
    Messages
    8
    D�tails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 8
    Par d�faut
    Salut je profite de ce topic pour verifier quelque chose. Vous parlez de scrollbar sur les listbox mais je n'arrive pas a avoir de scrollbar horizontale , j'ai uniquement la verticale.

    Qql peut il me confirmer l'existence de cette scrollbar horizontale dans une listbox et si oui comment l'afficher.
    Merci d'avance.

  7. #7
    CGi
    CGi est d�connect�
    Expert confirm�
    Avatar de CGi
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 061
    D�tails du profil
    Informations personnelles :
    Localisation : France, Allier (Auvergne)

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 061
    Par d�faut
    Ce que tu d�cris ressemble fortement � une ListView en style report.
    Site : http://chgi.developpez.com

    Pourquoi faire simple quand on peut faire compliqu� ? (Jacques Rouxel)

  8. #8
    Membre �prouv� Avatar de Flow_75
    Femme Profil pro
    Ing�nieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 42
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par d�faut
    salut les gars,


    Je voudrais savoir si il y avait possibilit� d'afficher sur une TListBox une scrollbar horizontale quand on a du text qui va hors de la fenetre.....?

    Merci.

  9. #9
    Membre confirm�
    Inscrit en
    Avril 2006
    Messages
    59
    D�tails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 59
    Par d�faut
    Citation Envoy� par Flob91
    salut les gars,


    Je voudrais savoir si il y avait possibilit� d'afficher sur une TListBox une scrollbar horizontale quand on a du text qui va hors de la fenetre.....?

    Merci.

  10. #10
    Membre confirm�
    Inscrit en
    Avril 2006
    Messages
    59
    D�tails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 59
    Par d�faut
    un scrollbar horizontal permanent c'est relativement facile
    automatique c'est une autre histoire
    voici un bout de code que j'ai fait pour une filelistbox
    si je ne m'abuse il fonctionne parfaitement
    je crois que tu pourras facilement l'adapter � une listBox


    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
    void __fastcall TForm1::FileListBox1Change(TObject *Sender)
    {
     
    int i,a,t=0;
    SendMessage(FileListBox1->Handle,LB_SETHORIZONTALEXTENT,0, 0L);
    int lignes= SendMessage(Form1->FileListBox1->Handle, LB_GETCOUNT, 0, 0L);
    for (i = 0; i < lignes; i++)
    {
    AnsiString repp=FileListBox1->Items->Strings[i];
     a=Canvas->TextWidth(repp);
    if (i==0||a>=t){  t=a;
     SendMessage(FileListBox1->Handle,LB_SETHORIZONTALEXTENT,a+23, 0);
      }
    }

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 2
    Dernier message: 29/11/2012, 16h10
  2. [Package listings] Commentaires XML et quote
    Par arnobidul dans le forum Mise en forme
    R�ponses: 0
    Dernier message: 27/07/2007, 11h54
  3. [d�butant] erreur "indice de liste hors limites(1)"
    Par lidouka dans le forum Langage
    R�ponses: 2
    Dernier message: 13/12/2005, 14h31

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