关于避免单元间的相互引用,怎样做比较好?(50分)

  • 主题发起人 主题发起人 chenxu
  • 开始时间 开始时间
C

chenxu

Unregistered / Unconfirmed
GUEST, unregistred user!
现有两个form:form1、form2;form1上有一panel,将form2一直dock在form1的panel上,此时如果form1的标题栏上要显示form2中某控件的的相关信息(比如显示form2中的treeview节点的名称),如果不相互引用应该如何做呢?采用事件、消息?
 
相互引用最简单,在interface 和 implementation 互相引用,没有必要想的太复杂
 
按照对象的继承和传递等原则最好不要互相引用
 
我有个DEMO,你要不要看??留个EAIL下来
 
避免相互引用可以采用第三个单元
 
相互引用是允许的,只要在接口部分的uses子句不出现相互引用就行。解决相互引用的一种模式就是,每个循环引用必须至少有一个uses子句出现在实现部分。例如:
错误示例:
unit Unit1;
interface
uses Unit2;
...

unit Unit2;
interface
uses Unit1;
...
// 以上两个单元在接口部分相互引用,将产生编译错误

正确示例:
unit Unit1;
interface
uses Unit2;
...

unit Unit2;
interface
...
implementation
uses Unit1;
...
// 这样一个在接口部分引用,一个在实现部分引用,编译就不会出现错误了。
 
在implemention下面使用uses就可以了
 
同意linuxer
 
终极解决方案:用接口
 
我个人喜欢用消息,一个Unit接受自定义的消息,另一个发送该消息,很方便。
在发送消息的模块创建时,把接收消息的模块句柄传递给他,然后就向此句柄直接Dispatch就行了
 
个人比较同意calman的意见,不过有没有例子呢?
 
用一个全局变量也可以完成你说的功能
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
916
SUNSTONE的Delphi笔记
S
D
回复
0
查看
928
DelphiTeacher的专栏
D
D
回复
0
查看
883
DelphiTeacher的专栏
D
D
回复
0
查看
856
DelphiTeacher的专栏
D
后退
顶部