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

Вниз

как в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.052 c
14-1129671062
rosl
2005-10-19 01:31
2005.11.06
ehlib 4


4-1125259719
SpyBoy
2005-08-29 00:08
2005.11.06
NtQuerySystemInformation


3-1127387537
Leshiy
2005-09-22 15:12
2005.11.06
Проблема использования SUM() в запросе.


2-1129024501
Rolf
2005-10-11 13:55
2005.11.06
Ошибка при создании ComboBox.


9-1118349447
Кефир87
2005-06-10 00:37
2005.11.06
Collision check -> Sphere vs World -> Реализация





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский