![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Error : Control has no parent window [D6, Win2k]
Duce © (2002-01-25 14:52:00)Привет!
Может кто. просветленный разумом, снисходительно пояснит
причины означенной ошибки?
Котекст ошибки такой:
Имеем свой компонент от TPanel. В его конструкторе
диеамически создаем и размещаем еще несколько панелек, в коих
есть TEdit-ы. В завершении конструктора пытаюсь поставит
на TEdit первой встроенной панельки фокус. Компонент компилится,
но при запуске формы, куда вставлен компонент лезет эта ошиба...
При попытке создавать без дизайнера, динамически - то же самое.
Пачему?????
Заранее благодарный...
Набережных С. (2002-01-25 20:44:00) [1]Это неправильно в корне, т.к. противоречит самому понятию "фокуса". Если коротко, в момент вызова SetFocus в конце цепочки парентов компонента должна быть форма, есть и другие ограничения. Посмотри исходники SetFocus. В данном случае нужно вызывать SetFocus в обработчике события OnEnter предка компонента.
Дремучий (2002-01-25 17:01:00) [2]2 Duce
извини невнимательно прочитал,
нужно
эдиты первой встроенной панели
Edit1.Parent := VstrPanel1;
Edit2.Parent := VstrPanel1;
эдиты второй встроенной панели
Edit3.Parent := VstrPanel2;
Edit4.Parent := VstrPanel2;
Дремучий (2002-01-25 16:19:00) [3]2 Duce
>>Может кто просветленныйразумом...
Дремучий ;)
troits (2002-01-25 16:18:00) [4]Попробуй использовать для твоего наследника TPanel не Create, когда parent-окно еще не создано, а CreateHandle.
Дремучий (2002-01-25 16:09:00) [5]в конструкторе пишешь до SetFocus
Edit1.Parent := self;
и дело в шляпе :)