ListView - nie kotrolowane kasowanie wpisów

0

Mam problem z kontrolką ListView. Googlałem, ale nic nie widze na ten temat.

Mam dwie ListView w stylu vsReport z dwoma kolumnami

ListView1 zawiera Nazwiska i Imiona wszystkich osób.
Do ListView2 kopiują się tylko te Nazwiska które są zgodne z Nazwiskiem wpisanym do SzukajEt (TEdit).
Tak w skrócie, a tu kod funkcji Edit ON Change:

void __fastcall TForm1::SzukajEtChange(TObject *Sender)
{
 ListView2->Items->Clear();
 ListView2->Items->AddItem(ListView1->FindCaption(0,SzukajEt->Text,True,True,True));

}

Funkcja mam kasować zawartość ListView2, a kasuje Zawartość LIstView2 plus dodatkowo i niepotrzebnie wpis z ListView1 który zostal wczesniej skopiowany do ListView2.

Dlaczego na polecenie

 ListView2->Items->Clear();

program kasuje też wpis z ListView1????

0

Takie zachowanie ListView jest spowodowane tym, że ListView nie dodając nowe obiekty nie robi osobnych kopii, tylko dodaje same adresy do obiektów w pamięci. Więc w Twoim przypadku każda z list posiada odwołania do tych samych obiektów. Efekt z tego taki, że jedna z list potem kasuje te 'wspólne' obiekty i dlatego wpisy znikają jednocześnie.
Tak jest zresztą w każdej liście, TStringList, TList etc.

Możesz to zrobić tak:

ListView1->Items->AddItem(new String(ListView2->Items->Item[0]->Caption))

[piszę z pamięci, ale chyba każdy wie o co chodzi :-) )

0

No super, dzięki. Wieczorem jak będę miał czas sprawdzę czy działa...

1 użytkowników online, w tym zalogowanych: 0, gości: 1