Главная страница
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.018 c
7-73425
prorok
2002-02-27 13:00
2002.05.23
Набор телефонного номера


3-73032
vopros
2002-04-26 12:13
2002.05.23
Как инсталяшку сдлать с бaзой Access?


14-73384
Delph
2002-04-16 15:57
2002.05.23
Что такое VPN? Спасибо.


1-73201
MVova
2002-05-14 16:16
2002.05.23
В D1.MakeLP >>> D5.???


14-73378
mart
2002-04-16 02:41
2002.05.23
Дача