Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.216.233.58] |
|
Сообщ.
#1
,
|
|
|
Создал я фрайм с кнопкой, по нажатию которой должны очишаться компоненты на форме с этим фреймом
Код такой 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. Кто-нибудь встеречался с подобной проблемой? |
Сообщ.
#2
,
|
|
|
ComponentCount это количество Owned components. а ControlCount - количество Child Controls. а ты берешь индексы одного, а получаешь другое
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; |
Сообщ.
#3
,
|
|
|
Спасибо, добрый человек!
|