关于窗体创建的问题!急!

zzybird 2003-09-29 02:16:35
我动态创建一个窗体,使用如下方法:
try
Ms1:=Ms1.Create(Self);
Ms1.ShowModal;
finally
Ms1.Free;
end;

在Ms1.Create中只有一句给一个label的caption 付值的语句。可一执行到Ms1.Create的时候就出错。错误代码为:
Access violation at address 004c9928 in module 'DataCollection.exe',Read of address 00000000',Process Stopped.Use step or Run to continue.
为何?如何解决。请帮帮忙。
...全文
44 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
hiflower 2003-09-30
  • 打赏
  • 举报
回复
楼主是在 IDE 中设计好的窗体,运行期动态创建。写错了一句
try
Ms1:=TMs1.Create(Self);//TMS1
Ms1.ShowModal;
finally
Ms1.Free;
end;
studyxp 2003-09-30
  • 打赏
  • 举报
回复
同意!
netwizard 2003-09-30
  • 打赏
  • 举报
回复
不用顶了就是citytramper(阿琪) 说的,用Self.Label := 'aaa'或者Label := 'aaa'就不会有问题了,这也是基于面向对象编程应采用的方法。
bw110323 2003-09-30
  • 打赏
  • 举报
回复
顶一下
netwizard 2003-09-30
  • 打赏
  • 举报
回复
citytramper(阿琪) :说的有道理
citytramper 2003-09-29
  • 打赏
  • 举报
回复
procedure TMs1.FormCreate(Sender: TObject);
begin
Ms1.Label1.Caption:='您确实要删除 ' //Msl改成self;
+DateBegin+' 到 '+chr($0d)+chr($0a)+DateEnd+'的记录么?';
end;

在意个实例创建时,他的名字是不确定的,直接用Msl是不对的。
gdfd 2003-09-29
  • 打赏
  • 举报
回复
你动态生成的窗体包含了Label了吗?
netwizard 2003-09-29
  • 打赏
  • 举报
回复
hehe, Form.Create时Label还未创建嘛,在FormShow中赋值吧
sy_315 2003-09-29
  • 打赏
  • 举报
回复

try
Ms1:=tform.Create(Self);
Ms1.ShowModal;
finally
Ms1.Free;
end;
lxhong1980 2003-09-29
  • 打赏
  • 举报
回复
Ms1的visible设置为false 并且移到手动创建栏

Application.CreateForm(TMs1,Ms1);
try
Ms1.ShowModal;
finally
Ms1.Free;
end;
sheepcyk 2003-09-29
  • 打赏
  • 举报
回复
你说动态创建一个窗体,那窗体上的label控件你创建了吗?
zzybird 2003-09-29
  • 打赏
  • 举报
回复
构造器代码如下:
procedure TMs1.FormCreate(Sender: TObject);
begin
Ms1.Label1.Caption:='您确实要删除 '
+DateBegin+' 到 '+chr($0d)+chr($0a)+DateEnd+'的记录么?';
end;

我以把MS1放到PROJECT下的option中的右边去了。

DateBegin 和 DateEnd 是俩个其他单元的变量,是不是他们有问题。
dickeybird888 2003-09-29
  • 打赏
  • 举报
回复
///////////////////////////////////////////////////////////////////////////
// 功能: 运行模态窗体 //
// 入口参数:AForm: 窗体类实例 //
// AFormClass:窗体类 //
// AFormCaption:窗体标题 //
// 返回值: 成功 True ;失败 False //
///////////////////////////////////////////////////////////////////////////
function RunShowModal(AForm:TForm;AFormClass: TFormClass;AFormCaption:String):Boolean;
begin
Result:=false;
if not Assigned(AForm) then AForm:=nil;

AForm:=AFormClass.Create(Application);
try
AForm.Caption:=AFormCaption;
AForm.ShowModal;
finally
AForm.Free;
AForm:=nil;
end;
Result:=true;
end;
FrameSniper 2003-09-29
  • 打赏
  • 举报
回复
把你的构造器代码贴出来!
yuner5 2003-09-29
  • 打赏
  • 举报
回复
ms1:=Tms1.create(application);
一点要注意要把PROJECT下的option中的MS1放到右边去
snowmiao2002 2003-09-29
  • 打赏
  • 举报
回复
ms1:=ms1.create(application)

//要不变量名不能与类型重复????。
HiMrXia 2003-09-29
  • 打赏
  • 举报
回复
你给的信息量太少了

加一个 inherited; 在Ms1.Create中试试

5,379

社区成员

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

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