Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как в listbox хранить двойные данные [D7, WinXP]


Страницы:   1 2

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;


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо