怎么在bpl窗体中调用主窗体中的过程或者访问主窗体的组件? ( 积分: 0 )

  • 主题发起人 wander8848
  • 开始时间
W

wander8848

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么在bpl窗体中调用主窗体中的过程或者访问主窗体的组件?
 
H

hsgrass

Unregistered / Unconfirmed
GUEST, unregistred user!
既然是BPL,那么窗体之间已经可以相互引用,
定义一个全局共享BPL,定义一个全局变量,例如g_mainfrm: Imainfrm;
定义你需要的接口函数名称,由主窗体实现Imainfrm,你在其它需要使用的窗体直接引用就可以啦
全局接口定義
Imainfrm = interface
procedure abc;
end;

// 實現INTERF
mainfrom = class(tform, imainfrm)
procedure abc;
end;

如果只在一个地方使用, 直接引用主窗体的单元就可以啦,不用搞那么复杂的
注意:BPL之间的单元不可以重复
 
W

wander8848

Unregistered / Unconfirmed
GUEST, unregistred user!
主窗体是程序的主窗体,bpl是下面的一个功能模块,bpl里面并不包含主窗体,如何在bpl窗体里面正常访问主窗体内的的过程或组件,这么说比较清楚了应该
 
L

lake_cx

Unregistered / Unconfirmed
GUEST, unregistred user!
不导出函数应该不行吧,别想象得那么好,就算可以也不应该直接调用主窗体的方法,不通道模块之间什么方法都能调用还不乱套了。只有.NET下可以直接引入模块进行直接调用
 
W

wander8848

Unregistered / Unconfirmed
GUEST, unregistred user!
那还是得建立个全局bpl了?能帮我写个例子吗
 
W

wander8848

Unregistered / Unconfirmed
GUEST, unregistred user!
W

wander8848

Unregistered / Unconfirmed
GUEST, unregistred user!
接受答案了.
 
顶部