Форум: "Основная";
Текущий архив: 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