在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呢?我是初学者 忘大神帮忙啊 求详教!!!非常感谢
展开
 我来答
jiangmi2004
2013-05-19 · 超过21用户采纳过TA的回答
知道答主
回答量:80
采纳率:0%
帮助的人:54.9万
展开全部
使用单元的相互引用确实可以共享各自的窗体的全局变量和类。但是你的4和5都是动态创建的,单元的引用是编译前就做好的。你要想让两个动态创建的窗体之间共享数据可以借助其他方式,比如说产生文件,使用数据库等。希望能有帮住。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xinyt127
2013-05-19 · TA获得超过129个赞
知道小有建树答主
回答量:158
采纳率:0%
帮助的人:86.7万
展开全部
在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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
YiFei_erp19
2013-05-19 · TA获得超过1169个赞
知道小有建树答主
回答量:1584
采纳率:40%
帮助的人:447万
展开全部
var
change:boolean;
被定义在FormShow过程中,离开这个过程,这个var 就回收了。

要移到全局定义
追问
嗯 改回来了  不过还是出现这个问题。
var
F_kcsp: TF_kcsp;
change: boolean; // 这样定义是在全局吧?还是会出现问题
implementation
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
veket的小号
2013-05-19 · TA获得超过3371个赞
知道大有可为答主
回答量:3762
采纳率:0%
帮助的人:3936万
展开全部
xinyt127 正解

还可以 在代码编辑器打开 form4的代码
选择菜单 【File 】 【use unit 】在弹出的对话框中选一个你需要 引人的单元文件..........
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式