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 :

D�clarer et Utiliser un TListItems


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �m�rite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    916
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 916
    Par d�faut D�clarer et Utiliser un TListItems
    Bonjour,
    Je cherche � "filtrer" mes donn�es dans un TListView. N'ayant pas trouv� les fonctions Show et Hide pour une ligne (ni le Visible) j'ai d�cid� de faire un delete des lignes non voulues.

    Pour revenir � la configuration initiale (avant les delete) j'ai voulu cr�� un ListItems sauvegardant mes lignes et le r�utiliser pour tout recharger.

    Le probl�me est que je n'arrive pas � cr�er ce TListItems (le S est important)
    D�s que j'ajoute un item, j'ai une exception.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    TListItems* AllDecodedFrameList;
    La m�thode new me met une erreur de compilation.

    Est ce que quelqun connait la mani�re de proc�der?
    Au passage, si mon id�e de filtrage par delete choc, je suis � l'�coute d'autres propositions?

    Merci

  2. #2
    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
    Salut,
    Pourquoi ne pas stocker les valeurs des lignes devant �tre 'invisibles', et donc en r�alit� supprim�es, dans une TStringList ?

    Sinon, je vais regarder �a...c'est 'marrant' aussi comme probl�me...
    @ +

  3. #3
    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
    Bon, pour l'instant j'ai rien trouv� de mieux que de g�rer dans un des �v�nements de dessin du TListView...
    Donc un petit exemple-proposition :
    dans le .h:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    private:	// Déclarations de l'utilisateur
            TStringList* AList;
            bool RestoreList;
    dans le .cpp:
    initialiser en amont la TStringList et la valeur bool�enne..
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    AList = new TStringList();
    RestoreList = false;
    J'ai rempli b�tement ma TStringList :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void __fastcall TForm7::Button7Click(TObject *Sender)
    {
    TListItem* pItem;
    for (int i = 0; i < 10; i ++)
    {
    pItem = ListView1->Items->Add();
    pItem->Caption = AnsiString("Nom ") + i;
    pItem->SubItems->Add(AnsiString("Prenom ") + i);
    }
    delete pItem;
    }
    On g�re le dessin des �l�ments:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void __fastcall TForm7::ListView1CustomDrawItem(TCustomListView *Sender,
          TListItem *Item, TCustomDrawState State, bool &DefaultDraw)
    {
    if (RestoreList == false)
    {
    if (Item->Caption.operator ==("Nom 3"))
    {
    AList->Add(Item->Caption + AnsiString("=") + Item->SubItems->Strings[0]);
    ListView1->Items->Delete(Item->Index);
    }
    }
    }
    mais aussi le tri des �l�ments affich�s :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    void __fastcall TForm7::ListView1Compare(TObject *Sender, TListItem *Item1,
          TListItem *Item2, int Data, int &Compare)
    {
    Compare = CompareText(Item1->Caption,Item2->Caption);
    }
    Pour 'restorer', dans cet exemple :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void __fastcall TForm7::Button8Click(TObject *Sender)
    {
    RestoreList = true;
    TListItem* pItem;
    for (int i = 0; i < AList->Count; i++)
    {
    pItem = ListView1->Items->Add();
    pItem->Caption = AList->Names[i];
    pItem->SubItems->Add(AList->Values[AList->Names[i]]);
    }
    AList->Clear();
    }
    PS : j'ai mis la propri�t� SortType a stBoth...

    Bon c'est pas tr�s finaud, mais �a peut toujours �tre une piste...non ?
    @ +

  4. #4
    Membre �m�rite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    916
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 916
    Par d�faut
    Ton id�e est � essayer. Le truc c'est que j'ai plusieurs "substring" comme ca, j'affiche mes donn�es comme si tu affiches les dossiers d'un r�pertoire en d�taille. (tu vois le nom, la date de cr�ation, modification ...) J'ai affich� mes donn�es avec ce principe l�. et l'id�e serait de sauver la ligne enti�re d'un seul coup et de la r�ajouter.

    Ca me fera un code assez lourd sinon. Mais il est vrai que ton id�e peut me permettre de d�bloquer mon hisoire en attendant de trouver mieux.

    Merci beaucoup.
    Je teste et je donne des news

  5. #5
    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 Vive les Struct et les TList....!
    Salut Bandit Boy,
    Je finissais par croire que tu avais disparu...
    Une autre solution, avec un Struct et une TList
    Dans le .h :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    //en amont de la déclaration de la TForm :
    typedef struct AListv
    {
            String ACaption;
            String ASubItemA;
            String ASubItemB;
    }TAlistv;
    //et dans le private de la TForm:
    private:	// Déclarations de l'utilisateur
            TList* AList;
            bool RestoreList;
            TAlistv *AStruct;
    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
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    void __fastcall TForm7::ListView1CustomDrawItem(TCustomListView *Sender,
          TListItem *Item, TCustomDrawState State, bool &DefaultDraw)
    {
    if (RestoreList == false)
    {
    if (Item->Caption.operator ==("Nom 3"))
    {
    AStruct = new TAlistv;
    AStruct->ACaption =Item->Caption;
    AStruct->ASubItemA = Item->SubItems->Strings[0];
    AStruct->ASubItemB = Item->SubItems->Strings[1];
    AList->Add(AStruct);
    ListView1->Items->Delete(Item->Index);
    }
    }
    }
    //et pour restaurer :
    void __fastcall TForm7::Button8Click(TObject *Sender)
    {
    RestoreList = true;
    TListItem* pItem;
    for (int i = 0; i < AList->Count; i++)
    {
    AStruct = (TAlistv*)AList->Items[i];
    pItem = ListView1->Items->Add();
    pItem->Caption = AStruct->ACaption;
    pItem->SubItems->Add(AStruct->ASubItemA);
    pItem->SubItems->Add(AStruct->ASubItemB);
    }
    AList->Clear();
    }
    //évidememnt faut avoir déclarer qq part en amont :
    AList = new TList();
    RestoreList = false;
    @ +

    //edit : j'aurais du y penser avant...

  6. #6
    Membre �m�rite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    916
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 916
    Par d�faut
    Citation Envoy� par Cantrelle
    Salut Bandit Boy,
    Je finissais par croire que tu avais disparu...
    //edit : j'aurais du y penser avant...
    Pas d'ici
    Id�e sympa, je teste ca demain et je confirme le

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

Discussions similaires

  1. [D�butant] D�clarer et utiliser une fonction globale
    Par Bakkach dans le forum VB.NET
    R�ponses: 11
    Dernier message: 21/09/2012, 18h53
  2. D�clarer et utiliser un tableau
    Par Bundy*Al dans le forum D�buter
    R�ponses: 2
    Dernier message: 29/08/2009, 20h10
  3. D�clarer et utiliser plusiieurs librarys C++ dans la m�me classe
    Par cereal dans le forum API standards et tierces
    R�ponses: 1
    Dernier message: 20/06/2007, 16h55
  4. R�ponses: 6
    Dernier message: 03/01/2006, 13h36

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