![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите, пожалуйста, со списками. [D7, WinXP]
raqy.style © (2006-12-21 17:59:00)Вопрос, собственно, вот в чем. Есть у меня ListBox & ComboBox. В ListBox много всяких строк, в том числе и повторяющиеся. мне нужно что бы в comboBox-е появились строки из ListBox-а только в единственном экземпляре.
Заранее спасибо!
Loginov Dmitry (2006-12-21 21:38:00) [1]Все-же с дополнительным списком должно быть быстрее, имхо.
Anatoly Podgoretsky (2006-12-21 20:32:00) [2]> PZ (21.12.2006 20:27:12) [12]
Понял, да немного необычно.
PZ (2006-12-21 20:27:00) [3]> [11] Anatoly Podgoretsky © (21.12.06 20:10)
Я имел в виду использование ListBox -> StringList -> ComboBox
Anatoly Podgoretsky (2006-12-21 20:10:00) [4]
> PZ (21.12.06 19:58) [9]
Ты про какой вариант?
В общем они оба правильные, отличаться будут только скорость и потребностью в ресурсах, вариант с IndexOf требует меньше ресурсов, но возможно будет работать медленнее, при небольших объемах это не важно.
Anatoly Podgoretsky (2006-12-21 20:08:00) [5]> raqy.style (21.12.2006 19:58:08) [8]
Первую строчку comboBox1.Items.Add убрать.
Сравнение = 0 заменить на = -1
Чувствуется, что справку ты не читал.
raqy.style (2006-12-21 19:58:00) [6]пробую.
var i: integer;
begin
comboBox1.Items.Add(listBox1.Items[0]) ;
for i := 0 to listbox1.Items.Count -1 do
begin
if comboBox1.Items.IndexOf(listBox1.Items[i]) = 0 then
comboBox1.Items.Add(listBox1.Items[i]);
end;
end;
но увы.
PZ (2006-12-21 19:58:00) [7]> [3] Anatoly Podgoretsky © (21.12.06 19:05)
Да, конечно, как-то я не сообразил.
Anatoly Podgoretsky (2006-12-21 19:52:00) [8]> raqy.style (21.12.2006 19:46:06) [6]
Цикл один по ListBox, перед добавлением проверяешь на дубль с помощью ComboBox.Items.IndexOf
raqy.style (2006-12-21 19:46:00) [9]
> Anatoly Podgoretsky © (21.12.06 19:09) [5]
Анатолий, если Вас не затруднит, приведите, пожалуйста, пример. Или хотя бы алгоритм опишите подробнее.
Я пробовал 2 цикла for. каждый элемент Комбо сверял с каждым из Лист. но желаемое не получалось.
Anatoly Podgoretsky (2006-12-21 19:09:00) [10]> raqy.style (21.12.2006 19:07:04) [4]
Второй вариант - ручками с проверкой на IndexOf
Что будет быстрее зависит от размера ListBox
raqy.style (2006-12-21 19:07:00) [11]Спасибо!!!!
Anatoly Podgoretsky (2006-12-21 19:05:00) [12]> PZ (21.12.2006 18:55:02) [2]
ListBox -> StringList -> ComboBox
PZ (2006-12-21 18:55:00) [13]К сожалению так не получится. Прошу извинить, ввел в заблуждение
PZ (2006-12-21 18:44:00) [14]B ComboBox надо установить Sorted = True и Duplicates = dupIgnore, после чего скопировать солержимое ListBox в ComboBox. Должно получиться желаемое.