转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
在Delphi 中用程序实现自定义窗体的创建和显示顺序(1)         ★★★★

在Delphi 中用程序实现自定义窗体的创建和显示顺序(1)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2007 更新时间:2009/4/23 18:37:44
procedure TForm2.FormCreate(Sender: TObject);

begin

  Label1.Caption:=''''Form2 Create Completed!'''';

  Form2.Show;

  Application.CreateForm(TForm3,Form3);

end;

          (代码3)

在Form3的OnCreate()事件函数中加入以下代码:

procedure TForm2.FormCreate(Sender: TObject);

begin

  Label1.Caption:=''''Form3 Create Completed!'''';

  Form3.Show;

end;

       (代码4)

   这个程序在运行后将显示三个窗体,分别是Form1,Form2,和Form3。你可能在想,如果要关闭程序,只要关闭Form1这个主窗体就可以了。然而你错了,应该是关闭Form3才能将整个程序关闭。为什么呢?关键在CreateForm()这个窗体创建函数,查一下Delphi的随机帮助文件就清楚了。帮助文件有关CreateForm()函数的说明如下:

 

Call CreateForm to dynamically create a form at runtime. Developers do not need to add code for creating most forms, because typically one or more calls to CreateForm are added automatically to the project''''s main source when using the form designer.

 

CreateForm creates a new form of the type specified by the FormClass parameter and assigns it to the variable given by the Reference parameter. The owner of the new form is the Application object.

 

Note:      By default, the form created by the first call to CreateForm in a project becomes the application’s main form.

 

特别注意最后一句,默认地,在一个Project中第一个由CreateForm调用创建的窗体就成为应用程序的主窗体。这样就不难解释为什么需要关闭Form3才能关闭应用程序了。因为程序中第一个使用CreateForm的是在Project1.dpr中的一段代码:

begin

  Application.Initialize;

  Application.CreateForm(TForm1, Form1);

  Application.Run;

end.

这段代码是在Project.dpr中自动生成的,然后我们在Form1中的OnCreate()事件函数第二次使用CreateForm,这时Form1的创建还没结束( 因为OnCreate事件还没完成 ),程序的主窗体就已经改变了,变成了Form2 , 然后我们又在Form2中的OnCreate()事件函数第三次使用CreateForm,这时程序的主窗体变成了Form3 ,也就是说程序的生杀大权已经掌握在Form3手中。绝对不要再在Form3的OnCreate()事件函数中加入Application.CreateForm(TForm1,Form1),否则,程序将进入一个资源创建的死循环,一点一点地耗尽你的机器的内存。

从这里也可以看出Delphi并不是完全的面向对象,它不像Java那样可以随时随地创建一个窗体。

 

2.窗体权限的保留

   如果我们想在Form1中保留程序的权限,则需要新建一个Button,然后把Form1中的OnCreate()事件函数的代码放在Button的 OnClick()事件中。这时则只有关闭Form1,才能关闭整个程序。

 

3.动态选择创建窗体

回到我们一开始提出的问题,如何动态的有选择地创建窗体呢?我们用一个随机数模拟实际可能出现的动态情况,实际情况可能是程序在初始化时动态判断一个文件或数据库的一个值,由这个值决定是先显示Form2还是先显示Form3,还是只显示Form1 。代码如下:

 

procedure TForm1.FormCreate(Sender: TObject);

var

  randomnum:Integer;

begin

  Label1.Caption:=''''Form1 Create Complete!'''';

  Randomize;//设置随机器

  randomnum:=Random(10);//在0到10之间取随机值

  if (randomnum>0)and (randomnum<=4) then //如果随机值在0到4之间

  Begin

    Form1.Show;

    Application.CreateForm(TForm2, Form2);

  End

  else if (randomnum>4)and (randomnum<=8) then //如果随机数在4到8之间

  Begin

    Form1.Show;

    Application.CreateForm(TForm3, Form3);

  End

  Else     //如果随机数在8到10之间

  Form1.Show;

end;

    (代码5)

上一页  [1] [2] 


[Delphi程序]在DELPHI 文 本 和 图 形 的 打 印  [Delphi程序]在Delphi 中用程序实现自定义窗体的创建和显示顺序…
[Web开发]在Delphi 7中用dbexpress连接MySQL  
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台