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:
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
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:
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:
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...:roll: