dll中窗体之间过程互调问题???(20分)

  • 主题发起人 主题发起人 zgjob
  • 开始时间 开始时间
Z

zgjob

Unregistered / Unconfirmed
GUEST, unregistred user!
在非dll程序中,form1的public里面有个procedure showdata(sender:tobject);在form2里面调用是没问题的。 <br>但是如果这两个窗体在dll中,则调用时会报错??如何解决??
 
弄个公共单元,把要共享的过程放在公共单元中
 
是不是 form1 还没有 Create 造成的。
 
form1是显示状态下打开form2,然后form2再调用form1中的showdata(sender)过程,报错??
 
这种东西,最好按我说的方法,弄个第三者出来间接下
 
把你的调用代码贴出来看看...
 
弄个公共单元,把要共享的过程放在公共单元中
 
我的代码是在DLL内有两个窗体form1和form2<br>form1的public里面声明了一个<br>procedure showdata(sender:tobject);<br>..<br>procedure tform1.showdata(sender:tobject);<br>begin<br>&nbsp;//这里的过程是加载treeview列表.<br>end;<br><br>form2里面有一个按钮调用它<br>procedure tform2.btn1click(sender:tobject);<br>begin<br>form1.showdata(sender);<br>end;<br><br>如果不是在dll里面这样调用没问题,但是放在dll里面调用时就报错,我试过将过程放到公共单元,还是不行?
 
那只能跟踪到 showdata 里面去看看哪些代码执行的时候出错了。
 
dll中窗体互相调用,要把两个DLL完全独立开,也就是说,这个DLL的调用只能是<br>function XXX(var 参数):boolean;的形式<br>不要在调用时初始化窗体,这样是因为一个程序中一个类可以初始化多次,但名字不同想用,你用form2调用form1时有一个创建过程,因为已经存在这个名称了,所以出错
 
你的窗體還沒有實例化怎麼可能調用得到呢<br>或者你可以那過程寫成類函數
 
感觉应该是别的地方出了问题,你贴出报错信息来.
 
终于搞定,原来是我在启动DLL是没有创建第一个窗体对象
 
后退
顶部