![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка при динамическом создании TImageList [D7, WinXP]
alex_shkut © (2005-03-02 21:30:00)
FImageList:=TCustomImageList.Create(AOwner);
//=== Собственно, ToolBar ====
FBtnBar:=TToolBar.Create(Self);
FBtnBar.Parent:=FBtnPanel;
FBtnBar.ShowCaptions:=true;
FBtnBar.Images:=FImageList;
Вот здесь и вылазит ошибка:
Project raised exception class EInvalidOperation with message 'Control '' has no parent window'.
Кто знает, с чем это связано?
alex_shkut (2005-03-03 11:33:00) [1]Спасибо огромное.
Перенес FBtnBar.Images:=FImageList в процедуру CreateWnd и все стало нормально создаваться.
Юрий Зотов (2005-03-03 00:33:00) [2]Многие методы оконных контролов реализованы посылкой сообщений окну. В конструкторе же создается сам объект, а его окно еще не создано - поэтому вызов таких методов в конструкторе, вообще говоря, ошибочен. И если контролы user32 обходят эту ситуацию автоматически, за счет вызова HandleNeeded, то контролы comctl32 (а к ним и относятся тулбары) такого не любят. Похоже, отсюда и ошибка.
Попробуйте перенести код из конструктора в CreateWnd, только обязательно после вызова inherited.
alex_shkut (2005-03-02 22:50:00) [3]Проще задача состоит в том, чтобы запихнуть Icon в Bitmap.
Я пытаюсь использовать ImageList как естественное свойство ToolBar но в конструкторе Create потомка TPanel, в которую я встраиваю ToolBar возникает ошибка.
Реализовано в отдельном модуле.
TPanel -> ToolBar+ImageList -> ToolButton+ImageIndex:Icon
Юрий Зотов (2005-03-02 22:09:00) [4]Уточните - где написан этот код?
Похоже, что слишком рано, когда еще не создано окно.
alex_shkut (2005-03-02 21:48:00) [5]Без этой строки все работает нормально, но нужны картинки.