Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.23;
Скачать: CL | DM;

Вниз

Хранение Id шников в ListView   Найти похожие ветки 

 
ВиТ ©   (2005-01-07 18:18) [0]

Здравствуйте! У меня есть таблица с полями id и name.
Допустим, все name"ы я печатаю в листвью.
Вопрос: как наиболее простым способом мне хранить id"шник для каждого name?


 
YurikGL ©   (2005-01-07 22:14) [1]

Можно создать динамический массив или TStringList и хранить в ячейках с одинаковым индексом в ListView name-ы а в StringList-е или динамическом массиве соответсвующий id-к.


 
Vlad ©   (2005-01-07 23:04) [2]

>ВиТ ©
А разве метод AddItem не позволяет хранить любой TObject для каждого Item"a ?
hint: В качестве TObject можно хранить и id-шник


 
ВиТ ©   (2005-01-08 12:33) [3]


> Vlad ©   (07.01.05 23:04) [2]
> >ВиТ ©
> А разве метод AddItem не позволяет хранить любой TObject
> для каждого Item"a ?
> hint: В качестве TObject можно хранить и id-шник

Вот что нашел в мане: У каждого Item есть св-во  Data
Specifies any application-specific data associated with the list item.
Delphi syntax:
property Data: Pointer;

И у меня даже заработало вот таким образом:

var
  itm:TListItem;
begin
 itm:=ListView1.Items.Add;
 itm.Caption:="MyItem";
 Integer(itm.Data^):=1;
...

Но ведь если я буду удалять\добавлять айтемы - мне придётся следить, чтобы у меня эти данные в памяти не затерялись?
Или они автоматически удаляться будут?


 
sniknik ©   (2005-01-08 14:32) [4]

можно указатель data использовать как просто число, тебе же нужно простой интеджер сохранять, он как раз того же размера что указатель, тогда выделения памяти под переменную не нужно и освобождения тоже.
код у тебя кстати неправильный при создании указатель Data будет nil а указатель от nil приведенный к интеджеру... и куда по твоему 1-ца присвоится? (по идее значение должно уйти в "... nil ;)", считать его пробовал? а еще скорее вывалится с аксесс виолейшен)

вот так вот можно
добавление
Inc(Count); //в цикле естественно, тогда Count будет порядковым номером (ну или ID у тебя)
with ListView1.Items.Add do begin
 Caption:= "MyItem";
 Data:= Pointer(Count);
end;

чтение (гденибудь в онселект)
Label2.Caption:= IntToStr(Integer(Item.Data));


 
ВиТ ©   (2005-01-08 19:05) [5]


> sniknik ©   (08.01.05 14:32) [4]

Классный способ! Спасибо!!



Страницы: 1 вся ветка

Текущий архив: 2005.01.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.059 c
14-1104571729
Сергей Г
2005-01-01 12:28
2005.01.23
Всех с новым годом!!!!


6-1099486260
anton2v
2004-11-03 15:51
2005.01.23
Ограничение скорости соединения


14-1104705688
Johnmen
2005-01-03 01:41
2005.01.23
БГ навсегда!


4-1101482473
alsov1
2004-11-26 18:21
2005.01.23
Можно ли достать текст из StringGrid а зная его hWnd


9-1095732632
Jus
2004-09-21 06:10
2005.01.23
Хочу написать игру лоде-рунер(с редактором карт)на движке DelphiX