Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.007 c
3-64902
Browko Dmitrey
2002-05-29 15:18
2002.06.20
ADOQuery и команда CAST


3-64911
int64
2002-05-24 08:41
2002.06.20
Альтернатива post_event.


8-65173
Yuraz
2002-02-05 13:43
2002.06.20
Люди, помогите советом! Есть необходимость сделать что то типа TrackBar, но только в 2х плоскостях


1-65019
L@G
2002-06-09 02:45
2002.06.20
IE


3-64950
alexus
2002-05-27 21:40
2002.06.20
БД на болванке




   Наверх