zoukankan      html  css  js  c++  java
  • Application.CreateForm()和TForm.Create()创建的窗体有什么区别么?二者在使用上各有什么技巧?(50分)

    https://wedelphi.com/t/135849/

    请详细些,并给出例子。谢谢。
    Application.CreateForm()创建的第一个可显示的窗体是自动成为主窗体,并且自动显示,
    并且在Project Options中窗体左列表中显示,如果有多个这样的窗体的话,这些窗体都会在
    程序运行时就自动创建,想用的时候可以不用Create的了,直接Show就行了,TForm.Create
    创建的窗体必须show一下才行,其它好象就没有什么分别,
    application.createform是创建一空白的窗体,就象DELPHI里点NEW APPLICATION出来的窗体
    一样什么都没有。
    而TFORM。CREATE创建出来的窗体可以是设计时候创建好的。也就是设计好窗体,运行时动态
    创建。这样做的好处主要是:DELPHI默认的是自动创建,在菜单PROJECT下的OPTION中可以看
    到工程中各个单元是自动创建或者是动态创建。但是当工程比较大拥有大量窗体时候,如果
    所有窗体都是动态创建的,那么势必影响程序的启动速度和运行速度,因为创建的窗体都是
    要放到内存中的。而现实的情况是,某些用户使用某部分功能,而另一些人则用其他的。这
    时候就应该使用动态创建窗体的方法了。具体的使用方法如下。先设计好一个窗体。
    把窗体名称注释掉
    var
    Formtest: TFormtest;//该句应该注释掉

    implementation
    更改后应该为
    {var
    Form1: TForm1;}

    implementation
    在调用的窗提内先要在uses中添加

    implementation
    uses
    TFormtestUnit;

    再如下写
    procedure TFormMain.N11Click(Sender: TObject);
    var formtest:Tformtest;
    begin
    with TFormNzdbdCk.Create(Self) do
    Show;
    end;
    应该能看到结果了吧
    两者区别很大
    比较一下 Application.CreateForm(TForm1, Form1); 与 Form1 := TForm1.Create(Application);
    的区别就容易清楚了.

    Form1 := TForm1.Create(Application); 是先调用TForm1的Create方法, 然后付赋值给Form1变量

    Application.CreateForm(TForm1, Form1); 则不同. 他先得到一个Instance的指针, 把这个指针
    赋值给Form1, 然后是Form1.Create(Application). 这与上面的区别在于, 在TForm1的OnCreate
    事件中, 我们可以使用Form1这个变量.

    另外一点是Application.CreateForm中判断所创建的Form是否MainForm, 如果是则MainForm := Form1;
    这点很重要, 因为Application.MainForm是只读的属性, 整个程序运行过程中只在此赋值一次, 以后
    再也不能更改.

    注: mat的Application.CreateForm创建了一个空白的窗体的说法是不正确的
    [:)]sorry mat, no hard feelings.
    還是會長老師厲害 :)
    呵呵huizhang兄弟说的是,确实犯了点错误,不好意思,差点误导了别人。
    多人接受答案了。
  • 相关阅读:
    UVALIVE 6958 Indoorienteering
    Calendar Game
    Wizard's Tour
    2017 ACM-ICPC 亚洲区(西安赛区)网络赛 G. Xor
    Alliances
    2017沈阳网络赛hdu6199 gems gems gems
    pytorch 的max函数
    pytorch调用gpu
    jupyter notebook实现代码自动补全
    pytorch强大的自动求导功能
  • 原文地址:https://www.cnblogs.com/jijm123/p/10843080.html
Copyright © 2011-2022 走看看