DLL中报'Cannot assign a TFont to a TFont'的问题

写了一个DLL,在DLL中创建了一个窗口,并使用的ADO控件操作数据库。宿主程序初始化DLL和显示DLL窗口都没有问题,但是在执行DLL窗口中数据库操作时就会报'Cannot assign a TFont to a TFont'这样一个错误。网上搜索了一下,找到了一个解决方法,如下:

 

主要是由于在创建Dll的Form时,将外部调用程序的Application、Screen和MainForm都传给了Dll并且将Dll中的这几个对象都替换掉了的缘故,解决的办法是只需将外部调用程序的Application.Handle及MainForm传给Dll并替换掉Dll中的这两项值就可以了。如:  
  var      
  p:   PLongInt;  
   
  {DllApp:   TApplication   Dll中的Application  
    OutApp:   TApplication   外部调用程序的Application  
  }  
  p:=@(DllApp.MainForm);  
  DllApp.Handle   :=   OutApp.Handle;  
  p^:=LongInt(OutApp.MainForm);  

 

这样处理一下就能解决这个问题,但究竟是什么原因呢?

 

按照上面的方法修改了代码,编译运行,进行数据库操作时,弹出ADOConnection登录验证输入用户名和密码的小窗口

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值