library
LOGIN;
uses
SysUtils,
Classes,
uLogin
in
'uLogin.pas'
,
uLoginData
in
'..\common\uLoginData.pas'
;
{$R *.res}
exports
ShowLoginDialog name
' ShowLoginDialog'
;
begin
end
.
Далее...сама ShowLoginDialog
unit
uLogin;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,uLoginData;
type
TfLogin =
class
(TForm)
Label1: TLabel;
Label2: TLabel;
ebUserName: TEdit;
ebPassword: TEdit;
btnOK: TButton;
btnCancel: TButton;
procedure
FormShow(Sender: TObject);
procedure
btnOKClick(Sender: TObject);
procedure
btnCancelClick(Sender: TObject);
private
public
LoginData: TLoginData;
end
;
procedure
ShowLoginDialog(Handle: Thandle; p:
pointer
);
var
fLogin: TfLogin;
implementation
{$R *.dfm}
procedure
ShowLoginDialog(Handle: Thandle; p:
pointer
);
Begin
Application
.
Handle:= Handle;
fLogin:=Tflogin
.
Create(Application) ;
flogin
.
LoginData:=TLoginData(p);
fLogin
.
ShowModal;
fLogin
.
Free;
End
;
procedure
TfLogin
.
FormShow(Sender: TObject);
begin
ebPassword
.
Text:=
''
;
end
;
procedure
TfLogin
.
btnOKClick(Sender: TObject);
begin
LoginData
.
user_id:=ebUserName
.
Text;
LoginData
.
password:=ebPassword
.
Text ;
LoginData
.
Modalresult:=mrOk;
end
;
procedure
TfLogin
.
btnCancelClick(Sender: TObject);
begin
LoginData
.
Modalresult:=mrCancel;
end
;
end
.
И непосредственно сам код главного модуля...
procedure
TfMain
.
soed1Click(Sender: TObject);
type
TShowLoginDialog=
procedure
(Handle:T Handle;
pointer
);
var
hLib: Thandle;
Showlogindialog: TshowloginDialog;
Logindata:Tlogindata;
begin
HLib:=LoadLibrary(
'Login.DLL'
);
if
hlib<
32
then
Begin
Showmessage(
'отсутствует библиотека login.dll'
);
exit;
End
;
LoginData:=TloginData
.
create;
Showlogindialog:=TshowloginDialog(G etProcAddress(hLib,
'SHOWLOGINDIALOG '
));
Showlogindialog(Application
.
Handle, LoginData);
Freelibrary(hLib);
if
LoginData
.
modalresult=mrOk
then
Begin
try
with
fDM
.
DataBase1
do
Begin
if
Connected
then
Close;
LoginPrompt:=
false
;
Params
.
Values[
'Password'
]:=Trim(LoginData
.
password);
Params
.
Values[
'User name'
]:=Trim(LoginData
.
user_id);
Open;
End
;
Statusbar1
.
simpletext:=
'Yes'
;
except
Statusbar1
.
simpletext:=
'No'
;
End
;
End
;
end
;