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

Вниз

как в listbox хранить двойные данные   Найти похожие ветки 

 
malamba   (2005-10-17 17:26) [0]

Есть к примеру выборка из базы:
код......наименование
3   ...   Знайка
4   ...   Незнайка
78  ...   Чертяйка

Наименования я благополучно заношу в listbox или ему родственный компонент.
А хотелось бы хранить рядом еще и коды для дальнейшего обращения к базе данных ( в которых эти коды уникальны).

В TreeView есть метод AddObject  - там я добавляю и наименование и собственно объект ( по сути, код в виде pointer)
Пробовал делать такое же в listbox, но не смог получить доступ к объекту.

И вообще, кто как реализует такую схему, где есть данные, одна часть которых визуализируется, а другая нет, причем что сохранить нужно все данные.


 
begin...end ©   (2005-10-17 17:30) [1]

> malamba   (17.10.05 17:26)

> Пробовал делать такое же в listbox, но не смог получить
> доступ к объекту.

Как пробовали?


 
Antonn ©   (2005-10-17 17:33) [2]

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;


 
TUser ©   (2005-10-17 17:52) [3]

Используй ListView - и не потребуется приводить указатель на запись к типу TObject.


 
begin...end ©   (2005-10-17 17:56) [4]

Честно говоря, не понял, зачем в данном случае запись.

ListBox.AddObject("Знайка", TObject(3))


 
Antonn ©   (2005-10-17 18:00) [5]

begin...end ©   (17.10.05 17:56) [4]
Честно говоря, не понял, зачем в данном случае запись.

ListBox.AddObject("Знайка", TObject(3))

это где?


 
malamba   (2005-10-17 18:02) [6]

В принципе и я к этому пришел: вначале ListBox.AddObject("Знайка", TObject(3)),
а потом оставил только список записей ( record).

Просто хотелось бы узнать, верной ли дорогой я иду...


 
begin...end ©   (2005-10-17 18:03) [7]

> Antonn ©   (17.10.05 18:00) [5]

Что "где"?

ListBox.Items.AddObject("Знайка", TObject(3))


 
Eraser ©   (2005-10-17 18:03) [8]


> Antonn ©   (17.10.05 17:33) [2]

Оформи TFufel как класс и будет тебе счастье )
всё равно в этой структуре используется тип неопределённого размера (string).


 
begin...end ©   (2005-10-17 18:07) [9]

> Eraser ©   (17.10.05 18:03) [8]

> Оформи TFufel как класс и будет тебе счастье

Я громко ругаться не буду, ладно?

> всё равно в этой структуре используется тип неопределённого
> размера (string)

И что?


 
Antonn ©   (2005-10-17 18:08) [10]

begin...end ©   (17.10.05 18:03) [7]
ах это... ну не знаю, прикинул, что с items точно работает, дельфи под рукой нет, неначем проверить:)

Eraser ©   (17.10.05 18:03) [8]
кому надо, тот и оформит, мое дело подсказать:) да и дельфи нет, чтоб дез ошибок написать.


 
Antonn ©   (2005-10-17 18:12) [11]

кстати, напишу и как их достать:

procedure GetTFuflo(var F:TFufel; _num:integer);
begin
F:=pFufel(listbox1.Object[_num]);
end;


прально?


 
Malamba   (2005-10-17 18:15) [12]

Класс, то оно хорошо, но стоит ли городить огород:
мне нужен связный список (а  получается список независимых экземпляров классов), привязанный к компоненту.

Хотелось бы не из пушки по воробьям.
И что-то вроде:
нужный элемент в своем новом списке =  IndexOf ( "выбранный элемент в listBoxe")

А может в самом деле, как ранее выступавший товарищ говорил: "Используй ListView"
Сделал один столбец невидимый и не мучаюсь с остальным


 
Antonn ©   (2005-10-17 18:16) [13]

Malamba   (17.10.05 18:15) [12]
нужный элемент в своем новом списке =  IndexOf ( "выбранный элемент в listBoxe")

примерно как в [11]?


 
malamba   (2005-10-17 18:20) [14]

Пока писал, ентого еще не было.
Сейчас обглодаю.


 
Malamba   (2005-10-17 18:42) [15]

Позвольте, позвольте:

F:=pFufel(listbox1.Object[_num]);

А вот здесь вы конем ходили... У меня все записано..

Выглядит элегантно, но
TObject(Fufel) - [Error] untMain.pas(680): Invalid typecast


 
Malamba   (2005-10-17 18:42) [16]

Удалено модератором


 
malamba   (2005-10-17 18:44) [17]

Ой тормоз, ой тормоз...

И главное: listbox1.Object - такого нет в природе в естественном виде.


 
Antonn ©   (2005-10-17 19:28) [18]

F:=pFufel(listbox1.items.Object[_num]);


 
Antonn ©   (2005-10-17 19:33) [19]

да, и про Dispose() не забывайте, а то память потечет при удалении указателей.


 
malamba   (2005-10-18 12:40) [20]

Да, именно оно. И ведь как красиво...

Маленькое уточнение

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-18 13:50) [21]

malamba   (18.10.05 12:40) [20]
т.е. указатель внутри объявления записи

это почему? у меня и выше работает...



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

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

Наверх




Память: 0.51 MB
Время: 0.076 c
2-1129132504
Scarlet
2005-10-12 19:55
2005.11.06
как забрать данные?


2-1129294767
d_savrasov
2005-10-14 16:59
2005.11.06
вопрос по quickrep


2-1128313620
Domix
2005-10-03 08:27
2005.11.06
Консоль + Графика


6-1121677512
Drow
2005-07-18 13:05
2005.11.06
отправка писем


2-1129453062
antoxa2005
2005-10-16 12:57
2005.11.06
Для соритировки ADOTable я использую его св-во IndexFieldNames, а