Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > Delphi: Общие вопросы > Глюк при переборе компонентов из фрейма |
Автор: IGL 02.02.05, 15:00 |
Создал я фрайм с кнопкой, по нажатию которой должны очишаться компоненты на форме с этим фреймом Код такой <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> var Comp: TComponent; Count: LongInt; begin For Count:= 0 to Pred((Owner as TForm).ControlCount) do begin Comp:= (Owner as TForm).Components [Count]; If Comp is TEdit then (Comp as TEdit).Clear; If Comp is TComboBox then (Comp as TComboBox).Clear; if Comp is TCheckBox then (Comp as TCheckBox).Checked:= False; { и так далее ...} end; end; Фрейм разместил на форме, накидал компонентов, запускаю, нажимаю кнопку "Очистить"... Delphi выдает ошибку, мол неверный индекс компонента. Стал смотреть - оказывает, что ControlCount = 15, а на 12 компоненте ошибка - List Index Out Of bounds. Кто-нибудь встеречался с подобной проблемой? |
Автор: karabanov 02.02.05, 15:09 |
ComponentCount это количество Owned components. а ControlCount - количество Child Controls. а ты берешь индексы одного, а получаешь другое <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> var Comp: TComponent; Count: LongInt; begin For Count:= 0 to Pred((Owner as TForm).ComponentCount) do // здесь begin Comp:= (Owner as TForm).Components [Count]; If Comp is TEdit then (Comp as TEdit).Clear; If Comp is TComboBox then (Comp as TComboBox).Clear; if Comp is TCheckBox then (Comp as TCheckBox).Checked:= False; { и так далее ...} end; end; |
Автор: IGL 02.02.05, 15:40 |
Спасибо, добрый человек! |