Главная страница
    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.041 c
6-1099486260
anton2v
2004-11-03 15:51
2005.01.23
Ограничение скорости соединения


14-1104911669
syte_ser78
2005-01-05 10:54
2005.01.23
Получения свойств файла


1-1104761850
Viktop
2005-01-03 17:17
2005.01.23
Значок в левом верхнем углу


3-1103537454
АндрейФ
2004-12-20 13:10
2005.01.23
MS Office и Delphi


14-1104683589
Piter
2005-01-02 19:33
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский