在Delphi中创建了一个基础窗体,然后创建了窗体4和5都是继承基础窗体的,那么单元4怎么引用单元5定义的类
这是单元4的部分代码:procedureTF_kcsp.SpeedButton1Click(Sender:TObject);begininherited;Applicat...
这是单元4的部分代码:
procedure TF_kcsp.SpeedButton1Click(Sender: TObject);
begin
inherited;
Application.CreateForm(TF_sbjbcx,F_sbjbcx);// [错误] Undeclared identifier:'TF_sbjbcx'
F_sbjbcx.ShowModal;
F_sbjbcx.Free;
end;
在单元5中有定义:
var
F_sbjbcx: TF_sbjbcx;
怎样将5的这个应用调用给4呢?我是初学者 忘大神帮忙啊 求详教!!!非常感谢 展开
procedure TF_kcsp.SpeedButton1Click(Sender: TObject);
begin
inherited;
Application.CreateForm(TF_sbjbcx,F_sbjbcx);// [错误] Undeclared identifier:'TF_sbjbcx'
F_sbjbcx.ShowModal;
F_sbjbcx.Free;
end;
在单元5中有定义:
var
F_sbjbcx: TF_sbjbcx;
怎样将5的这个应用调用给4呢?我是初学者 忘大神帮忙啊 求详教!!!非常感谢 展开
4个回答
展开全部
使用单元的相互引用确实可以共享各自的窗体的全局变量和类。但是你的4和5都是动态创建的,单元的引用是编译前就做好的。你要想让两个动态创建的窗体之间共享数据可以借助其他方式,比如说产生文件,使用数据库等。希望能有帮住。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在4窗体,implement后面添加uses引用5窗体单元
追问
大神果然正解 先谢了。还有几个问题想请教一下。我在4中定义了一个变量如下:
procedure TF_kcsp.FormShow(Sender: TObject);
var
change:boolean;
同样在5上调用这个如下:
procedure TF_sbjbcx.FormShow(Sender: TObject);
begin
inherited;
try
if F_kcsp.change=True then //会出现错误: Unit5.pas(58): Undeclared identifier: 'change'
这个又是怎么回事呢?
追答
你这个变量是私有的,只有在接口部分定义的,才能被别的单元引用,也就是你要在public里var
change: boolean
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
var
change:boolean;
被定义在FormShow过程中,离开这个过程,这个var 就回收了。
要移到全局定义
change:boolean;
被定义在FormShow过程中,离开这个过程,这个var 就回收了。
要移到全局定义
追问
嗯 改回来了 不过还是出现这个问题。
var
F_kcsp: TF_kcsp;
change: boolean; // 这样定义是在全局吧?还是会出现问题
implementation
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
xinyt127 正解
还可以 在代码编辑器打开 form4的代码
选择菜单 【File 】 【use unit 】在弹出的对话框中选一个你需要 引人的单元文件..........
还可以 在代码编辑器打开 form4的代码
选择菜单 【File 】 【use unit 】在弹出的对话框中选一个你需要 引人的单元文件..........
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询