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

Вниз

ListBox и список значений: как соединить?   Найти похожие ветки 

 
malamba   (2005-07-01 11:15) [0]

Наверное, каждый сталкивался в своей работе со списками значений (например:
Лена - 1 руб
Света - 15 руб
Вася - 2 руб
и т.д.)

Хотелось бы занести этот список в ListBox.
Так, чтобы в LIstBox был список Лена, Света, Вася...
А при выборе какого-нибудь значения можно было бы получить и остальное.
Выбрали Лену, узнали про 1 руб и т.д.

Можно было идти со стороны, противоложной гландам, вводить доп. массив или стринглист и соединять их вместе.
Но хотелось бы это сделать средствами самого ListBox-а.

Подскажите, может кто похоже уже делал?


 
KilkennyCat ©   (2005-07-01 11:19) [1]

разделить визуально: ширина листбокса должна позволить вместить отображение только имен. :))


 
Dimous   (2005-07-01 11:21) [2]

ListBox1.Items.AddObject("Лена", TObject(1));

Integer(ListBox1.Items.Objects[0]);


 
Digitman ©   (2005-07-01 11:23) [3]

with ListBox do
begin
 AddItem("Лена", TObject(Pointer(1));
 AddItem("Света", TObject(Pointer(15));
 AddItem("Вася", TObject(Pointer(2));
end;


 
malamba   (2005-07-01 11:45) [4]

С объектом понятно, а если второй значение - строковое, то можно ли так:

ListBox1.Items.AddObject("Лена", TObject("и ведь не отдала"));


 
Digitman ©   (2005-07-01 11:46) [5]

нельзя


 
Eraser ©   (2005-07-01 11:50) [6]

malamba   (01.07.05 11:45) [4]

Прийдётся объект создавать... или указатель на ShortString.


 
Игорь Шевченко ©   (2005-07-01 12:06) [7]

ListView не проще ?


 
Stakan ©   (2005-07-01 12:07) [8]

procedure TForm1.Button1Click(Sender: TObject);
begin
 ListBox1.Items.AddObject("Лена", TObject(PChar("И ведь не отдала")));
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 ShowMessage(PChar(ListBox1.Items.Objects[0]));
end;


 
malamba   (2005-07-01 12:27) [9]

Да, с этим понятно, если второе значение integer, то можно так использовать.
Чудненько...

А никто не пробовал возиться с
ListBox.Items.Value; и
ListBox.Items.ValueFromIndex;

Они используются для отображения именно списков параметр = значение ( как в ini файлах), однако я нигде не встречал способов занесения таких данных в listbox.


 
malamba   (2005-07-01 12:43) [10]

Запоздало: Игорь Шевченко ListView не проще ?

Нет, там дальше служебные данные, которые не нужно показывать.
Значение ключевого поля таблицы, если быть точным.
При выборе значения в ListBoxe сразу получаю без всяких заморочек ключ.


 
Игорь Шевченко ©   (2005-07-01 12:47) [11]


> там дальше служебные данные, которые не нужно показывать


Не показывай.


 
GrayFace ©   (2005-07-01 13:10) [12]

malamba   (01.07.05 11:15)
Лена - 1 руб
Света - 15 руб

Хорошо звучит :)
Digitman ©   (01.07.05 11:23) [3]
TObject(Pointer(1));

Почему же не TObject(1) ?
malamba   (01.07.05 11:45) [4]
С объектом понятно, а если второй значение - строковое, то можно ли так:

ListBox1.Items.AddObject("Лена", TObject("и ведь не отдала"));

Можно, например, так:
Добавление:
p:=GetMemory(length(s));
CopyMemory(p,pointer(s),length(s));


 
GrayFace ©   (2005-07-01 13:13) [13]

Случайно нажал на отправить.
Добавляем:
p:=GetMemory(length(s));
CopyMemory(p,pointer(s),length(s));
ListBox1.Items.AddObject("Лена", TObject(p));


Убиваем:
FreeMem(ListBox1.Items.Objects[Index]);
Delete...


 
malamba   (2005-07-01 13:57) [14]

А как не показывать? У столбца в ListView нет свойства Visible.


 
malamba   (2005-07-01 14:03) [15]

GrayFace, не успел прочитать Ваш ответ.

Это уже извращение:
три строчки  ( выделить память, заполнить, передать ) против одной доавить
ListBox1.Items.AddObject("Лена", TObject("и не отдаст"));

и затем еще FreeMem, Delete, когда просто
ListBoxPreparat.Items.Delete(i); вместе с объектом.

Но за идею спасибо.


 
Игорь Шевченко ©   (2005-07-01 14:55) [16]

malamba   (01.07.05 13:57) [14]


> У столбца в ListView нет свойства Visible.


Так можно завести те столбцы, значения которых надо показывать. А остальные значения не показывать.


 
Dimous   (2005-07-01 15:10) [17]

malamba   (01.07.05 14:03) [15]
> Это уже извращение:
> три строчки  ( выделить память, заполнить, передать ) против одной доавить
> ListBox1.Items.AddObject("Лена", TObject("и не отдаст"));

Это не извращение, это правильно. Кроме того "TObject("и не отдаст")" - это не объект, а даже если бы и был объетом, то при удалении итема связанный с ним объект автоматически не освобождается...


 
GrayFace ©   (2005-07-02 13:23) [18]

malamba   (01.07.05 14:03) [15]
и затем еще FreeMem, Delete, когда просто
ListBoxPreparat.Items.Delete(i); вместе с объектом.

А вот тут будет утечка памяти.
Если пихать в ListBox строки, то надо примерно так:

Засовывание (строки s):
 UniqueString(s);
 ListBox1.AddItem("Маша",TObject(s));
 pointer(s):=nil;

Удаление:
var s:string;
begin
  pointer(s):=ListBox1.Items.Objects[0];
  s:="";
  ListBox1.Items.Delete(0);
end;


 
GrayFace ©   (2005-07-02 13:33) [19]

UniqueString(s), возможно, не нужен.



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

Форум: "Основная";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.035 c
14-1118777623
Kerk
2005-06-14 23:33
2005.07.18
Кондуктора и не только...


14-1119969947
Tuzemec
2005-06-28 18:45
2005.07.18
SMPP


10-1096353666
Zyb
2004-09-28 10:41
2005.07.18
ActiveX


1-1120394991
Толян
2005-07-03 16:49
2005.07.18
Загрузка кода изи MEMO


4-1116308473
Jungle Forever!
2005-05-17 09:41
2005.07.18
Програмный набор номера модемом





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