|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Помогите найти ошибку
Вопрос с 3-мя combobox'aми.
Combobox1 содержит (1, 2, 3, 4, 5) Combobox2 содержит (1, 2, 3, 4, 5) Combobox3 содержит (1, 2, 3, 4, 5) Например если выбираем в первом значение 1, тогда во 2-ом и 3-ем это значение удаляется. Потом если выбираем в первом значение 2, тогда во 2-ом и 3-ем удаляется значение 2 и возвращается значение удаленное в первом случае 1 (Аналогичные операции должны производится при работе с любым из 3-х Combobox'ов). Я попытался сделать так, но видимо чтото опускаю и внекоторых случаях удаляется дополнительно еще какой-то Item. Помогите найти ошибку. Код:
{ Обработчик нажатия на один из 3-х ComboBox'ов } procedure Tform_Sort.event_cb_Click(Sender: TObject); begin with TComboBox(Sender) do case Tag of 1: ItemsDel([Text, cmp_cb_AfterBy.Text, cmp_cb_LastBy.Text], [ cmp_cb_AfterBy, cmp_cb_LastBy]); 2: ItemsDel([Text, cmp_cb_SortBy.Text, cmp_cb_LastBy.Text], [ cmp_cb_SortBy, cmp_cb_LastBy]); 3: ItemsDel([Text, cmp_cb_SortBy.Text, cmp_cb_AfterBy.Text], [ cmp_cb_SortBy, cmp_cb_AfterBy]); end; end; А вот собственно и сама проверка и удаление Itema Код:
procedure Tform_Sort.ItemsDel(const CompareItems: array of String; Controls: array of TComboBox); var i, k, Index: Integer; begin for i := Low(Controls) to High(Controls) do with Controls[i] do begin Items.Clear; Items.AddStrings(DefItems); for k := Low(CompareItems) to High(CompareItems) do begin Index := Items.IndexOf(CompareItems[k]); if Index <> -1 then Items.Delete(Index); end; end; end; Последний раз редактировалось Admin, 10.04.2008 в 10:35. |
#2
|
|||
|
|||
Цитата:
case Tag of 1: ItemsDel([Text, cmp_cb_AfterBy.Text, cmp_cb_LastBy.Text], [cmp_cb_AfterBy, cmp_cb_LastBy]); Ведь это не содержимое комбобоксов, а только их видимые строки. |