怎样调用dll里的窗体,高手进,在线等.......... ( 积分: 50 )

  • 主题发起人 主题发起人 lcmlhs
  • 开始时间 开始时间
如果出现错误提示“尚未调用 CoInitialize。.”
那么解决办法就是上面的了。
因为在调用Com以前需要进行初始化,就是使用CoInitialize进行。
如果不进行初始化,就会出问题的。
特别是在动态链接库中使用了Ado,而在主程序中没有初始化,那么调用的时候就会出现
没有“尚未调用 CoInitialize...”的错误。
如果你在主程序中也使用了Ado控件,那么就不会出这个问题,因为在Ado单元里面已经调用了CoInItialize了。
如果“不是很理想”,那么可能其它地方还有其它的问题了。
 
procedure TDM.ADODS_ydcfBeforePost(DataSet: TDataSet);
begin
if not assigned(form1) then
begin
form1:=tform1.create(nil);
end;
dm.ADODS_ydcf.FieldByName('yundnr').Value:=form1.Memo_ydnr.Text;
showmessage(form1.Memo_ydnr.Text); //这里老是显示没有内容,可是明明有呀,可能是这个时候form1窗体nil 了
end;
 
为什么主窗体的assigned(form1)会为false就是说,是不是没有指向它????
 
可是它是存在的呀
 
没有人吗??高手救命呀
 
没有回贴,誓不结贴
 
自己顶一个
 
to 小红河:在吗????????????????????
 
在动态库中增加一个打开窗体的方法,然后调用就是
procedure testdock(app:Tapplication); stdcall;
var
TAPP :TApplication ;
begin
//CoInitialize(nil);
unit2.app:= Application;
TAPP := Application;
Application := app;
Form2:=TForm2.Create(Application);
Form2.ShowModal;
Form2.free;
Application := TAPP;
end;
 
自己顶一个,看看还有没有好的方法,请大家帮忙
 
一个小的接口调用
procedure Ph_Medical(user_accounts:integer); //接口调用函数
begin
Coinitialize(nil); //对COM库进行初始化
DataModule2 := TDataModule2.create(Application);//调用ADO模板
Ph_Officina := TPh_Officina.Create(Application);//窗体初始化
with Ph_Officina_West do begin
try //用户帐号
jober:=user_accounts;
Showform;
ShowModal;
finally
CoUninitialize; //关闭COM库
DataModule2.Free;
free;
end;
end;
end;
 
http://www.delphibbs.com/keylife/iblog_show.asp?xid=27463
 
后退
顶部