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

Вниз

форма + 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.06.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.008 c
1-65096
MystiX
2002-06-06 19:40
2002.06.20
Причтите PLZ!


1-65117
ed_209
2002-06-07 02:07
2002.06.20
Search in file


14-65251
VID
2002-05-16 16:09
2002.06.20
Где можно скачать прогу для работы с конференциями этого сайта ?


14-65237
OlegatoR
2002-05-17 13:59
2002.06.20
ё


3-64900
devol
2002-05-29 12:57
2002.06.20
Проблемы с ADO Table





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский