Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Вниз

Хранение 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.08 c
3-1103266113
Nexel
2004-12-17 09:48
2005.01.23
non-blob column in table required to perform operation


4-1102266958
Chlavik
2004-12-05 20:15
2005.01.23
Процесы в Windows ..


1-1105521614
Zhekson
2005-01-12 12:20
2005.01.23
Навигация по StringGrid_у


14-1104248378
Чеширский_Кот
2004-12-28 18:39
2005.01.23
Было ли в истории человечества...


14-1104137601
Homa_Programer
2004-12-27 11:53
2005.01.23
Копия экрана





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский