XE6入门(二)项目中的文件
XE6中项目文件为DPR,查看方法请参考一下以前写过的博文:
“Delphi项目构成之项目文件DPR”
项目文件DPR
通过主菜单【Project | View Source】,就可以看到缺省的 VCL Forms Application 的项目源代码:
program Project1; {关键字program}
uses {uses单元引用}
Vcl.Forms, //新的单元名称VCL限定
Unit1 in 'Unit1.pas' {Form1};
{Form1窗体单元}
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
//默认已将MainForm显示于任务栏,而不是之前版本的Application
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
单元文件PAS
通过菜单【New | Unit – Delphi】,就可以创建最简单的单元文件,其中的关键字都是必须的,格式如下:
unit Unit2; interface implementation end.
下面这个是内容比较多的单元文件,具体详见代码中的注释:
unit Unit1; interface
(*
interface接口段,声明这个单元的输出标识符,
即能被其他单元访问的项目
以interface开始,implementation结束
*) uses {引用的单元列表,和D7不同是需要加命名空间}
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type
{使用了一个TForm类}
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; TMyArray = array[0..19] of Byte; {声明一个新的类型} const {const关键字用来声明常量}
AppCation = 'Hello World'; var
Form1: TForm1;
X: Integer;
MyArray: TMyArray; {Type区域中声明的新类型} procedure DoSomething; {声明一个DoSomething过程} implementation
(*
执行段以implementation开始,以下一个关键字结束,
下一个关键字通常就是单元的最后关键字end。
但在有初始化的单元中,下一个关键就是initialization关键字。
*) {$R *.dfm}
uses
System.Contnrs; {implementation执行段的单元引用} var
ObjList: TObjectList; Const
BaseX = 20;
BaseY = 200; procedure DoSomething;
begin
{Code for DoSomething goes here.}
end; procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('Hello World');
end;
(*
initialization单元初始化和finalizaiton单元结束
用来执行启动和清理的代码,初始化中的任何代码在其单元载入内存时都要被执行,
结束段中的任何代码在单元从内存中清理前都要被执行。
可以只有一个初始化段,但不能只有结束段,而没有初始化段。
*)
initialization {单元初始化}
ObjList := TObjectList.Create; finalization {单元结束}
FreeAndNil(ObjList);
end.
窗体文件DFM
在XE6中新建一个VCL Forms Application,按 F6 键启动”IDE Insight”,输入”VCL Forms”即可创建完成。
我们通过 Project Manager 就可以看到Unit1.pas下对应着Unit1.dfm。

在Unit1.pas文件中我们还能找到下面的代码:

其中的代码
{$R *.dfm} { 这句话告诉编译器去连接对应的窗体文件,名称与单元文件相同,但扩展名为.dfm}
DFM文件内容是什么呢?我们通过在Form1窗体设计器上点击鼠标右键菜单,选择【View as Text】来进行查看。如下图:

DFM文件其实就是一个文本文件,记录的都是些非缺省属性设置和窗体上的一些组件属性设置,内容如下:
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 329
ClientWidth = 620
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
end
窗体设计中的秘密
1、如果我们在 Form1 上添加一个 Button1 按钮,选中 Button1 按钮后,选择主菜单的【Edit | Cut】剪切,将 Button1 剪切掉,如下图:

2、打开Windows中的记事本,选择粘贴后,实际粘贴的是一个段 Button1 的属性参数,我们仿照 Button1 的格式,增加一个 Button2 按钮,并放置在 Button1 按钮下方,具体参数如下图:

3、将记事本中内容全选后,粘贴在XE6的窗体设计器中,我们成功创建了Button2按钮,如下图:

实际上在DFM文件中也是以TEXT格式记录着所有控件属性值。
XE6入门(二)项目中的文件的更多相关文章
- 对Android项目中的文件夹进行解释
对Android项目中的文件夹进行解释: · src:里面存放的是Activity程序,或者是以后的其他组件,在此文件夹之中建立类的时候一定要注意,包名称不能是一级. · gen:此文件夹中的内容是自 ...
- 如何查看.Net源代码vs版本号以及C#项目中各文件的含义
查看.Net源代码vs版本号以及C#项目中各文件的含义 用记事本打开vs项目的.sln文件. 第2行就是这个源代码包的开发软件vs版本号了 注意了,如果是vs2003的sln文件通常没有这行,可以判断 ...
- (转) eclipse项目中.classpath文件详解
背景:对于java项目中.classpath文件中的相关定义一直不是很了解,有必要进行深入的学习. 1 前言 在使用eclipse或者myeclipse进行Java项目开发的时候,每个project( ...
- MyEclipse项目中的文件点击右键Team选项中没有提交到SVN中的选项是怎么回事
MyEclipse项目中的文件点击右键Team选项中没有提交到SVN中的选项是怎么回事 其实你已经可以百度到很多方法: 例如下面博客提供的 http://www.xuebuyuan.com/95285 ...
- Vue项目中的文件/文件夹命名规范
Vue项目中的文件/文件夹命名规范 0.2262018.09.21 16:01:09字数 820阅读 6979 文件或文件夹的命名遵循以下原则: index.js 或者 index.vue,统一使用小 ...
- maven项目中各文件都没有报错,但是项目名称有红叉
项目报错可以看到Problems(可以在Window--Show View--other--输入Problems找到) 一.可能原因 1.项目中各文件没有报错,但是项目名称中 ...
- 解决项目中.a文件的冲突
.a文件是静态文件,有多个.o文件组合而成的,在ios项目开发中,当引用第三方库的时候,时不时的会碰到诸如库冲突.库包含了某些禁用的API等问题,而这些库往往都被打包成了静态库文件(即 .a文件)来使 ...
- android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件
简介 XStream 是一个开源项目,一套简单实用的类库,用于序列化对象与 XML 对象之间的相互转换. 将 XML 文件内容解析为一个对象或将一个对象序列化为 XML 文件. 1.下载工具 xstr ...
- [js高手之路]gulp教程-从入门到项目中快速上手使用
在这之前,我已经分享过一个webpack的全系列,相对于webpack, gulp使用和配置起来非常的简单. gulp是什么? gulp 是基于 node 实现 Web 前端自动化开发的工具,利用它能 ...
- C 语言项目中.h文件和.c文件的关系
http://blog.csdn.net/xingkong_678/article/details/38639847 关于两者以前的关系,要从N年以前说起了~ long long ago,once a ...
随机推荐
- AES Test vectors
Table of content List of test vectors for AES/ECB encryption mode AES ECB 128-bit encryption mode AE ...
- 【Go命令教程】4. go get
hc@ubt:~$ go get github.com/hyper-carrot/go_lib/logging 命令 go get 可以根据要求和实际情况从互联网上下载或更新指定的代码包及其依赖包,并 ...
- 《Go学习笔记 . 雨痕》类型
一.基本类型 清晰完备的预定义基础类型,使得开发跨平台应用时无须过多考虑符合和长度差异. 类型 长度 默认值 说明 bool 1 false byte 1 0 uint8 int, uint 4, ...
- poll() can't detect event when socket is closed locally?
from https://stackoverflow.com/questions/5039608/poll-cant-detect-event-when-socket-is-closed-locall ...
- MySQL 5.6主从Slave_IO_Running:Connecting/error connecting to master *- retry
刚配置的MySQL主从,在从机上看到 点击(此处)折叠或打开 mysql> SHOW slave STATUS \\G *************************** 1. row ** ...
- 关于UIImageView的显示问题——居中显示或者截取图片的中间部分显示
我们都知道在ios中,每一个UIImageView都有他的frame大小,但是如果图片的大小和这个frame的大小不符合的时候会怎么样呢?在默认情况,图片会被压缩或者拉伸以填满整个区域. 通过查看UI ...
- uitextfield 设置为密码框显示
uitextfield 设置为密码框显示: 在xib中,将文本secure的复选框选中即可.
- 【ELK】【docker】【elasticsearch】2.使用elasticSearch+kibana+logstash+ik分词器+pinyin分词器+繁简体转化分词器 6.5.4 启动 ELK+logstash概念描述
官网地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#docker-cli-run-prod ...
- WordPress基础:get_page_link获取页面地址
函数:get_page_link(页面id编号) 作用:获取指定页面的链接地址 用法: $link = get_page_link(2); 输出为:xxx/?page_id=2 如在循环里则不用填写i ...
- tomcat server.xml maxPostSize=0 导致 果post表单收不到参数解决方案