![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Разработка компонента [D4, D5, Win95/98, Win2k]
Yarmak_Sergey © (2003-02-08 13:10:00)Уважаемые мастера!!!
Пишу компонент, кот. в себе инкапсулирует несколько визуальных контролов, в том числе TRadioGroup. Предположим назовем этот компонент TTestComponent = class(TCustomControl).
В конструкторе TTestComponent я пишу следующее
constructor TTestComponent.Create(AOwner: TComponent);
begin
FRadioGroup := TRadioGroup.Create(Self);
FRadioGroup.Parent := Selft;
FRadioGroup.Items.Add("First Item");
FRadioGroup.Items.Add("Second Item");
end;
Так вот вопрос, почему когда я перетягиваю контрол с палитры ком понент на форму возникает ошибка с сообщением
"Control has no parent window" ?
Юрий Зотов (2003-02-09 10:18:00) [1]Ошибка возникает из-за строк:
FRadioGroup.Items.Add("First Item");
FRadioGroup.Items.Add("Second Item");
Причина - в конструкторе у FRadioGroup еще нет окна.
Заместите метод CreateWnd и перенесите эти строки в него, строго ПОСЛЕ вызова inherited.
Style (2003-02-08 23:17:00) [2]Зачем использовать TRadioGroup юзай TPanel и кучу RadioButton
а в TRadioGroup глюк
в модуле ExtCtrls
в процедуре ArrangeButtons
строчка DeferWindow если ее удалить то все работает :))
Anatoly Podgoretsky (2003-02-08 15:16:00) [3]Это ты их должен писать :-)
Yarmak_Sergey (2003-02-08 15:10:00) [4]Palladin ©
А что на уровне конструктора не определен Parent?
Тогда, когда же определяется Parent для TTestComponent?
И почему если не пишешь строки
FRadioGroup.Items.Add("First Item");
FRadioGroup.Items.Add("Second Item");
то все корректно?
Palladin (2003-02-08 13:16:00) [5]ИМХО
inherited Create(AOwner)
self.parent:=AOwner
в конструкторе попоробуй написать
Романов Р.В. (2003-02-08 13:15:00) [6]
> FRadioGroup.Parent := Selft;
Наверно не Self, а Self.Parent. Хотя вы лучше должны знать как он должен работать.