Главная страница
    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.04 c
4-1125854024
Ландграф Павел
2005-09-04 21:13
2005.11.06
рисовать на канве то, что находится под ней (под формой)


14-1129122903
Антоний
2005-10-12 17:15
2005.11.06
Для печати проспектов


4-1125487032
_Landgraf_
2005-08-31 15:17
2005.11.06
Нажатие клавиши


4-1125602005
Vjacheslav
2005-09-01 23:13
2005.11.06
Библиотека winlite


4-1125004126
1236434
2005-08-26 01:08
2005.11.06
ID процеса по его имени





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