Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Как определить элемент списка TList


Автор: ksili 21.4.2006, 09:24
У меня есть список указателей на объекты, являющиеся структурами:
Код

struct GAN
    {
     int Npp;
     TDate D;
     AnsiString prefix;
     AnsiString number;
    .......
    };

TList *source;
GAN *x;

for(i=0;i<k;i++)
    {
      ........  //заполняем x

     source->Add(x);
    }

Чтобы отобразить его на форме использую компоненту ListView (ViewStyle = vsReport). Заполняю его так:
Код

 void *v;

 view->Clear();     
 for(i = 0;i < source->Count;i++)
    {
     ListItem = view->Items->Add();
     v = list->Items[i];
     g = (GAN*)v;
     ListItem->Caption = g->Npp;
     ListItem->SubItems->Add(g->D);
     ListItem->SubItems->Add(g->prefix);
     ListItem->SubItems->Add(g->number);
     ...
    }

Отображается всё как надо. Содержимое в ListView может сортироваться по любому столбцу. Теперь такая проблема: нужно при выборе строки в ListView определить соответствующий ему элемент в исходном списке source. Пробовал так:
Код

void __fastcall TForm1::ViewSource1SelectItem(TObject *Sender,
      TListItem *Item, bool Selected)
{
 int r;

 r = source->IndexOf(Item);
 ....
}

Однако r всегда равно -1. 
Кто-нибудь подскажите, как решить проблему 

Автор: _hunter 21.4.2006, 10:33
при заполнении используй AddObject и вторым параметром передавай (TObject*)i
 

Автор: ksili 25.4.2006, 07:15
Чё-то это как-то непонятно и сходу не получилось. Решил проблему по-другому - заюзал свойство Item->Data. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)