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兄弟说的是,确实犯了点错误,不好意思,差点误导了别人。
多人接受答案了。

Application.CreateForm()和TForm.Create()创建的窗体有什么区别么?二者在使用上各有什么技巧?(50分)的更多相关文章

  1. 创建Windows窗体 : WinMain() 与 WndProc()

    #include <windows.h> #include <mmsystem.h> LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, ...

  2. 基于tauri+vue3.x多开窗口|Tauri创建多窗体实践

    最近一种在捣鼓 Tauri 集成 Vue3 技术开发桌面端应用实践,tauri 实现创建多窗口,窗口之间通讯功能. 开始正文之前,先来了解下 tauri 结合 vue3.js 快速创建项目. taur ...

  3. 数据库CRUD操作:C:create创建(添加)、R:read读取、U:update:修改、D:delete删除;高级查询

    1.注释语法:--,#2.后缀是.sql的文件是数据库查询文件3.保存查询4.在数据库里面 列有个名字叫字段   行有个名字叫记录5.一条数据即为表的一行 CRUD操作:create 创建(添加)re ...

  4. CRUD操作 create创建 read读取 update修改 delete删除

    1.注释语法:--,#2.后缀是.sql的文件是数据库查询文件3.保存查询4.在数据库里面 列有个名字叫字段 行有个名字叫记录 CRUD操作:create 创建(添加)read 读取update 修改 ...

  5. 无责任Windows Azure SDK .NET开发入门篇三[使用Azure AD 管理用户信息--3.2 Create创建用户]

    3.2 Create创建用户 [HttpPost, Authorize] public async Task<ActionResult> Create( [Bind(Include = & ...

  6. WPF换肤之一:创建圆角窗体

    原文:WPF换肤之一:创建圆角窗体 我们都期望自己的软件能够有一套看上去很吸引人眼球的外衣,使得别人看上去既专业又有美感.这个系列就带领着大家一步一步的讲解如何设计出一套自己的WPF的窗体皮肤,如果文 ...

  7. java游戏开发杂谈 - 创建一个窗体

    package game1; import javax.swing.JFrame; /** * java游戏开发杂谈 * ---demo1:创建一个窗体 * * @author 台哥 * @date ...

  8. python3中 tkinter模块创建window窗体、添加按钮、事务处理、创建菜单等的使用

    开始接触桌面图形界面编程,你可以到安装路径  \lib\tkinter 打开__init__.py 文件了解tkinter 1    tkinter 模块创建窗体,代码如下截图: 运行结果,如有右图显 ...

  9. Vue Create 创建一个新项目 命令行创建和视图创建

    Vue Create 创建一个新项目 命令行创建和视图创建 开始之前 你可以先 >>:cd desktop[将安装目录切换到桌面] >>:vue -V :Vue CLI 3.0 ...

随机推荐

  1. 安装Python包报错——ReadTimeoutError

    一.问题:安装python包的时候报错ReadTimeoutError——Read time out. 二.解决办法三种方法,一是切换下载源:二是下载相应平台的安装包后安装:三是下载源码编译安装:  ...

  2. AIX中物理卷管理

    1.物理卷管理   1.1物理卷区域的分布 按照磁头在硬盘上的读写速率不同可以把硬盘划分成几个不同级别的区域.因此逻辑卷对应的PP在哪一个级别的区域上,对逻辑卷的读写速率影响很大. 硬盘的截面分为5个 ...

  3. Codeforces1223E. Paint the Tree(树形dp)

    题目链接:传送门 题目大意: 给出节点数为n的一棵带权树,和每个点的最大染色数k.一条边的权重w能产生价值w的条件是,这条边的两端的点至少有一个颜色相同.颜色种类数无限,但每种只能使用两次,问能产生的 ...

  4. parted分区的步骤

    使用parted分区的步骤1. fdisk -l             ##查看一下当前的存储设备,这里可以看到新加入的磁盘,比如/dev/sdb2. parted /dev/sdb         ...

  5. python3 + Tensorflow + Faster R-CNN训练自己的数据

    之前实现过faster rcnn, 但是因为各种原因,有需要实现一次,而且发现许多博客都不全面.现在发现了一个比较全面的博客.自己根据这篇博客实现的也比较顺利.在此记录一下(照搬). 原博客:http ...

  6. vue 父组件使用keep-alive和infinite-scroll导致在子组件触发父组件的infinite-scroll方法

    (vue.js)vue 父组件使用keep-alive和infinite-scroll导致在子组件触发父组件的infinite-scroll方法”问题疑问,本网通过在网上对“ (vue.js)vue ...

  7. 设计模式-Interpreter(行为模式) 使用解释器给用户提供一个一门定义语言的语法表示的解释器,通过该解释器解释语言中的句子。

    //以下代码来源: 设计模式精解-GoF 23种设计模式解析附C++实现源码 //Context.h #pragma once class Context { public: Context(); ~ ...

  8. 对js库的调研研究------引用

    1. 引言 从以下几个方面来阐述这个问题: 特性. 稳定性. 性能. 包生态. 社区. 学习曲线. 文档. 工具. 发展历史. 团队. 兼容性. 趋势. 2.概述 & 精读 特性 当你调研一个 ...

  9. Proxy Class(代理类)

    在使用二维数组时,我们可以使用a[][]来访问数组中的元素,这很显然是正确的也无需证明. 但如果要自己实现一个二维数组的时候,会发现如果想要重载符号[][],会被告知没有这个符号,这即引出了C++ o ...

  10. ASP.NET MVC Ajax下载文件(使用NPOI向现有的excel模板文件里面添加数据)

    View Html.DevExpress().Button(DevExpressButtonHelper.AddButton(ViewBag.Form, "Export", &qu ...