type T_createdllform = function(app:Tapplication;scr:Tscreen;mainhandle:Thandle; sadoconn:Tadoconnection;pstr:pchar;scds:Tclientdataset):Tform;//接口函数说明 //调用dll procedure TForm3.exccreatedllform1Click(Sender: TObject); var dllproc:T_createdllform; str1:string; pstr:pchar; ret:boolean; //dllhandle:Thandle; begin ret:=OpenForm(dllform); if ret then exit; str1:='123456'; pstr:=pchar(str1); dllhandle:=loadlibrary('projectdll');//加载dll if dllhandle<>0 then begin @dllproc:=getprocaddress(dllhandle,'createdllform'); if assigned(dllproc) then begin dllform:=dllproc(application,screen,form3.Handle,adoconnection1,pstr,clientdataset1);//传参数,返回Tform 类型 end; end;end; //dll工程部分 {$R *.res} var Dllapp:Tapplication; Dllscr:Tscreen; function createdllform(app:Tapplication;scr:Tscreen;mainhandle:Thandle;sadoconn:Tadoconnection;mNO:pchar; scds:Tclientdataset):Tform; begin OleInitialize(Nil); application:=app; screen:=scr; mainTH:=mainhandle; Application.CreateForm(Tform2, form2); Gadoconn:=sadoconn; ICDS:=scds; form2.ClientDataSet2.Data:=ICDS.Data; form2.button1.caption:=string(mNO); IniDBgrid(form2.dbgrideh1,form2.clientdataset2,'bill_stock_main'); result:=form2; OleUnInitialize; end;procedure exitdll(reason:integer); begin if reason=DLL_PROCESS_DETACH then begin application:=Dllapp; screen:=Dllscr; end; end;exports createdllform;begin Dllapp:=application; Dllscr:=screen; Dllproc:=@exitdll; end.
T_createdllform = function(app:Tapplication;scr:Tscreen;mainhandle:Thandle;
sadoconn:Tadoconnection;pstr:pchar;scds:Tclientdataset):Tform;//接口函数说明
//调用dll
procedure TForm3.exccreatedllform1Click(Sender: TObject);
var
dllproc:T_createdllform;
str1:string;
pstr:pchar;
ret:boolean;
//dllhandle:Thandle;
begin
ret:=OpenForm(dllform);
if ret then exit;
str1:='123456';
pstr:=pchar(str1);
dllhandle:=loadlibrary('projectdll');//加载dll
if dllhandle<>0 then
begin
@dllproc:=getprocaddress(dllhandle,'createdllform');
if assigned(dllproc) then
begin
dllform:=dllproc(application,screen,form3.Handle,adoconnection1,pstr,clientdataset1);//传参数,返回Tform 类型
end;
end;end;
//dll工程部分
{$R *.res}
var
Dllapp:Tapplication;
Dllscr:Tscreen;
function createdllform(app:Tapplication;scr:Tscreen;mainhandle:Thandle;sadoconn:Tadoconnection;mNO:pchar;
scds:Tclientdataset):Tform;
begin
OleInitialize(Nil);
application:=app;
screen:=scr;
mainTH:=mainhandle;
Application.CreateForm(Tform2, form2);
Gadoconn:=sadoconn;
ICDS:=scds;
form2.ClientDataSet2.Data:=ICDS.Data;
form2.button1.caption:=string(mNO);
IniDBgrid(form2.dbgrideh1,form2.clientdataset2,'bill_stock_main');
result:=form2;
OleUnInitialize;
end;procedure exitdll(reason:integer);
begin
if reason=DLL_PROCESS_DETACH then
begin
application:=Dllapp;
screen:=Dllscr;
end;
end;exports
createdllform;begin
Dllapp:=application;
Dllscr:=screen;
Dllproc:=@exitdll;
end.