![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
помогите с обработкой события в run-time
alexey_mas © (2007-01-31 15:14:00)Добрый день прошу подсказки по ран тайм
Tfilter- созданный мною клас, который содержит функцию которая создает в run_time
форму фильтра , компоненты(чекбоксы,едиты) ,назначает событию онклик чекбокса процедуру
CheckBox1_filter.OnClick:=set_checkbox;
Form_filter.ShowModal;
сама процедура(входит также в класс Tfilter)
procedure TFilter.set_checkbox(sender:TObject);
begin
if (CheckBox1_filter.Checked=true) then
begin
CheckBox1_filter.Checked:=false;
Combobox1_filter.Enabled:=false;
end else
begin
CheckBox1_filter.Checked:=true;
Combobox1_filter.Enabled:=true;
end;
end;
Как только нажать на Checkbox(т.е. идет вызов процедуры set_checkbox) вылетает ошибка переполнения стека
Exception class EStackOverflow with message 'Stack overflow'.
В отладчике вижу что процедура set_checkbox вызывается постоянно (вроде как идет постоянное нажатие на чекбокс)
В чем может быть причина?
Юрий Зотов (2007-01-31 16:09:00) [1]> В чем может быть причина?
При изменении Checked возбуждается событие OnClick и возникает рекурсия.
alexey_mas (2007-01-31 15:31:00) [2]спасибо. понял, заработался :)
Сергей М. (2007-01-31 15:24:00) [3]
> хочу чтобы если стояла птичка т.е. CheckBox1_filter.Checked=true
> после нажатия птичка снялась
Она и так снимется, без твоего явного вмешательства.
> и комбобокс стал неактивным
А как же ты кликать будешь на "неактивном" чекбоксе ?
Ты же тем самым запретил ему принимать фокус ввода !
Подумай сам ..
alexey_mas (2007-01-31 15:22:00) [4]хочу чтобы если стояла птичка т.е. CheckBox1_filter.Checked=true
после нажатия птичка снялась т.е. CheckBox1_filter.Checked:=false;
и комбобокс стал неактивным
и наоборот
Сергей М. (2007-01-31 15:19:00) [5]А что хочешь сделать-то ?
объясни на словах, что должно происходить ...