本章要点:
Delphi简介
Delphi 7.0开发环境
应用程序开发过程
应用程序的组成第 1章 Delphi概述
1.1 Delphi简介
Delphi的发展历史;
Delphi的特点;
面向对象编程的基本知识;
Windows编程的基本知识。
Delphi是一种方便、快捷的 Windows应用程序开发工具,为程序员提供了全新的可视化编程环境。本节主要介绍以下几方面的内容:
1.1.1 Delphi的发展史随着 Windows操作系统的推出,为了解决 Windows编程存在的问题,
Inprise公司(原 Borland公司)开发了可视化的软件开发工具 ——
Delphi,至今已经历了七代产品的发展历程。
Delphi 1 几乎与 Windows 95 同时发行。 Delphi 1可以看做是
Turbo Pascal 的 Windows版,它为使用 Pascal语言的用户提供了一个可视化的编程环 境。但仍然属于 16位的开发环境。
Delphi 2 支持 32位编程,并且增加了数据模块等多种高效的数据重用功 能。
Delphi 3 改进了集成开发环境,对组件库进行了许多增强,完全支持
ActiveX控 件及其创建,它是一个比较成熟的版本,受到了广泛 好评,大大巩固 Delphi作为 Windows应用程序开发工具的地位。
Delphi 4,Delphi 5,Delphi 6不断改进以前版本的不足,增加新的功能,
对开 发环境也不断改进和完善,特别是不断增加新组件,以适于网络开发的需要。
Delphi 7 又在以前的基础上进行了加强,是目前的最新版本。
1.1.2 Delphi的特点
“真正的程序员用 C,聪明的程序员用 Delphi。”这句话是对
Delphi最经典、最恰当的描述。 Delphi具有简单、高效、功能强大的特点。和 Visual C++相比,Delphi更简单、更易于掌握,而在功能上却毫不逊色;和 Visual Basic 相比,Delphi功能更加强大,更加实用。
同时具备了 Visual C++功能强大和 Visual Basic简单易学的特点。
最先进的编程思想:面向对象的程序设计,简称为 OOP
Delphi提供了大量的可视化组件,可视化编程功能强
Delphi采用了最为领先的数据库技术主要特点,
1.1.3 用 Delphi进行 Windows程序设计的基本概念
Delphi的编程思想与以前传统的面向过程的编程思想有很大的不同,
而在 Windows操作系统下的程序设计又与 DOS下的程序设计有很大的不同
1,程序设计语言的发展
2,面向对象程序设计方法的基本概念
3,Windows程序设计基本知识
4,Delphi可视化编程基本知识主要有以下内容,
1.1.4 Delphi 7.0新特性按照 Inprise惯例,Delphi每年都会推出一个新版本。 Delphi 7.0是目前最高版本,进一步提高了自身性能和操作性。
Delphi 7.0在以下几个方面进行了加强,
1,集成开发环境方面
2,Web方面
3,数据库方面
4,可视组件库及运行库方面
1.2 Delphi 7.0的开发环境
Delphi 7.0的集成开发环境 IDE是用于进行设计、运行和测试程序的工作系统。 Delphi 7.0运行后可以见到它的开发环境如图 1-1所示代码编辑器窗口窗体设计器窗口组件板快捷按钮栏对象树形图对象监视器窗口主要包括以下几个窗口,主窗口; 对象树形图、对象监视器窗口;
窗体设计器窗口、代码编辑器窗口。
(图 1-1 Delphi 7.0开发环境 )
1.2.1 Delphi 7.0主窗口
Delphi 7.0的主窗口位于屏幕的上端,包括 Menu(菜单 )、快捷按钮栏和 Component Panel(组件板 )。 Delphi 7.0的主窗口如图 1-2所示。
(图 1-2)
主窗口各部分的详细说明请参见本教程 (P7~P9)
1.2.2 对象树形图及对象监视器窗口对象树形图窗口( Object TreeView)用树形表方式列出了项目中所有的对象,即窗口、组件、菜单等,并清楚地表明了它们之间的关系。对象树形窗口如图 1-4所示。
在对象树形图窗口下方是对象监视器窗口( Object Inspector),
对象监视器窗口含有两个页卡:属性页卡( Properties),显示窗体中当前被选择部件的属性信息,并允许改变对象的属性;事件页卡
( Events),列出了当前部件可以响应的事件。对象监视器窗口如图
1-5所示。
图 1-4 对象树形图窗图 1-5 对象监视器窗
1.2.3 窗体设计器及代码编辑器 (1)
窗体设计器用于设计程序时用到的窗体外观。窗体界面外观设计可在组件板中选择适当的组件,并将它设置在窗体中。其后的工作主要是设置窗体及组件的属性。窗体设计器窗口如图 1-6所示。
Forms窗口是开展大部分设计的工作区域。首次启动 Delphi时显示的是窗体 Form1。可以把一些组件放在窗体中,
通过移动位置、改变尺寸等操作随心所欲地安排它们,以此来开发应用程序的用户界面。
对象树形图窗口与对象观察器窗口、
窗体设计器窗口同步,即在此三个工具的任何一个中改变焦点时,另外两个工具的焦点也会发生变化。
( 图 1-6 窗体设计器窗口 )
1.2.3 窗体设计器及代码编辑器 (2)
可从对象监视器中选择某事件,双击后进入代码编辑器。也可在窗体中直接双击某对象进入代码编辑器,通过这种方法进入代码编码器时,光标会自动定位在相应的事件处理过程中。
启动 Delphi或执行 New
Form菜单项时,系统即生成一个新的窗体,并在代码编辑器中产生一个新页卡,在新页卡中可以编辑相应的单元代码。
按 F12可以在窗体设计器窗口和代码编辑器窗口之间转换。
(图 1-7 代码编辑器窗口 )
1.2.3 窗体设计器及代码编辑器 (3)
为了减轻编写代码的工作量,Delphi 7.0除了提供一般的编辑功能外,还提供了以下功能。
(图 1-8 代码完善功能 )
1,·代码完善功能 类成员自动提示:
在代码编辑器中输入某个类变量及其后的,.”号后,系统会自动列出相应的类方法、属性名称等,以供程序员选择设置,选择后 Enter键即可完成输入。如图 1-8所示。
2.参数自动提示功能 当调用某一种方法时,只要输入方法名及其后的左括号,系统就会自动提示该方法的参数类别以及参数个数,
程序员可根据这种提示填写参数,这样既为程序员提供了方便,又保证了参数的正确性,如图 1-9所示。
(图 1-9 参数自动提示功能 )
1.2.3 窗体设计器及代码编辑器 (4)
(图 1-10 代码模板功能 )
(图 1-11 符号洞察功能 )
3,·代码模板功能 用于提供语句模板以帮助代码的编写,例如:输入,if”,
按组合键 Ctrl+J,系统自动弹出有关,if”语句的代码模板供程序员选用,如图 1-10所示。
4.符号洞察功能 程序员在代码编辑过程或程序调试过程中,将鼠标置于一个标识符上,稍做停顿系统将自动弹出一个提示框,提示框中显示该标识符的类型、
所属单元、声明位置等信息,如图 1-11所示。
1.3 设计第一个 Delphi 7.0程序本节要创建一个简单的应用程序。启动 Delphi7.0程序,出现一个窗口,
窗体标题栏中显示,Delphi7.0程序”字样,在窗体中有一个“显示”按钮,
单击该按钮显示一行文字“第一个 Delphi 7.0程序”。单击窗体右上方关闭按钮时退出程序。通过设计一个简单的应用程序。
掌握以下内容:
应用程序开发过程;
常用开发工具及功能;
应用程序组成;
应用程序编译及执行。
在 Delphi7.0中开发的每个应用程序都被称为工程。 Delphi 7.0编程首先从创建一个新工程开始。创建新工程有以下两种方法:
1.3.1 新建应用程序工程新创建的工程中包含一个默认窗体( Form1)和它对应的单元
( Unit1),根据工程的需要可添加窗体或单元。
工程文件的扩展名为,dpr。打开一个已建立的工程的方法是:单击 File
菜单,指向 Open Project,然后选择工程文件即可。
启动 Delphi 7.0进入开发环境,此时系统自动生成一个工程,默认名为 Project1;
选择 File菜单,指向 New,然后单击 Application系统将创建一个新的工程。
1.3.2 设计窗体和组件的属性 (1)
程序设计首先是窗体设计。因此第一项工作就是在窗体设计器完成窗体设计,在窗体中添加各种所需对象进行界面设计。将组件板上的组件添加到窗体上有三种方法。
( 1)单击组件板上所需组件的按钮,然后在窗体适当位置拖动鼠标画出组件,即可将组件添加到窗体指定位置。
( 2)双击组件板上所需组件的按钮,即可将组件添加到窗体中心位置。
( 3)按下 Shift键不放,单击组件板上所需组件的按钮,所选择组件出现蓝色边框,同时对象选择按钮弹起。可以在窗体适当位置连续画出该类组件,用鼠标单击对象选择按钮,可以取消该类组件的连续添加操作。
本程序中要用到两个组件,一个是标签( Label)组件用于显示文字,另一个是按钮( Button)组件用于控制文字的显示。
新建一个工程,从组件板的 Standard页卡中选择一个标签组件和一个按钮组件,放置在窗体 Form1上,Delphi 7.0分别将它们自动命名为 Label1,
Button1。
1.3.2 设计窗体和组件的属性 (2)
刚添加到窗体中的组件,其边框上有八个黑色小方块,表明它是当前被选定的组件。
可以用鼠标拖拉边框上黑色小方块使组件在相应方向上放大或缩小,也可用鼠标指向组件内部,按下鼠标左键并拖动鼠标到窗体的任意位置。按组合键 Ctrl+C可以对所选组件进行复制,Ctrl+V可以在窗体中进行粘贴,按 Delete键可以删除所选组件
1,移动组件把鼠标移到想移动的组件上,按住左键并移动光标,到合适的位置再释放左键,整个组件即被移到新位置。
2,调整尺寸把鼠标移动到要改变尺寸的组件上,单击左键选中该组件。尺寸调整器出现后,把鼠标移动到其中的一个小黑色方块上,当鼠标变成拖动方向指示时,按下并拖动鼠标左键,可以放大或缩小组件。上下左右的小方块用来移动对应的各边,四个角的方块可以移动相连的两条边。如果要精确地表述部件的尺寸,可以在 Object Inspector上,改变 Left(表示部件左边缘到窗体左边框的像素点数),Top(表示窗体上边框到部件上边缘的像素点数),Width(部件本身的宽度),Height(部件本身的高度)等属性。
1.3.2 设计窗体和组件的属性 (3)
3,组件对齐用调整位置的方法可以对齐组件,但操作步骤复杂。 Delphi 7.0提供的对齐工具可以使多个组件的对齐极为迅速方便。
按下 Shift键,用鼠标单击所要选择的组件,可实现多重选定;或者用鼠标在窗体上拉出一个矩形,凡是与此矩形相交的组件均被选定。选定多个组件后可以进行所需的对齐操作。被选中的按钮周边会出现暗灰色的边框,选用 Edit菜单,单击 Align命令,或单击鼠标右键激活弹出式菜单选择
Position指向 Align,可以显示图 1-12所示的对话框。
利用对齐模板来对齐组件也是很方便的,首先将要对齐的组件选成一组,选择 View菜单指向 Alignment Palette显示对齐模板,如图 1-13所示。按照所示的方式选择即可达到对齐的目的。
(图 1-13 对齐模板 )
( 图 1-12 对齐对话框 )
1.3.2 设计窗体和组件的属性 (4)
4,锁定组件如果部件已经对齐,为防止不小心移动组件,可以将部件位置锁定。
选择 Edit菜单,指向 Lock Controls选项,使得组件不能进行移动操作。解锁只需再次选择此项即可。设计界面还包括对组件名称、标题、风格等属性的设置,这些设置必须在对象观察器的属性选项卡中进行。本例中要进行如下设置
首先设置窗体 Form1的属性。单击窗体的空白区域,看到对象观察器的对象下拉列表框中显示的是,Form1 Tform1”。从属性名中找到标题属性( Caption)一项,将其值改为,Delphi程序”。
为了使窗体变得美观合适,更改高度属性( Height)值为 220,宽度属性( Width)值为 350。
1.3.2 设计窗体和组件的属性 (5)
选择标签 Label1,修改其标题属性值为“第一个 Delphi 1 7.0程序”。为了使文字醒目,修改它的字体属性( Font),单击字体属性右边的按钮,...”,从弹出的对话框中设置相应的字体,如图 1-14所示,将它字体设为“楷体 _GB2312”,
字形设为“粗体”,大小设为“一号”,并更改高度属性( Height)值为 35,宽度属性( Width)
值为 300。
要实现刚开始时文字不可见,在单击时显示文字,本例将标签 Label1的可见属性( Visible)设为,False”。
设置按钮 Button1的标题属性为“显示”。并将显示按钮和标签拖动到适当位置。
(图 1-14
设置字体 )
1.3.3 编写事件处理程序为了使“显示”按钮能够在执行时响应鼠标的单击操作,须在按钮的单击事件
( OnClick)中设置事件处理程序。程序员没有必要对所有的事件都编写事件处理程序,
只需对程序所涉及的事件进行编写事件处理程序,本例中要对按钮的单击事件编写事件处理程序。
选择 Button1 对象,在对象监视器中选择“事件”选项卡,在事件选项卡中选择
OnClick事件,双击事件处理栏,Delphi自动生成该事件过程的代码框架,同时打开代码编辑窗口,将光标定位在代码框架过程体的首行处,在过程体中加入如下代码:
label1.visible:=true; 如图 1-15所示。
(图 1-15 编写事件处理程序 )
输入完毕可以看到按钮 Button1的鼠标单击事件处理程序的全部内容是:
procedure
TForm1.Button1Click(Sender,
TObject);
begin
Label1.Visible:=True;
end;
end.
1.3.4 保存工程设计好的应用程序在运行前应当先保存起来,避免文件因发生意外而丢失。保存文件的方法有:
( 1)单击菜单 File,Save All;
( 2)单击工具栏上的 Save All按钮;
( 3)使用快捷键 Ctrl+Shift+S。
单击工具栏上的 Save All按钮,弹出一个保存单元文件对话框,在上面的保存目录下拉框中选择 Sample目录,文件名默认是 Unit1.pas,将它改为 Main.pas,单击保存按钮。接着弹出一个保存工程文件对话框,文件名默认是 Project1.dpr,将它改为
Sample.dpr,单击保存按钮,此时应用工程被保存在 Sample目录下。保存工程时单元文件名不要和工程文件名相同。作为一个实际的应用程序,应当将这些默认的文件名更改为更有意义,不易混淆的文件名。当项目包含的文件较多时这一点就显得更加重要,如果文件名指定不当会出现意想不到的麻烦。一般不要在 Delphi 7.0系统外更改项目所用文件的文件名。
打开 Sample目录可以发现有六个文件,分别是 Main.dfm,Main.pas,Sample.cfg、
Sample.dof,Sample.dpr,Sample.res。应当注意,一个应用程序并不是只由一个文件组成,而是由许多不同类型的文件组成的。
1.3.5 编译执行可选择 Project/Compile 菜单项对项目中的文件进行编译。如果语法有错,则根据提示的错误信息修改后再编译,直到编译无错误时,选用菜单项中的 Run/Run菜单转入运行。
也可两步合为一步,直接选用菜单项中的 Run/Run菜单(或按 F9热键)
系统直接进行程序的编译与运行。
(图 1-16 执行程序 )
程序运行结果如图 1-16所示,当出现一个名为 Delphi 7.0程序的窗口,
单击窗口上的显示按钮,显示一行文字“第一个 Delphi 7.0程序”,单击窗体右上方关闭按钮时退出程序。
在程序中除了语法错误,还有可能在程序运行中出现错误,这就要涉及到程序的调试。 Delphi 7.0为程序员提供了方便的程序调试手段。
1.4 Delphi 7.0程序的组成在前一节中,编写了一个简单程序来实现显示一个标签,并把程序储存在了 Sample目录下,观察该目录可以发现,一个简单的 Delphi 7.0程序是由多个文件组成的。其中包括以下几种文件。
工程文件 (.Dpr),Delphi 7.0工程文件,用于保存窗体、单元等的信息,以及程序运行的初始化代码等,这种文件实际上包含了 Pascal源代码。
单元文件 (.Pas),Pascal文件,用于保存程序源代码,可以是与窗体有关的单元或是独立的单元。
窗体文件 (.Dfm):保存窗体或数据模块及其构件特性的二进制文件。
选项文件 (.Dof):含有当前项目选项设置的文本文件。
配置文件 (.Cfg):含有当前项目编译配置的文本文件。
资源文件 (.res):该二进制文件包含项目的图标,由 Delphi 7.0不断更新和创建,用户一般不需要修改。
备份文件 (.~dp,.~df,.~pa):分别对应工程、窗体、单元文件的备份文件。
1.4.1 程序的基本组成 (1)
最重要的与程序设计紧密相关的文件有三类:工程文件,窗体文件,单元文件。
1,工程文件工程文件扩展名为,dpr。是整个应用程序的主程序,有两项功能:
一是说明工程中的单元模块,二是启动应用程序。工程文件由
Delphi 7.0自动生成,一般情况下不修改这个文件。
单击 Project选择 View Source,可以在代码编辑器中打开
Sample.dpr,进行查看和修改。
program Sample; //保留字 program说明这是一个工程文件
//文件名为 sample.dpr
uses //保留字 uses对工程所引用的单元进行说明
Forms,//引用 Forms单元
main in 'main.pas' {MainForm};
//引用 main单元,在当前目录的 main.pas文件中,相应的窗体为 MainForm
{$R *.res} //系统编译命令,将扩展名为,res的二进制资源文件连接到,exe文件中去
begin //工程执行部分的开始声明
Application.Initialize; //应用程序的初始化
Application.CreateForm(TMainForm,MainForm); //创建窗体 MainForm
Application.Run; //运行程序
end,//工程执行部分的结束说明
1.4.1 程序的基本组成 (2)
2,窗体文件窗体文件的扩展名是,dfm。一个或多个窗体文件,它们含有相应的单元文件。这些文件包含了窗体上组件的属性设置。这样的文件是用户在设计界面的时候由 Delphi 7.0自动生成的,而且不能编辑。在
Delphi 7.0中,一个应用程序至少需要一个窗体。
用鼠标单击窗体,在快捷菜单选择 View as text即可在代码编辑器中看到以文本形式表示的窗体文件的内容,工程 Sample中的 Mainform窗体文件的文本形式。 (代码省略,详见本教程 P18~P19)
3,单元文件单元文件的扩展名为,pas,是在代码编辑器中编写过的过程代码文件。在
Delphi 7.0中每个窗体都有一个单元文件与之相对应,窗体的单元文件包含了程序部分,用以控制窗体的行为。在一个工程中,还可以建立与窗体无关的单元文件,用来编写工程中公用的函数、过程或定义新的数据。许多工程还调用了 Delphi 7.0附加库或其单元文件中的过程或函数。 uses子句中包含的标准单元文件包含了支持可视窗体及其控制的对象声明。这些单元也包含了用于激活窗体的事件处理过程程序。 (代码省略,详见本教程 P19~P20)
1.4.2 Object Pascal的单元 (1)
单元是常量、变量、数据类型、过程与函数的集合,而且能够被多个应用程序所共享。 Delphi 7.0内部包含了多个程序单元,它们说明了对象、组件、常用过程与函数以供程序员在设计应用程序时使用。例如,当在窗体中加入一个
CheckBox组件时,Delphi 7.0自动在引用单元说明部分中加入了 Stdctrls单元,
因为 CheckBox组件是在 StdCtrls单元中说明的。当设计窗体时,Delphi 7.0会自动建立一个和该窗体有关的单元文件,但并非所有的单元都和窗体有关,程序员可以自行编写只包括过程与函数的单元。
1,程序单元的结构不管一个单元是否和一个窗体有关,单元的结构都是相同的。其结构如下:
unit <单元名称 >
interface
uses <选择性的单元列表 >
{公有说明 }
implementation
uses <选择性的单元列表 >
{私有说明 }
{过程与函数的执行部分 }
initialization
{选择性的初始化程序 }
end
1.4.2 Object Pascal的单元 (2)
2,程序单元的接口部分
Interface是单元的接口部分,它决定了本单元对其他任何单元或程序的可见 (可访问 )部分。可以在接口部分说明变量、常量、数据类型、过程与函数等等。在设计窗体的单元中,将窗体数据类型、窗体变量和事件处理过程都在这一部分说明。
Interface标志单元接口部分的开始。在 Interface中说明的部分对其他单元或应用程序是可见的。一个单元可以使用其他单元的说明,只需要在 uses
语句中指明那些单元即可。例如,在单元 A中编写程序代码,想调用单元 B
中 Interface部分说明的程序。可以把单元 B的名称加入到 A的 Interface部分的 uses子句中,则任何 A中的程序都可以调用 B中说明的程序。但如果 B出现在 A的 Interface部分的 uses子句中,那么单元 A便不能出现在 B的
Interface的 uses子句中。因为这样会产生对单元的循环访问。当试图编译时,会产生出现错误信息。
3,程序单元的实现部分实现部分 Implementation中包含 Interface中说明的过程、函数、事件处理过程的具体实现代码。这一部分可以有自己的额外说明,但这些说明是私有的,外部程序不能调用这些说明。在 Interface中说明的函数实体必须在
1.4.2 Object Pascal的单元 (3)
4,程序单元的初始化部分初始化当前单元所使用的数据,或是通过 Interface部分将数据提供给其他应用程序单元使用时,可以在单元的 end前加入一个 Initialization部分。当一个应用程序使用一个单元时,在单元中的 Initialization部分会先于其他的代码执行。如果一个应用程序使用了多个单元,则每一个单元的初始化部分都会在所有的程序代码前执行。
5,使用 Delphi 7.0的组件及其单元在窗体中加入组件时,如果该组件在组件库中,Delphi 7.0会在单元的
Interface部分的 uses子句中自动加上需要使用的单元名称。但有些对象在
Delphi 7.0的环境中并没有组件存在。例如,想在单元中加入一个预定义的信息框,则必须把 MsgDlg单元加入到 uses子句中。
要使用在其他单元中说明的函数,应在函数的前面加上这一单元的名称,并用‘,’号隔开。例如,要在 Unit2中使用 Unit1中说明的 test函数,应使用下面的
Implementation部分出现,可以使用标题简写:只输入 Procedure或
Function保留字,后面跟过程或函数的名称即可,其后则是程序的实现部分了。
1.4.2 Object Pascal的单元 (4)
6,建立与窗体无关的新单元如果想在工程中建立一个和任何窗体无关的新单元,可以选择 File单击 New Unit。这时一个新的单元加入了工程,新单元的代码如下:
unit Unit2;
interface
implementation
end.
将单元加入工程是比较简单的。无论是自己建立的单元还是 Delphi 7.0建立的与窗体有关方法:
Number,= Unit1.test(x);