关于窗体的继承问题,大家进来看看

caixiaofei 2003-02-22 11:16:27
新建两个窗体Form1,form2

在form1放了一个button,加一个label1

在button的onclick里写
form2:=Tform2.create(application);
form.showmodal;

在form2的implilaction下写uses unit1;

在form2上放一个button1,在form2的button1的onclick里写

form1.label1.caption:='*****';

问题是。

这时我新建了一个form3,从form1继承下来。

当点击form3的button1时,出现错误。

跟踪调试出现
form1.label1.caption:='*****';这行错误 ,好像是没有引用unit3。

怎样让继承的form3,同样可以调用form2.


...全文
79 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
caixiaofei 2003-02-22
  • 打赏
  • 举报
回复
因为很多窗体都要从form1继承,而且都要调用form2.

不可能在form2里的implation下uses unit1,unit3,unit4,

再判断是哪个窗体调用form2,再执行相应的代码,这样就不灵活了。

如果form2知道是谁调用他自己就好了。

得到调用form2窗体的句柄。再来执行相应的程序。
caixiaofei 2003-02-22
  • 打赏
  • 举报
回复
to 小兵,
在form1的 button1里调用 form2,
form3是从form1里继承,当然也就执行了form2.

caixiaofei 2003-02-22
  • 打赏
  • 举报
回复
form13是继承fomr1.如果是

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);//加上去就不会有问题.
Application.CreateForm(TForm3, Form3);
Application.Run;
end.
99guo 2003-02-22
  • 打赏
  • 举报
回复
form3是从form1继承的又怎会调用form2?不明!
更不会执行form2的button1的事件!
-------------------------------------------
你有很多没说清!
可否贴代码出来看看
caixiaofei 2003-02-22
  • 打赏
  • 举报
回复
program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2},
Unit3 in 'Unit3.pas' {Form3};

{$R *.res}

begin
Application.Initialize;
Application.CreateForm(TForm3, Form3);
Application.Run;
end.

因为form1没有先创建, 而运行form3应出现错误 .
Project project1.exe raise exception class Eaccessvoiolation with
message 'access violation at address 004541bf in module 'project1.exe'. read of address fffffff' proecess stopeed

bluemeteor 2003-02-22
  • 打赏
  • 举报
回复
guangbowang
广播王,好恐怖的mail

form3如果是继承form1的话那么应该已经uses unit2了
307 2003-02-22
  • 打赏
  • 举报
回复
你在Form3中uses unit2;了吗?
有问题请发信息到我的E-mail:guangbowang@163.com
bluemeteor 2003-02-22
  • 打赏
  • 举报
回复
你说的是点击form3的button1时,出现错误。

但是调试的时候form1.label1.caption:='*****'这句又出错

那么说调试的时候form3的button1 click已经成功执行并且已经生成了form2,然后你点form2的button时候出错了?是么?
caixiaofei 2003-02-22
  • 打赏
  • 举报
回复
form3是从form1继承的。清楚了吗?

所以点击form3的button时候会调用form2.


仔细看这个问题,其实有些难的。不要一看form1,fomr2就太简单了。

bluemeteor 2003-02-22
  • 打赏
  • 举报
回复
你调试的form3的ONclick怎么会有
form1.label1.caption:='*****'这句?

真是看不明白
caixiaofei 2003-02-22
  • 打赏
  • 举报
回复
form2:=Tform2.create(application);
form2.showmodal;//写错了.

5,939

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧