![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
При переключении между чекбоксами - ошибка Stack overflow. [D7, WinXP]
Dr.Andrew © (2008-08-26 20:22:00)Добрый вечер!
Тестировано на Delphi 2007 win32 и Windows Vista Home Basic.
Проблемы с компонентом TCheckBox.
Вот два варианта кода:
procedure TForm1.CheckBox1Click(Sender: TObject);
// var i : Integer;
begin
{ for i := 0 to GroupBox1.ControlCount-1 do
begin
if TComponent(Sender).Tag = i then
(GroupBox1.Controls[i] as TCheckBox).Checked := True
else
(GroupBox1.Controls[i] as TCheckBox).Checked := False;
end; }
if Sender = CheckBox1 then
begin
CheckBox1.Checked := True;
CheckBox2.Checked := False;
CheckBox3.Checked := False;
CheckBox4.Checked := False;
end
else
if Sender = CheckBox2 then
begin
CheckBox1.Checked := False;
CheckBox2.Checked := True;
CheckBox3.Checked := False;
CheckBox4.Checked := False;
end
else
if Sender = CheckBox3 then
begin
CheckBox1.Checked := False;
CheckBox2.Checked := False;
CheckBox3.Checked := True;
CheckBox4.Checked := False;
end
else
if Sender = CheckBox4 then
begin
CheckBox1.Checked := False;
CheckBox2.Checked := False;
CheckBox3.Checked := False;
CheckBox4.Checked := True;
end;
end;
Финал один при переключении между чекбоксами выдает компиллятор следующую ошибку:
---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EStackOverflow with message 'Stack overflow'.
---------------------------
Break Continue Help
---------------------------
В чем проблема?
Спасибо.
Юрий Зотов (2008-08-26 20:56:00) [41]Судя по коду, тут больше подходит TRadioGroup, а не набор TCheckBox.
Dr.Andrew (2008-08-26 20:53:00) [42]Да, но на делфи 7 все было нормально, а в делфи 2007 вот такая проблема. Это связано с делфи 2007 и ее спецификой. Можно подробнее объяснить. Спасибо.
TStas (2008-08-26 20:44:00) [43]В том, что Вы в обработчике щелчка меняете состояние ЧекБокса, что вызывает этот же обработчик.