Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.06.2008, 16:22
chainik chainik вне форума
Начинающий
 
Регистрация: 30.06.2008
Сообщения: 140
Репутация: 8882
По умолчанию Frame в DLL

помогите кто может
---------------------
Требуется создать DLL содержащую FRAME с компонентами
так чтобы можно было ее загрузить на главную форму
причем она должна быть к ней привязана
(те Frame.Parent := FormMain)

Смысл вот в чем
я разбиваю сложный проект на модули и оформляю их как набор DLL
экспортирующих 2 функции (загрузить/удалить)
Пользователь динамически загружает нужную.

Мои эксперименты привели к тому что Frame либо свободно болтается по экрану либо вовсе не отображается
Ответить с цитированием
  #2  
Старый 30.06.2008, 20:10
Аватар для Ferra
Ferra Ferra вне форума
Местный
 
Регистрация: 12.03.2006
Адрес: Минск
Сообщения: 527
Репутация: 1336
Счастье

DelphiWorld в помощь, я точно видел там такой пример..


вот именно

http://delphiworld.narod.ru/base/panel_from_dll.html

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

Последний раз редактировалось lmikle, 30.06.2008 в 23:11.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:45.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025