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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.08.2015, 10:48   #1
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию Как в Combobox программно выполнить onChange?

Записываю
Код:
combobox3.ItemIndex:=5;
Элемент в списке выбирается, однако событие OnChange не выполняется. Как заставить кобмобокс его выполнить?
Dux вне форума Ответить с цитированием
Старый 04.08.2015, 10:53   #2
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Код:
OnCombobox3Change(combobox3);
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 04.08.2015, 11:11   #3
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Вот так заработало

Код:
Combobox3.OnChange(combobox3);
Спасибо!!!
Dux вне форума Ответить с цитированием
Старый 04.08.2015, 14:23   #4
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Цитата:
Вот так заработало
я жы не знал как называется обработчик и откуда он вызывался.
Метод - Combobox3.OnChange(combobox3); более универсален, так как его можно использовать для работы с других форм.
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 05.08.2015, 10:59   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

говнокод детектед.
автору, имхо, надо было выполнить не сам метод-обрабочик, а его сожержимое.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 05.08.2015, 11:13   #6
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
говнокод детектед.
автору, имхо, надо было выполнить не сам метод-обрабочик, а его сожержимое.
непонял прикола, а где содержимое обработчика, на дискетке что-ли?
и как ты предлагаешь выполнить содержимое, которое внутри метода OnChange ?
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 05.08.2015, 12:21   #7
ResourceSpace
Форумчанин
 
Аватар для ResourceSpace
 
Регистрация: 30.06.2015
Сообщений: 353
По умолчанию

Он имел ввиду что это очень плохой стиль программирования. Не рекомендуется смешивать логику программы с GUI, т.е. вызывать руками обработчики. В общем случае. Типа:
Код:
Procedure SomeCode(i: Integer);
Begin
Windows.Beep(700+100*i, 100);
End;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
SomeCode(TComboBox(Sender).ItemIndex);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ComboBox1.ItemIndex:=3;
ComboBox1.OnChange(ComboBox1);
end;
Плохо.
Код:
Procedure SomeCode(i: Integer);
Begin
Windows.Beep(700+100*i, 100);
End;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
SomeCode(TComboBox(Sender).ItemIndex);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ComboBox1.ItemIndex:=3;
SomeCode(ComboBox1.ItemIndex);
end;
Хорошо.

Но с конкретно этим примером... Тут скорее имеет место быть недоработка класса TComboBox.
ResourceSpace вне форума Ответить с цитированием
Старый 05.08.2015, 13:10   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
ResourceSpace
А ты свой пример проверял?
У меня лично смена ItemIndex не вызывает OnChange. Я тоже использую ComboBox1.OnChange(ComboBox1);, и не только его.
Что я делаю не так?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.08.2015, 13:34   #9
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Цитата:
Он имел ввиду что это очень плохой стиль программирования.
я всего ответил на вопрос, а по стилям к автору.
п.с. изначально я предлагал вызывать саму функцию , но так можно днлать в пределах одного юнита.
Если там будет проект по типу вот этого http://programmersforum.ru/showthrea...=281017&page=7 то человек запутается ещё больше
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 05.08.2015, 13:43   #10
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Короче, советую тела обработчиков выносить в отдельные методы.
По умолчанию и всегда.

Я кончил и закурил.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается изменить св-во Text у Combobox из события OnSelect или OnChange leklerk Общие вопросы Delphi 9 27.01.2013 12:00
OpenDialog.execut как выполнить программно mutb Мультимедиа в Delphi 6 18.06.2012 02:09
Программно выбрать пункт в Combobox и выполнить... Dux Компоненты Delphi 2 03.09.2011 21:32
Как программно выбрать строку в Combobox lutdan Общие вопросы Delphi 2 05.05.2011 19:30
Использование события OnChange ComboBox Lyubimov Помощь студентам 2 19.04.2011 15:46