Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.05.23;
Скачать: [xml.tar.bz2];

Вниз

О формах в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.44 MB
Время: 0.006 c
14-73381
SB.John
2002-04-15 11:18
2002.05.23
Как вы относитесь к вопросам типа...


1-73187
dangerouse
2002-05-14 09:59
2002.05.23
Как в FileListBox отобразить ...


14-73398
Rammish
2002-04-13 12:05
2002.05.23
Как проинсталлировать компонент?


6-73332
sergey_1
2002-02-22 08:45
2002.05.23
TNMSMTP Уведомление о доставке


1-73181
Sergn
2002-05-13 21:33
2002.05.23
Отлавливать в RichEdit события drag-drop текста





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский