|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.09.2010, 03:36 | #1 |
Регистрация: 18.09.2010
Сообщений: 9
|
ComboBox в Delphi
Ребят нужна помощь. Помогите решить задачу в Delphi с ComboBox плиз. Условие такое: Есть четыре компонента ComboBox по четыре строки в каждом.
Как сделать так чтобы при выборе допустим в ComboBox1 второй строки в остальных СomboBox вторую строку выбрать было нельзя, и в тоже время при выборе скажем в ComboBox3 четвертой строки она была бы недоступна в других ComboBox ? Заранее СПС за внимание. |
18.09.2010, 06:59 | #2 |
Форумчанин
Регистрация: 04.04.2009
Сообщений: 438
|
Надо выяснить что подразумевается под "недоступностью строки".
Комбобокс примитивный компонент и в нем нет события которое наступает ПЕРЕД изменением значения (строки), а, следовательно, невозможно проверить какая строка выбирается, чтобы запретить ее выбор. Есть событие, которое наступает ПОСЛЕ выбора строки. Эти обстоятельства требуют уже более сложной реализации взаимодействия комбобоксов. А конкретная реализация зависит от того, в каком виде требуется "недоступность". Есть пара вариантов этой "недоступности". - выбрали недоступную строку, но ее меняем на ту, которая была прежде или, если в комбобоксе уже показывается недоступная, то меняем на предыдущую из списка или очищается едит комбобокса; - удалять строку из списка комбобокса, которую нельзя выбирать (после необходимо ее восстановить в списке, если выбирать уже можно). |
21.09.2010, 00:27 | #3 | |
Регистрация: 18.09.2010
Сообщений: 9
|
Цитата:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) ComboBox1: TComboBox; ComboBox2: TComboBox; ComboBox3: TComboBox; ComboBox4: TComboBox; procedure ComboBox1Change(Sender: TObject); procedure ComboBox2Change(Sender: TObject); procedure ComboBox3Change(Sender: TObject); procedure ComboBox4Change(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.ComboBox1Change(Sender: TObject); var a, b, c, d:string; begin a:= ComboBox1.Items[ComboBox1.ItemIndex]; b:= ComboBox2.Items[ComboBox2.ItemIndex]; c:= ComboBox3.Items[ComboBox3.ItemIndex]; d:= ComboBox4.Items[ComboBox4.ItemIndex]; if (a=b) then Combobox1.ItemIndex:=0; if (a=c) then Combobox1.ItemIndex:=0; if (a=d) then Combobox3.ItemIndex:=0; end; procedure TForm1.ComboBox2Change(Sender: TObject); var a, b, c, d:string; begin b:= ComboBox2.Items[ComboBox2.ItemIndex]; a:= ComboBox1.Items[ComboBox1.ItemIndex]; c:= ComboBox3.Items[ComboBox3.ItemIndex]; d:= ComboBox4.Items[ComboBox4.ItemIndex]; if (b=a) then Combobox2.ItemIndex:=0; if (b=c) then Combobox2.ItemIndex:=0; if (b=d) then Combobox2.ItemIndex:=0; end; procedure TForm1.ComboBox3Change(Sender: TObject); var a, b, c, d:string; begin c:= ComboBox3.Items[ComboBox3.ItemIndex]; a:= ComboBox1.Items[ComboBox1.ItemIndex]; b:= ComboBox2.Items[ComboBox2.ItemIndex]; d:= ComboBox4.Items[ComboBox4.ItemIndex]; if (c=a) then Combobox3.ItemIndex:=0; if (c=b) then Combobox3.ItemIndex:=0; if (c=d) then Combobox3.ItemIndex:=0; end; procedure TForm1.ComboBox4Change(Sender: TObject); var a, b, c, d:string; begin d:= ComboBox4.Items[ComboBox4.ItemIndex]; a:= ComboBox1.Items[ComboBox1.ItemIndex]; b:= ComboBox2.Items[ComboBox2.ItemIndex]; c:= ComboBox3.Items[ComboBox3.ItemIndex]; if (d=a) then Combobox4.ItemIndex:=0; if (d=b) then Combobox4.ItemIndex:=0; if (d=c) then Combobox4.ItemIndex:=0; end; end. Можно было конечно переменные не объявлять но мне так понятней. В каждом из ComboBox-ов в properties ItemIndex указал начало 0. В каждом ComboBox-е одинаковые строки. Ну как я уже говорил програмер с меня зеленый и мне уж лучше ответ в коде но всеравно спс ) А вообще правильно сказал что я програмер, а не кодер, а эт разные вещи )) Ну может есть и другой способ как это реализовать ? У меня вышло только так ( Последний раз редактировалось midis; 21.09.2010 в 00:31. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ComboBox (Delphi) | VadEr | Помощь студентам | 8 | 25.04.2015 22:28 |
Работа с combobox (delphi) | JNLYSk | Помощь студентам | 15 | 26.06.2012 20:21 |
Delphi компонент ComboBox | severin | Общие вопросы Delphi | 12 | 08.10.2010 20:19 |
Delphi ComboBox | tag | Помощь студентам | 12 | 11.08.2010 19:21 |
Фильтрация в Delphi с помощью Combobox | Веснушка_ната | Помощь студентам | 4 | 07.04.2009 02:36 |