Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2008, 23:23   #1
NeiL
Пользователь
 
Регистрация: 28.11.2007
Сообщений: 49
По умолчанию Вопрос по все тем же 3-мя ComboBox

Вопрос все с теми же 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;
NeiL вне форума Ответить с цитированием
Старый 10.04.2008, 00:08   #2
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

Может глупо, но можно не удалять, а пересоздавать items:

Код:
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
 if combobox1.Text='1' then begin
   combobox2.Items.Clear;
   combobox2.Items.Add('2');
   combobox2.Items.Add('3');
   combobox3.Items.Clear;
   combobox3.Items.Add('2');
   combobox3.Items.Add('3');
 end;
 if combobox1.Text='2' then begin
   combobox2.Items.Clear;
   combobox2.Items.Add('1');
   combobox2.Items.Add('3');
   combobox3.Items.Clear;
   combobox3.Items.Add('1');
   combobox3.Items.Add('3');
 end;
 if combobox1.Text='3' then begin
   combobox2.Items.Clear;
   combobox2.Items.Add('1');
   combobox2.Items.Add('2');
   combobox3.Items.Clear;
   combobox3.Items.Add('1');
   combobox3.Items.Add('2');
 end;
end;
И тот же результат
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума Ответить с цитированием
Старый 10.04.2008, 09:04   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Можно поинтересоваться задачей в целом? ИМХО есть другой способ решения более простой.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ComboBox )Игнат( Компоненты Delphi 3 19.02.2008 16:59
Combobox Yana Помощь студентам 5 23.12.2007 02:16
Combobox и иже с ним Shawn Компоненты Delphi 7 13.12.2007 18:15
ComboBox Lonix Компоненты Delphi 4 10.12.2007 09:18
Не могу внести строку из combobox в combobox!? tacer Помощь студентам 1 30.11.2007 19:45