Тема: Frame в DLL
Показать сообщение отдельно
  #3  
Старый 30.06.2008, 23:03
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, где-то ты напортачил.
Вообще, когда я последний раз делал такую штуку я делал ее через форму и вызов 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 объяснять не надо?
Ответить с цитированием