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 :

Ajouter propriété et méthode à la classe TListItem


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 135
    Par défaut Ajouter propriété et méthode à la classe TListItem
    Bonjour,

    Voici mon soucis, j'aimerai ajouter une propriété <Completed> et une méthode <AddSuperString> à la classe existante TListItem de tel sorte que si:
    Une TListView est ajoutée dans mon projet, je puisse faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    TListItem *pItem;
     
    pItem = ListView1->Items->AddSuperString("toto");
    ListView1->Items->Completed = true;
    comme on peut faire par défaut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    TListItem *pItem;
     
    pItem = ListView1->Items->Add();
    ListView1->Items->Count = 0;       // Enfin même si on ne peut pas faire avec Count imaginer avec ListView1->Visible = false;
    bref, ajouter une méthode et une propriété à la liste des méthodes d'une TListItem, sans devoir créer sa propre classe ou une classe hérité car je veux que les classes comme TListView voit automatiquement mes méthodes et propriétés ajoutées.

  2. #2
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    Je sais que je remonte ce message de loin, mais j'ai peut-être une réponse.

    À la place d'utiliser des TListItem avec ta TListView, tu pourrais utiliser la listview en mode virtuel. Pour faire ceci il suffit de mettre la propriété OwnerData à true et d'enregistrer tes données ailleurs. De cette façon tu chercheras directement dans la mémoire et pas la TListView.

    Voici un peu de code pour t'inspirer:
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
        #include <vector>
     
        struct TMyData
        {
            AnsiString Caption;
            AnsiString SubItem;
            AnsiString Criteria;
        };
     
        std::vector<TMyData> data;
     
        {
            TMyData DataItem;
            DataItem.Caption = "caption";
            DataItem.SubItem = "Some Data";
            DataItem.Criteria = "Some Data";
     
            data.push_back(DataItem);
            ListView1->Items->Count = data.size();
        }
     
        // OnData event handler
        void __fastcall TMyForm::ListView1Data(TObject *Sender, TListItem *Item)
        {
            TMyData &DataItem = data[Item->Index];
            Item->Caption = DataItem.Caption;
            Item->SubItems->Add(DataItem.SubItem);
        }
     
        {
            std::vector<TMyData>::iterator iter = data.begin();
            int idx = 0;
            while( iter != data.end() )
            {
                if( (*iter).Criteria == "Some Data" )
                {
                    TListItem *Item = ListView1->Items->Item[idx];
                    Item->MakeVisible(true);
                    Item->Selected = true;
                    return;
                }
                ++idx;
                ++iter;
            }
     
            Application->MessageBox("Item Not Found", "Search Ended", MB_OK);
        }
    source: un article datant de juillet 2005 dans le groupe de nouvelles borland.public.cppbuilder.vcl.components.using

    Dans ton cas à la place d'une struct TMyData tu peux utiliser une classe avec une propriété Completed et une méthode AddSuperString.

Discussions similaires

  1. Ajouter des méthodes, des classes
    Par Toba63 dans le forum iReport
    Réponses: 3
    Dernier message: 20/08/2008, 10h29
  2. comment ajouter des méthodes à une classe lors Runtime?
    Par revever dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 31/03/2008, 13h53
  3. Ajouter propriété à un module de classe
    Par bodade dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/05/2007, 19h55
  4. Ajout d'une méthode dans une classe
    Par Flow_75 dans le forum C++
    Réponses: 6
    Dernier message: 12/02/2007, 10h42
  5. [C#] Ajout d'une méthode à la classe DropDownList
    Par Scorff dans le forum ASP.NET
    Réponses: 2
    Dernier message: 30/08/2005, 14h23

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