Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.23;
Скачать: CL | DM;

Вниз

О формах в DLL   Найти похожие ветки 

 
Servis   (2002-05-11 22:14) [0]

Подскажите люди добрые, нам неразумным:"Как добавить форму в DLL-ку и потом из приложения ее открыть? Если такое в принципе возможно. Проблема в том что чем больше форм тем длинее EXE-шник, а не хотелось бы его делать очень большим. Если не затруднит киньте на мыло."


 
[NIKEL] ©   (2002-05-11 22:28) [1]


Это файл Form.dpr, из которого получается DLL:

library Form;
uses
Classes,
Unit1 in "Unit1.pas" {Form1};
exports
CreateMyForm,
DestroyMyForm;
end.


Это его Unit1:

unit Unit1;
interface
[раздел uses и определение класса Form1 поскипаны]
procedure CreateMyForm(AppHandle : THandle); stdcall;
procedure DestroyMyForm; stdcall;
implementation
{$R *.DFM}
procedure CreateMyForm(AppHandle : THandle);
begin
Application.Handle:=AppHandle;
Form1:=TForm1.Create(Application);
Form1.Show
end;
procedure DestroyMyForm;
begin
Form1.Free
end;
end.


Это UnitCall вызывающего EXE-шника:

unit UnitCall;
interface
[раздел uses и определение класса Form1 поскипаны]
procedure CreateMyForm(AppHandle : THandle); stdcall; external "Form.dll";
procedure DestroyMyForm; stdcall; external "Form.dll";
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
CreateMyForm(Application.Handle)
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DestroyMyForm
end;
end.



 
Mystic ©   (2002-05-12 00:46) [2]

Да, если собираешься делать несколько DLL, то лучше включать флажок Build with runtime package в опциях проекта. Вообще эта опция весьма полезна, поскольку в запутанных проектах, например когда DLL пытается рисовать на форме из Exe-шника могут встреться довольно-таки неприятные ошибки вроде Can"t assign TFont to TFont (просто если rtl присутсвует отдельно в dll и приложении, то и объектов TFont два). Как минус - надо с собой тащить еще несколько dll.



Страницы: 1 вся ветка

Текущий архив: 2002.05.23;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.011 c
6-73350
knyaz17
2002-03-06 16:24
2002.05.23
Как получить доступ к интерфейсу IHTMLOptionsHolder?


1-73139
VID
2002-05-05 18:20
2002.05.23
Определение состояния контексного меню (TPopup)


1-73162
Mikeee
2002-05-14 02:17
2002.05.23
Вставить значение в ячейку EXCEL...


7-73416
Hokum
2002-02-18 16:39
2002.05.23
Скрыть элементы рабочего стола


1-73304
lak_b
2002-05-09 14:51
2002.05.23
помогите отловить сочетания клавиш