![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как в listbox хранить двойные данные [D7, WinXP]
malamba © (2005-10-17 17:26:00)Есть к примеру выборка из базы:
код......наименование
3 ... Знайка
4 ... Незнайка
78 ... Чертяйка
Наименования я благополучно заношу в listbox или ему родственный компонент.
А хотелось бы хранить рядом еще и коды для дальнейшего обращения к базе данных ( в которых эти коды уникальны).
В TreeView есть метод AddObject - там я добавляю и наименование и собственно объект ( по сути, код в виде pointer)
Пробовал делать такое же в listbox, но не смог получить доступ к объекту.
И вообще, кто как реализует такую схему, где есть данные, одна часть которых визуализируется, а другая нет, причем что сохранить нужно все данные.
Antonn (2005-10-18 13:50:00) [1]malamba (18.10.05 12:40) [20]
т.е. указатель внутри объявления записи
это почему? у меня и выше работает...
malamba (2005-10-18 12:40:00) [2]Да, именно оно. И ведь как красиво...
Маленькое уточнение
pFufel = ^Tfufel
TFufel = record
_name:string;
i,ii,iii:integer;
end;
Следует читать
Type
TFufel = record
pFufel = ^Tfufel
_name:string;
i,ii,iii:integer;
end;
т.е. указатель внутри объявления записи
Antonn (2005-10-17 19:33:00) [3]да, и про Dispose() не забывайте, а то память потечет при удалении указателей.
Antonn (2005-10-17 19:28:00) [4]F:=pFufel(listbox1.items.Object[_num]);
malamba (2005-10-17 18:44:00) [5]Ой тормоз, ой тормоз...
И главное: listbox1.Object - такого нет в природе в естественном виде.
Malamba (2005-10-17 18:42:00) [6]Удалено модератором
Malamba (2005-10-17 18:42:00) [7]Позвольте, позвольте:
F:=pFufel(listbox1.Object[_num]);
А вот здесь вы конем ходили... У меня все записано..
Выглядит элегантно, но
TObject(Fufel) - [Error] untMain.pas(680): Invalid typecast
malamba (2005-10-17 18:20:00) [8]Пока писал, ентого еще не было.
Сейчас обглодаю.
Antonn (2005-10-17 18:16:00) [9]Malamba (17.10.05 18:15) [12]
нужный элемент в своем новом списке = IndexOf ( 'выбранный элемент в listBoxe')
примерно как в [11]?
Malamba (2005-10-17 18:15:00) [10]Класс, то оно хорошо, но стоит ли городить огород:
мне нужен связный список (а получается список независимых экземпляров классов), привязанный к компоненту.
Хотелось бы не из пушки по воробьям.
И что-то вроде:
нужный элемент в своем новом списке = IndexOf ( 'выбранный элемент в listBoxe')
А может в самом деле, как ранее выступавший товарищ говорил: "Используй ListView"
Сделал один столбец невидимый и не мучаюсь с остальным
Antonn (2005-10-17 18:12:00) [11]кстати, напишу и как их достать:
procedure GetTFuflo(var F:TFufel; _num:integer);
begin
F:=pFufel(listbox1.Object[_num]);
end;
прально?
Antonn (2005-10-17 18:08:00) [12]begin...end © (17.10.05 18:03) [7]
ах это... ну не знаю, прикинул, что с items точно работает, дельфи под рукой нет, неначем проверить:)
Eraser © (17.10.05 18:03) [8]
кому надо, тот и оформит, мое дело подсказать:) да и дельфи нет, чтоб дез ошибок написать.
begin...end (2005-10-17 18:07:00) [13]> Eraser © (17.10.05 18:03) [8]
> Оформи TFufel как класс и будет тебе счастье
Я громко ругаться не буду, ладно?
> всё равно в этой структуре используется тип неопределённого
> размера (string)
И что?
Eraser (2005-10-17 18:03:00) [14]
> Antonn © (17.10.05 17:33) [2]
Оформи TFufel как класс и будет тебе счастье )
всё равно в этой структуре используется тип неопределённого размера (string).
begin...end (2005-10-17 18:03:00) [15]> Antonn © (17.10.05 18:00) [5]
Что "где"?
ListBox. Items.AddObject('Знайка', TObject(3))
malamba (2005-10-17 18:02:00) [16]В принципе и я к этому пришел: вначале ListBox.AddObject('Знайка', TObject(3)),
а потом оставил только список записей ( record).
Просто хотелось бы узнать, верной ли дорогой я иду...
Antonn (2005-10-17 18:00:00) [17]begin...end © (17.10.05 17:56) [4]
Честно говоря, не понял, зачем в данном случае запись.
ListBox.AddObject('Знайка', TObject(3))
это где?
begin...end (2005-10-17 17:56:00) [18]Честно говоря, не понял, зачем в данном случае запись.
ListBox.AddObject('Знайка', TObject(3))
TUser (2005-10-17 17:52:00) [19]Используй ListView - и не потребуется приводить указатель на запись к типу TObject.
Antonn (2005-10-17 17:33:00) [20]
pFufel = ^Tfufel
TFufel = record
_name:string;
i,ii,iii:integer;
end;
var Fufel:pFufel;
begin
new(Fufel);
Fufel._name:='';
fufel.i:=0;
ListBox1.Items.AddObject(Fufel._name,TObject(Fufel));
примерно так...
ennd;