![]() |
|
|
#1
|
|||
|
|||
![]() помогите кто может
--------------------- Требуется создать DLL содержащую FRAME с компонентами так чтобы можно было ее загрузить на главную форму причем она должна быть к ней привязана (те Frame.Parent := FormMain) Смысл вот в чем я разбиваю сложный проект на модули и оформляю их как набор DLL экспортирующих 2 функции (загрузить/удалить) Пользователь динамически загружает нужную. Мои эксперименты привели к тому что Frame либо свободно болтается по экрану либо вовсе не отображается |
#2
|
||||
|
||||
![]() DelphiWorld в помощь, я точно видел там такой пример..
вот именно http://delphiworld.narod.ru/base/panel_from_dll.html ещё на torry.net есть куча компонентов в том числе и бесплатных для такой фичи ![]() Нет повести печальнее на свете, чем повесть о заклиневшем Resete. ![]() |
#3
|
|||
|
|||
![]() Ну, где-то ты напортачил.
Вообще, когда я последний раз делал такую штуку я делал ее через форму и вызов CreateParented. Код:
// Код DLL // Нужна для корректного удаления формы procedure FreeForm(var Frm : TForm); stdcall; begin FreeAndNil(Frm); end; function MakeForm(AParent : THandle) : TForm; stdcall; begin Result := TForm1.CreateParented(AParent); Result.Visible := True; end; exports FreeForm, MakeForm; // Код основной программы // Создаем форму на панельке. var PluginForm : TForm; begin PluginForm := MakeForm(Panel1.Handle); ... // Поработали с формой, теперь ее убиваем FreeForm(PluginForm); end; Надеюсь, что причины использования FreeForm объяснять не надо? Последний раз редактировалось lmikle, 30.06.2008 в 23:11. |