简单的窗口调用问题,请帮忙。(20分)

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

chinahx

Unregistered / Unconfirmed
GUEST, unregistred user!
我有两个窗口form1、form2。
我在unit Unit1的uses中加入Unit2,然后就能在代码中引用form2了。

但是我在form2中却不能引用form1??为什么?我如何做才能引用form1?
以及form1上的clientdataset控件?

我试着在form1中完成一些功能,但是人有一些想法必须在form2上才能实现,
可是这需要form1上面的控件,我没有办法,请帮忙,谢谢。
(不知道我讲清楚了没有?)
 
我在unit Unit1的uses中加入Unit2,
在unit Unit2的uses中加入Unit1,
 
必须USES某一个UNIT,然后才能引用它的那些对外的域或方法
 
在 implementation 部分引相互引用,就可以了。
不能在 Interface 部分相互引用。
 
我在unit Unit1的uses中加入Unit2,
在unit Unit2的uses中加入Unit1,

这样似乎不能,delphi好像不允许我这样做。
我再说一下:
form1中是一个dbgrid控件,form2中是一些文本数据。
我想实现:
当用户点击dbgrid的时候弹出form2,并且显示相应记录的信息,也就是所有字段值。
这一点我可以在form1中实现。

但是当我修改或者是插入的时候,就必须用到诸如:
form1.ClientDataSet1.fieldByName('Region').AsString :=edtRegion.Text ;
这样的代码,然而form2中是不允许这样的。
我该怎么做,才能实现我的想法?
 
感谢 darnis 的回答,我按照您说的做了,实现了我的想法。

谢谢各位的参与。
 
你在unit1的interface部分uses Unit2;
在Unit2的implementation 部分 Uses Unit1;就可以了。

不过推荐的做法是把Unit1和unit2公用的部分放在unit3里。然后unit1和unit2都uses unit3
 
在 implementation 部分引相互引用,就可以了。



你在unit1的interface部分uses Unit2;
在Unit2的implementation 部分 Uses Unit1;就可以了。

有那些区别?
请指教,谢谢。
 
interface部分的引用是全局的,
implementation 部分的引用是局部的。

一般来讲主单元Unit1引用本文件里的Unit2,在implementation部分
unit2引用Unit1在interface部分。
 
呵,,
Delphi是不允许直接地在 interface 部份相互引用的,因为 interface部分的
申明是 public 的,也就是说引用它的单元是可是的,这样,如果
你在 unit1 在interface里引用了 Unit2,
如果 unit2 在interface 里再引用了 unit1,就会出现自引用,这是不允许的。

薄荷所说的方式是:如果你要在你的unit1 里的 interface 部分有对 unit2 中
部件(比如你要动态申请一个 TForm1)有用的话,是必须这样的,一般情况下
也是这样做的,一个放在 interface 部分,一个就放在 implementation 。
 
感谢二位的细心讲解,我对delphi又加深了了解,谢谢。
 
后退
顶部