![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 05.04.2008
Сообщений: 244
|
![]()
Добрый вечер!
Тестировано на 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 --------------------------- В чем проблема? Спасибо. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,527
|
![]()
проблема в рекурсивном вызове OnCheckBoxClick.
Checkbox1.checked:=чтото внутри себя имеет вызов OncheckboxClick там опять checked:= и все по новой если должен быть отмечен только один пункт то лучше использовать RadioButton или даже RadioGroupBox
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 26.08.2008 в 20:47. |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 05.04.2008
Сообщений: 244
|
![]()
Не совсем понятно, тогда почему же в делфи 7 подобный код работал нормально? если не затруднительно можно объяснить более подробно. Спасибо.
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 05.04.2008
Сообщений: 244
|
![]()
Может это имеет отношении специфически для делфи 2007? Кто-нибудь сталкивался с такой проблемой? Спасибо.
|
![]() |
![]() |
![]() |
#5 | |
Старожил
Регистрация: 06.08.2007
Сообщений: 2,183
|
![]() Цитата:
![]() |
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 05.04.2008
Сообщений: 244
|
![]()
Спасибо. Хотя у меня работало. Не могу понять почему, может каие другие процессы что-то перекрывали, но работало. Спасибо еще раз. Я думал, что может это связано с дефектом делфи 2007 или может каких-то компонентов, которые я установил. Потому и обратился за разъснением.ю. Спасибо.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Исправить ошибку | LLIypLLIyH | Помощь студентам | 5 | 16.06.2008 16:50 |
Помогите исправить ошибку | Булат | Общие вопросы Delphi | 3 | 25.04.2008 10:01 |
Stack Overflow??? | Рустам | Общие вопросы Delphi | 7 | 01.04.2008 17:24 |
помогите исправить ошибку. | alen666 | Паскаль, Turbo Pascal, PascalABC.NET | 11 | 08.03.2008 16:43 |
MySQL как исправить ошибку | Dengar | PHP | 8 | 03.03.2008 03:29 |