ListViewSelectItem problem

0

Poniżej przedstawiam kod eventu który po kliknięciu na item wyświetla co za item został kliknięty.
Na liście itemów jest 10 itemów. Jak klikam po raz pierwszy na dany item to wyświetla ładnie. Problem jak klikam kolejny item (wtedy wyrzuca błąd
Access violation at address 004ca4fc in module 'Form1.exe' Read of address 00000004 a następnie wyświetla klikniety item)

Multiseclect jest wyłączony.

Dlaczego wyrzuca taki błąd?

void __fastcall TSDIAppForm::ListView2SelectItem(TObject *Sender, TListItem *Item,
		  bool Selected)
{


  ShowMessage (SDIAppForm->ListView2->Items->Item[SDIAppForm->ListView2->Selected->Index]->Caption);



}

0

Zmieniłem kod na następujący celem weryfikacji problemu

void __fastcall TSDIAppForm::ListView2SelectItem(TObject *Sender, TListItem *Item,
		  bool Selected)
{
  int selection;
  selection= SDIAppForm->ListView2->Selected->Index;
  ShowMessage (SDIAppForm->ListView2->Items->Item[1]->Caption);




   // );

Wygląda na to że jest problem z dostępem do zmiennej Index podczas wywoływania eventu SelectItem.
Jak rozwiązać ten problem

0

Problem rozwiązany

void __fastcall TSDIAppForm::ListView2SelectItem(TObject *Sender, TListItem *Item,  bool Selected)
{

if (((TListView*)(Sender))->Tag != Item->Index)
	{
		   ((TListView*)(Sender))->Tag = Item->Index;
                   LoadChartFromFile(SDIAppForm->Chart6, Item->Caption  ) ;  //może być inna akcja wywoływana eventem

	}
			
}

Mam jednak prośbę - czy może mi ktoś wytłumaczyć krok pro kroku jak to działa. Chodzi mi dokładnie jak działa konstrukcja ((TListView*)(Sender)) oraz
dlaczego przypisanie do Tag Index'u rozwiązuje problem?

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