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 :

Plusieurs Tlist View


Sujet :

C++Builder

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 41
    Par défaut Plusieurs Tlist View
    bonjour !

    j'ai plusieurs TListView sur la meme fiche et j'ai des problemes pour les remplir.
    La ligne que j'utilise est :

    ListItem->Caption=chaine

    Chaine étant une chaine de caractere reçu grâce au port série. Le probleme est que cela s'affiche dans mon 1er ListView mais pas dans le 2eme, or je veux qu'il ne l'affiche que dans celui ci.
    Je ne sais pas comment on peux différencier les 2 ListViews.
    Si qqn peux m'aider ? merci

  2. #2
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Normalement tes ListeView n'ont pas le même nom, tu doit donc appelé le ListView qui t'interesse.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 41
    Par défaut
    Citation Envoyé par pottiez
    Normalement tes ListeView n'ont pas le même nom, tu doit donc appelé le ListView qui t'interesse.
    Oui les ListView ont des noms différents mais la ligne que j'ai marqué plus haut, elle, ne varie pas suivant le nom de mon Listview justement, car cette ligne utilise la déclaration TListItem *ListItem.
    Et en changeant le nom, cela ne change pas le probleme.

  4. #4
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonsoir,

    Tu devrais alors 'pointer' sur la TListView désirée, et aussi désigner l'item sur lequel tu veux travailler.
    Avec qqchose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TListItem *pItem = ListView1->Items->Item[1];
    Mais sinon, éventuellement, poste un bout de code.

    @ +

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 41
    Par défaut
    Citation Envoyé par Sunchaser
    Bonsoir,

    Tu devrais alors 'pointer' sur la TListView désirée, et aussi désigner l'item sur lequel tu veux travailler.
    Avec qqchose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TListItem *pItem = ListView1->Items->Item[1];
    Mais sinon, éventuellement, poste un bout de code.

    @ +
    Ce que j'avais fais, c'était de déclarer comme ceci :

    TListItem *ListItem.
    TListItem *ListItem2.


    et ainsi de pouvoir effectuer le traitement suivant :

    ListItem2 =Form1->ListView2->Items->Add(); //ajouter un nouvel item (ligne)
    ListItem2->Caption =trp2; //première case


    Mais cela ne change rien à mon problème et je pense que c'est identique à ce que tu voulais que j'essaye. Je ne suis pas sur que je puisse effectuer un traitement avec les Item[1...x] pour mon probleme, pour que vous voyez mieux mon ListView, le voici :




    voila, merci bcp !

  6. #6
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonsoir,

    Excuses moi, mais je n'ai pas l'impression de comprendre ou est ton problème.
    Faut il ajouter un élément dans une ListView, ou modifier le Caption d'un élément existant ? Comment se peut il que tu n'arrives pas a selectionner la bonne listview ?...
    J'ai un peu de mal a voir.

    Néanmoins, si tu veux une seule fonction pour gérer l'ajout des Items dans les différentes ListView, on peut imaginer qqchose comme:
    (juste une idée en passant ...)
    .dans le cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void __fastcall TForm2::ListView1ColumnClick(TObject *Sender,
    	  TListColumn *Column)
    {
    AjouterItem( ((TListView*)Sender), "Essai" );
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm2::AjouterItem(TListView * Cible, String Texte)
    {
    TListItem *pItem = Cible->Items->Add();
    pItem->Caption = "Essai";
    }
    .dans le .h, en private
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    TListItem *pItem;
    void __fastcall AjouterItem(TListView * Cible, String Texte);
    En espérant t'aider,
    @+

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 41
    Par défaut
    Alors en fait, je posséde 2 ListView que je souhaite remplir .

    Le probleme c'est que pour remplir la 1ere ligne de ces 2 ListView, il faut écrire :
    ListItem->Caption =trp2
    Donc lorsque je souhaite écrire dans un de ces 2 tableaux, comme c'est la meme ligne qui permet de gérer ces tableaux, la ligne en question s'ajoute dans les 2 !
    et meme en changeant le nom du ListItem et du listView cela ne change rien.

    c'est mieux expliquer ou pas ? ^^

  8. #8
    Membre chevronné
    Avatar de Altau
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    296
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 296
    Par défaut
    Tout d'abord, évite de cliquer sur le bouton "Citer" quand ce n'est pas nécessaire, ça complique la lecture du fil inutilement ; utilise plutôt le bouton "Ajouter une réponse".

    Sur le fond,
    Citation Envoyé par dussonline
    Alors en fait, je posséde 2 ListView que je souhaite remplir .
    Ca, je pense qu'on avait tous bien compris.
    Citation Envoyé par dussonline
    Le probleme c'est que pour remplir la 1ere ligne de ces 2 ListView, il faut écrire :
    ListItem->Caption =trp2
    Non ! ListItem est un pointeur qui doit correspondre à l'adresse d'un objet précis. L'adresse du premier item de TlistView1 n'est pas la même que celle de TListView2. Il ne peut donc pas avoir la moindre confusion entre les deux.
    Si on a TListItem *pItem; :
    Ou bien tu obtiens l'adresse de l'item avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pItem = ListeView1>Items->Add();
    ou bien par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pItem = ListView1->Items->Item[0];
    Il n'y a aucune confusion ; on parle bien de ListView1 et pas d'autre chose. Si tu as une fonction unique pour écrire dans les TListView, il faut d'abord lui indiquer avec lequel tu veux travailler.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 41
    Par défaut
    Citation Envoyé par Altau
    il faut d'abord lui indiquer avec lequel tu veux travailler.
    Merci pour ton aide !

    Alors ce que j'avais mis plus haut, j'ai bien 2 pointeurs différents pour chaque ListView que j'ai codé comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ListItem =Form1->ListView1->Items->Add();
    ListItem->Caption=trp2;
     
    ListItem2 =Form1->ListView2->Items->Add();   
    ListItem2->Caption =trp2;
    Logiquement l'un n'interagit pas avec l'autre. Pourtant la ligne avec le Caption est celle qui pose probleme car le 1er tableau vole la 1ere chaine destiné au 2eme, mais les chaines suivantes passent bien mais avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListItem2->SubItems->Add(trp3);
    car avec mon 1er ListView, je n'utilise pas de SubItems.

    Donc en fait, pouvons - nous contourner la ligne Caption par une autre ligne mais qui effectue le meme traitement ?

  10. #10
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonjour,

    Juste pour info, comment donnes tu une valeur a 'trp2' ?

    @+

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 41
    Par défaut
    C'est une chaine reçu par le port série :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    trp2 = Socket-> ReceiveText();

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 41
    Par défaut
    Apparemment le probleme a été réglé en mettant une temporisation sur l'affichage...bisard ^^

    Parcontre je voudrai savoir comment trier par ordre alphabétique par colonne?
    j'ai essayé Alphasort(); mais cela ne fonctionne pas vraiment ^^

  13. #13
    Membre chevronné
    Avatar de Altau
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    296
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 296
    Par défaut
    Avec le composant TAdvListView (freeware) de TMS SOFTWARE, les possibilités de tri sont sympa.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 41
    Par défaut
    Mis à part de rajouter un composant, il n'existe pas de propriété qui trie ?

  15. #15
    Membre chevronné
    Avatar de Altau
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    296
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 296
    Par défaut
    Si, si. Il faut regarder l'aide sur TListView. Mais c'est plus lourd à utiliser que TAdvListView.

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 41
    Par défaut
    D'accord, merci !

    une dernière question...je voudrai afficher le contenu de la colonne ou je click...par exemple 3eme colonne, 8eme ligne et affichage du contenu.
    J'ai trouvé pas mal de code sur ce forum et sur internet mais rien qui fonctionne alors je me demande comment faire ?

  17. #17
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonsoir,
    Issu d'une ancienne discussion sur les ListView:

    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
     
    void __fastcall TForm2::ListView1MouseDown(TObject *Sender, TMouseButton Button,
    	  TShiftState Shift, int X, int Y)
    {
    int ligne;
    int colonne;
      LVHITTESTINFO lvhtti;
      lvhtti.pt = Point(X, Y);
      if ( SendMessage(ListView1->Handle, LVM_SUBITEMHITTEST, NULL, reinterpret_cast<LPARAM>(&lvhtti)) != -1   )
      {
    	 ligne = lvhtti.iItem;
    	 colonne = lvhtti.iSubItem;
      }
      String S = ListView1->Items->Item[ligne]->SubItems->Strings[colonne-1];
      ShowMessage(S);
    }
    Ce code était pour les SubItems, reste a tester sur quoi tu cliques, si il n'y a pas de valeurs 'nulles', etc ...

    En espérant t'aider,
    @ +

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 118
    Par défaut
    Citation Envoyé par dussonline
    Mis à part de rajouter un composant, il n'existe pas de propriété qui trie ?
    J'avais fais ça à l'époque pour que l'utilisateur en cliquant sur l'entête de la
    colonne trie par ordre croissant ou décroissant. J'aurais accès à BCB ce soir
    et je poste le code. Je m'étais inspiré de l'aide BCB.

    @ ce soir

    Xav

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 41
    Par défaut
    Citation Envoyé par Sunchaser
    Bonsoir,
    Issu d'une ancienne discussion sur les ListView:

    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
     
    void __fastcall TForm2::ListView1MouseDown(TObject *Sender, TMouseButton Button,
    	  TShiftState Shift, int X, int Y)
    {
    int ligne;
    int colonne;
      LVHITTESTINFO lvhtti;
      lvhtti.pt = Point(X, Y);
      if ( SendMessage(ListView1->Handle, LVM_SUBITEMHITTEST, NULL, reinterpret_cast<LPARAM>(&lvhtti)) != -1   )
      {
    	 ligne = lvhtti.iItem;
    	 colonne = lvhtti.iSubItem;
      }
      String S = ListView1->Items->Item[ligne]->SubItems->Strings[colonne-1];
      ShowMessage(S);
    }
    Ce code était pour les SubItems, reste a tester sur quoi tu cliques, si il n'y a pas de valeurs 'nulles', etc ...

    En espérant t'aider,
    @ +
    Merci, je vais tester
    Citation Envoyé par Xav++
    J'avais fais ça à l'époque pour que l'utilisateur en cliquant sur l'entête de la
    colonne trie par ordre croissant ou décroissant. J'aurais accès à BCB ce soir
    et je poste le code. Je m'étais inspiré de l'aide BCB.

    @ ce soir

    Xav
    Merci, j'attends avec impatience

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 41
    Par défaut
    J'ai un Access Violation pour le code de Sunchaser, j'ai testé plusieurs colonnes mais à chaque click j'ai l'erreur

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/11/2012, 18h32
  2. Plusieurs ViewModel pour une View: Locator?
    Par nasimpat7 dans le forum Silverlight
    Réponses: 3
    Dernier message: 15/03/2011, 17h15
  3. Réponses: 4
    Dernier message: 30/07/2010, 16h19
  4. Réponses: 0
    Dernier message: 27/05/2009, 11h16
  5. Plusieurs View dans une MFC et affichage opengl
    Par fipovi3 dans le forum MFC
    Réponses: 9
    Dernier message: 08/10/2005, 05h07

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