各位小白,请允许我这样称呼你哦,因为本人所写的系列文章确实是给初学者看的。今天我们聊聊程序结构及语言特色。
当我们打开Delphi新建一个Windows程序时,Delphi会弹出一个窗口,我们改名为Form_main,保存时,假如我们命名为main(此名称不能和窗口的名称相同)单元,会给我们建立相应的两个文件:main.dfm和main.pas。前者是Delphi是保存窗口属性以及以后放在窗口中的控件的各种属性的文件,为二进制文件,不可编辑。后者才是存储我们的程序代码的文件。也就是说,一个窗口会对应两个文件。一般说来,一个窗口也是一个基本的模块,所以一个模块就应该两个文件。在IDE编程环境中,用F12键可以切换代码编程窗口和图形编程窗口。
在流行的可视化,也就是图形编程模式下,一般我们编程,都是先想好功能,然后设计好图形界面,最后后再编程实现各个按钮的功能。
在前期,我们做过一个例子程序,现在打开它,然后按F12键进入代码窗口,就可以看到Delphi的一个窗口的代码程序结构:
unit main;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
Tfrm_main = class(TForm)
bt_test: TButton;
procedure bt_testClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frm_main: Tfrm_main;
implementation
{$R *.dfm}
procedure Tfrm_main.bt_testClick(Sender: TObject);
begin
showmessage(inttostr(frm_main.Width));
end;
end.
从上到下依次说:
1、关键字unit 后面就是本单元的名称。这里不能手工修改的,在右上角的工程里可以修改。新版本才有。Delphi7以前是不可以修改的。
2、接着是interface,表示接口,如果定义了接口,也许是放在这里吧,本人没有用过,所以这里从来没有见过有什么变化。
3、uses区,是本单元要引用到的其它单元文件,这里很重要,以后我们要用到其它单元的函数过程,必须把该单元的名称放在这里。
4、type区,直到第一个end;结束,这里定义了我们的窗口类,Tfrm_main = class(TForm)表示我们窗口的类是一个从TForm继承下来的类,类名叫Tfrm_main,bt_test: TButton;表示其中有一个按钮成员bt_test,是TButton类型。procedure bt_testClick(Sender: TObject);则是该按钮的响应Click(单击)的事件的申明。
5、private区是窗口类的私有申明区,public是公有申明区。位于私有区的申明的函数过程只有本单元可以访问。
6、var区是本单元的公有变量申明区,记住这和前面的public区不同,位于public区的变量必须在窗口对象建立和才能访问,而var区则不是,只要引用了该单元,就可以访问,所以也叫全局变量区。本例子中,只申明了frm_main的变量,类型就是前面定义的Tfrm_main。
7、implementation区,{$R *.dfm}为编译提示,暂时不用管。
8、函数过程代码区。本例只有一个过程:
procedure Tfrm_main.bt_testClick(Sender: TObject);
begin
showmessage(inttostr(frm_main.Width));
end;
这就是前面按钮申明的bt_testClick的实现方式,记住这里的事件前面加了类名Tfrm_main,表明它是一个窗口类的成员函数。为了说明局部变量,我改了一下本函数为如下:
procedure Tfrm_main.bt_testClick(Sender: TObject);
var
s:string;
begin
s:='您好';
showmessage(s inttostr(frm_main.Width));
end;
这里的var区里定义的变量和前面的不同,是局部变量,只有本函数或者过程才能访问。
大家看这里不难看出,Delphi的函数或者过程是以begin开头,end;结束,一块一块的。
之所以为初学者仔细讲解程序结构,是为了以后的方便编程。后面我们的代码申明在哪里,是有讲究的。
frm_main.Width是访问窗口的宽度属性,大家也看到,frm_main是对象名称,不是类名,然后跟着一个圆点,然后是属性名称,就可以了,这非常方便,看起来很自然,大家和C 那种->符号对比一下,就觉得其好简洁。所以说,Delphi编程语言最大的特色就是简洁易懂,没有C 那种 =和= 这样容易搞昏头的写法。说到这,还没有讲到这语言是什么啊,就是Pascal语言,“Delphi这个名字源于古希腊的城市名。它集中了第三代语言的优点。以Object Pascal为基础,扩充了面向对象的能力,并且完美地结合了可视化的开发手段。
(1)Pascal语言结构严谨,可以很好地培养一个人的编程思想。
(2)Delphi是一门真正的面向对象的开发工具,并且是完全的可视化。
(3)Delphi使用了真编译,可以让你的代码编译成为可执行的文件,而且编译速度非常快。
(4)Delphi具有强大的数据库开发能力,可以让你轻松地开发数据库。”来自于百度。
而现在的程序,哪个不需要用到数据库做信息存储查询呢?所以,大家要想做程序,Delphi是上手最快 ,编程最快的。
说到这里,了解一点面向对象的知识就知道,程序只定义了窗口类,并没有生成窗口对象的frm_main的语句啊,怎么程序就可以访问其属性了呢?大家右击一下位于右上解工程窗口里的test1.exe,在弹出的窗口里点一下最下边的Options菜单,就打开工程属性窗口:
再点Application下面的Forms菜单,右边就会出现Forms页,其中Main_form下拉框是定义本程序的启动窗口,如果有多个窗口,这里可以选择其它。
下面的左边Auto_create forms表示Delphi自动生成的窗口,大家可以看到有frm_main窗口,说明是我们之所以能访问,是因为Delphi已经帮我们生成了。那么,如果系统有几十个窗口呢?如果都由Delphi自动生成,那么程序启动就很慢,也占用了很多系统资源,也没有那个必要,最合适的是由程序自己在调用的时候才生成。那这样方式我们读如何做呢?
请听下回分解吧?
,