Cyfrowy Baron napisał(a):Pisałem o ListView w stylu vsIcon lub vsSmallIcon, wtedy też usuwa dwa elementy (u mnie, BCB6).
U mnie usuwa jeden C++Builder 2007.
Co do komunikatu LVM_DELETEITEM to z informacji jakie uzyskałem w sieci wynika, że ten komunikat również usuwa jeden element, tak jest też to opisane w pomocy do BCB, ale podobno występuje błąd, który sprawia, że ten komunikat wywołuje wewnętrzna funkcję ListView->Items->Delete(x) co powoduje ponowne usunięcie wiersza. O tym, że obsługa komunikatów w odniesieniu do tego obiektu kuleje może świadczyć fakt, że u ciebie odświeżanie nie działa prawidłowo i że u mnie przy stylu vsIcon lub vsSmallIcon usuwa jeden element a u ciebie 2.
Możesz podać gdzie przeczytałeś o LVM_DELETEITEM i ListView->Items->Delete(x) ?
sprawdziłem na C++Builder 2007 + update:
- Kod: Zaznacz cały
void __fastcall TForm5::btn1Click(TObject *Sender)
{
mmoLog->Lines->Add("przed ListView ma elementów:" + IntToStr(ListView1->Items->Count));
SendMessage(ListView1->Handle, LVM_DELETEITEM, 1, 0);
mmoLog->Lines->Add("po ListView ma elementów:" + IntToStr(ListView1->Items->Count));
mmoLog->Lines->Add("ListView1->ViewStyle=" + IntToStr(int(ListView1->ViewStyle)));
//enum TViewStyle { vsIcon, vsSmallIcon, vsList, vsReport }; //
//__property TViewStyle ViewStyle = {read=FViewStyle, write=SetViewStyle, default=0};
}
ViewStyle dla vsSmallIcon to 1. Jak pisałem element 2 jest widoczny, do LV->Refresh() lub odświeżenia okna z innego powodu. A ListView1->Items->Count nie pozostawia wątpliwości ile elementów ma ListView.
zwykle ciebie piszesz z dużej litery...



