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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2009, 18:10   #1
WhistleR
 
Регистрация: 02.10.2009
Сообщений: 5
Радость Несколько ComboBox

Привет друзья! Такой вот вопрос:

Есть у меня 10 комбобоксов (ComboBox1, ComboBox2, ...) В начале все, кроме первого Visible := false. Идея такая, что при OnChange первого бокса - появляется второй, при изменении второго - появляется третий и т.д.. А при удалении данных из комбобокса (Text = '') следующий за ним скрывается.
Вопрос: как сделать такие и ,возможно, какие-нибудь другие действия не плодя почти одинаковых процедур ComboBoxXChange? Потому что хотелось бы сделать больше, чем 10 комбобоксов.
WhistleR вне форума Ответить с цитированием
Старый 02.10.2009, 19:05   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Таймер, проверка.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 02.10.2009, 19:22   #3
.Phoenix
Форумчанин
 
Регистрация: 02.04.2009
Сообщений: 235
По умолчанию

Подоробней разъянись, пожалуйста.
Всё гениальное - просто!
.Phoenix вне форума Ответить с цитированием
Старый 02.10.2009, 19:25   #4
Sensizu
Otsukitakitte
Форумчанин
 
Аватар для Sensizu
 
Регистрация: 01.10.2009
Сообщений: 126
По умолчанию

Согласен с Alex Cones, и еще можно использовать ComboBoxOnChange:
... if ComboBox1.Text<>'' then ComboBox2.Show; ...

или установить появление второго бокса только при конкретном значении первого:
... if ComboBox1.ItemIndex=1 then ComboBox2.Show; ...
ну где 1 - индекс значения комбоБокса.
Помог - ставь плюс.
$("question").onAnswer(function() { $(this).getItWright(true); });
Sensizu вне форума Ответить с цитированием
Старый 02.10.2009, 19:26   #5
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
ComboBoxOnChange
Не пойдет, т.к.
Цитата:
какие-нибудь другие действия не плодя почти одинаковых процедур ComboBoxXChange
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 02.10.2009, 19:27   #6
Sensizu
Otsukitakitte
Форумчанин
 
Аватар для Sensizu
 
Регистрация: 01.10.2009
Сообщений: 126
По умолчанию

понял, извеняюсь - неправильно понял поставленый вопрос.

тогда действительно таймер.
Помог - ставь плюс.
$("question").onAnswer(function() { $(this).getItWright(true); });
Sensizu вне форума Ответить с цитированием
Старый 02.10.2009, 19:28   #7
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Ну я думаю примерно так:
Код:
procedure TForm1.ComboBox1Change(Sender: TObject);
var
cb:tcombobox;
begin
if ((sender as tcombobox).Text<>'') and (findcomponent('cb'+copy(TCombobox(sender).Name,3,1))=nil) then
begin
cb:=tcombobox.Create(form1);
cb.OnChange:=ComboBox1Change;
cb.Name:='cb'+copy(TCombobox(sender).Name,3,1);
end;
if ((sender as tcombobox).Text='') and (findcomponent('cb'+copy(TCombobox(sender).Name,3,1))<>nil) then
(findcomponent('cb'+copy(TCombobox(sender).Name,3,1)) as tcombobox).Free;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
cb:tcombobox;
begin
cb:=tcombobox.Create(form1);
cb.OnChange:=ComboBox1Change;
cb.Name:='cb1';
end;
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 02.10.2009, 19:30   #8
Sensizu
Otsukitakitte
Форумчанин
 
Аватар для Sensizu
 
Регистрация: 01.10.2009
Сообщений: 126
По умолчанию

интересно...
(ех, вот бы мне так кто помог))
Помог - ставь плюс.
$("question").onAnswer(function() { $(this).getItWright(true); });
Sensizu вне форума Ответить с цитированием
Старый 02.10.2009, 19:46   #9
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Ой, что-то я в прошлом коде намутил не то
Вот рабочий:
Код:
procedure TForm1.ComboBox1Change(Sender: TObject);
var
cb:tcombobox;
begin
if ((sender as tcombobox).Text<>'') and (findcomponent('cb'+inttostr(strtoint(copy(TCombobox(sender).Name,3,1))+1))=nil) then
begin
cb:=tcombobox.Create(form1);
cb.OnChange:=ComboBox1Change;
cb.Name:='cb'+inttostr(strtoint(copy(TCombobox(sender).Name,3,1))+1);
cb.Parent:=form1;
cb.Left:=(sender as tcombobox).Left+(sender as tcombobox).Width;
end;
if ((sender as tcombobox).Text='') and (findcomponent('cb'+inttostr(strtoint(copy(TCombobox(sender).Name,3,1))+1))<>nil) then
(findcomponent('cb'+inttostr(strtoint(copy(TCombobox(sender).Name,3,1))+1)) as tcombobox).Free;
end;



procedure TForm1.FormCreate(Sender: TObject);
var
cb:tcombobox;
begin
cb:=tcombobox.Create(form1);
cb.OnChange:=ComboBox1Change;
cb.Name:='cb1';
cb.Parent:=form1;
end;
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 05.10.2009, 06:45   #10
WhistleR
 
Регистрация: 02.10.2009
Сообщений: 5
По умолчанию

Цитата:
Сообщение от russian-stalker Посмотреть сообщение
Ой, что-то я в прошлом коде намутил не то
Вот рабочий:
Код:
procedure TForm1.ComboBox1Change(Sender: TObject);
var
cb:tcombobox;
begin
if ((sender as tcombobox).Text<>'') and (findcomponent('cb'+inttostr(strtoint(copy(TCombobox(sender).Name,3,1))+1))=nil) then
begin
cb:=tcombobox.Create(form1);
cb.OnChange:=ComboBox1Change;
cb.Name:='cb'+inttostr(strtoint(copy(TCombobox(sender).Name,3,1))+1);
cb.Parent:=form1;
cb.Left:=(sender as tcombobox).Left+(sender as tcombobox).Width;
end;
if ((sender as tcombobox).Text='') and (findcomponent('cb'+inttostr(strtoint(copy(TCombobox(sender).Name,3,1))+1))<>nil) then
(findcomponent('cb'+inttostr(strtoint(copy(TCombobox(sender).Name,3,1))+1)) as tcombobox).Free;
end;



procedure TForm1.FormCreate(Sender: TObject);
var
cb:tcombobox;
begin
cb:=tcombobox.Create(form1);
cb.OnChange:=ComboBox1Change;
cb.Name:='cb1';
cb.Parent:=form1;
end;
Спасибо, хороший способ, но максимальное кол-во боксов - 10
WhistleR вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
combobox berfilm Общие вопросы Delphi 3 16.09.2009 21:53
ComboBox [Smarik] Компоненты Delphi 14 17.04.2008 17:32
ComboBox Есет Помощь студентам 1 27.03.2008 09:10
Не могу внести строку из combobox в combobox!? tacer Помощь студентам 1 30.11.2007 19:45
Как сделать, чтобы один элемент списка в ComboBox писался в несколько строк? Andr Общие вопросы Delphi 5 15.08.2007 22:24