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

Вниз

форма + dll   Найти похожие ветки 

 
keymaster ©   (2002-04-19 23:18) [0]

Нужно закопать модальную форму в dll
Поискал я это в faq, но не нашёл...
кто в курсе, поделитесь рецептом, плиз.
И ещё вопрос: а можно в одну длл спрятать несколько
модальных форм?


 
Sirus ©   (2002-04-20 09:55) [1]

> И еще вопрос:
Можно... можно туда прятать сколько угодно форм и даже модальных... пока памяти хватит.. :))

Пример:
пример проекта DLL
library DLLForm;

uses
SysUtils, StdCtrls, Controls, Forms, Classes,
main in "main.pas" {MainForm};

Function ShowLibForm:Boolean; stdcall;
Begin
MainForm:=TMainForm.Create(Application);
Result:=(MainForm.ShowModal = mrOk);
if Result then Begin
FreeAndNil(MainForm);
End;
End;

{$R *.RES}

Exports
ShowPaysForm;

begin
end.


Код формы в DLL
unit main;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type
TMainForm = class(TForm)
CloseButton: TButton;
procedure CloseButtonClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
MainForm: TMainForm;

implementation

uses dmunit;

{$R *.DFM}

procedure TMainForm.CloseButtonClick(Sender: TObject);
begin
MainForm.ModalResult:=mrOk;
Close;
end;

end.


А теперь вызов формы в DLL из программы:

unit main;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus;

type
TMainForm = class(TForm)
button1:TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
MainForm: TMainForm;
LibHandle: THandle; //Хендл библиотек
ShowLibForm: function:Boolean; stdcall;

implementation

{$R *.DFM}

procedure TMainForm.Button1Click(Sender: TObject);
begin
@ShowLibForm := nil;
LibHandle := LoadLibrary("dllform.dll");
if LibHandle >= 32 then begin
@ShowLibForm := GetProcAddress(LibHandle,"ShowLibForm");
if @ShowLibForm <> nil then begin
MainForm.Hide;
ShowLibForm;
MainForm.Show;
end;
end;
@ShowLibForm:=nil;
FreeLibrary(LibHandle);
end;

End.


Вот и все... я тоже когда искал ответ на этот вопрос... и вот результат... Удачи в программировании...

With best regards Diamond Sirus Ringer



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

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

Наверх




Память: 0.47 MB
Время: 0.012 c
14-65216
Sewix
2002-05-17 14:17
2002.06.20
Подскажите где можно достать картинки на кнопки


1-65067
garry
2002-06-06 17:25
2002.06.20
Excel, Колонтитулы и т.п


1-65037
Cr@zy
2002-06-08 11:55
2002.06.20
Кнопки в WinXP


1-65006
lipskiy
2002-06-08 03:32
2002.06.20
UBPFD - Бесплатная база готовых решений для Delphi


14-65205
Свой
2002-05-13 18:39
2002.06.20
Посоветуйте что делать