Delphi教程清华大学出版社课程介绍§ Delphi是著名的Borland公司开发的 可视化软件开发环境,自1995年问 世以来,带来了程序设计中的一场 重大变化Delphi作为第四代编程 语言,具有简单、高效和功能强大 等特点,这些特点使得它为广大程 序开发者所青睐 第1章 Delphi基础知识1.1 Delphi简介Delphi作为一种可视化的编程环境, 经历了7代产品的发展历程: ◆ Borland公司在1995年推出了基于 Windows平台的Delphi 1 ◆ Delphi 2新增加的主要功能是对32位 编程的支持还增加了如数据模块等多 种高效的数据重用功能 ◆Delphi 3对其组件库进行增强 ,完全支持 ActiveX组件及其创建 ◆Delphi 4提供了Object Pascal语言的扩展 , 但系统稳定性较差 ◆1999年推出Delphi 5增强了数据库的功能 ◆2001年6月推出Delphi 6 ,增加了大量的新 组件,使组件数目达350多个,以满足网络 开发的需要 ◆2002年8月推出 Delphi 7 ,在集成开发环 境IDE、Web、数据库、编译器、模型生成 支持及组件库等很多方面进行了改进 1.2 Delphi7 IDE 1.2.1 认识集成开发环境Delphi 7的IDE主要包括7个部分:主窗 口、组件面板、工具栏、窗体设计器、代码 编辑器、对象观察器和代码浏览器。
图1-1 Delphi 7的 IDE1.主窗口主要包括:菜单栏、工具栏、标题栏和组 件面板Delphi7的主菜单包括11个下拉菜单注意:工具栏上的按钮都提供了描述该按 钮功能的tooltip,除了组件面板IDE有6个 独立的工具栏 IDE工具栏的定制功能并不仅限于配置 需要显示的按钮,还可以调整工具栏、组 件面板和菜单栏在主窗口中的位置 图1-2 Delphi 7的主窗图口Delphi7组件板包含了350多个组件,是 Delphi可视化编程的核心部件,它由27个选 项卡组成 组件面板如图1-4所示包含了IDE中安装的所有的VCL组件和 ActiveX组件将组件板上的组件添加到窗体上的三种方法 : ①单击组件板上的所需组件的按钮,然后在窗 体适当位置拖动鼠标画出组件,即可将组件 添加到窗体的指定位置上 图1-4 Delphi 7的组件面板②双击组件板上的所需组件的按钮,即可将 组件添加到窗体的中心位置 ③按下键不放,单击组件板上的所需 组件的按钮,所选组件出现蓝色边框,同时 对象选择按钮将弹起 组件板中的组件分为可视组件与非可视组件 2.窗体设计器在创建新的项目时,窗体设计器是一个 空白的窗口。
可以用鼠标调整组件在窗体设 计器上的位置和大小,还可以用对象观察器 和代码编辑器来控制组件的外观和行为 3.对象观察器利用对象观察器,可以修改窗体或组件 的属性,或者使它们能够响应不同的事件 属性(Property)是一些数据,如高度、颜 色、字体等,它们决定了组件在屏幕上的外 观事件(Event)则是一种消息处理机制, 它能够捕捉某种情况的发生并做出反应,像 鼠标单击和窗口打开就是两种典型的事件 对象观察器类包括Properties选项卡和 Events选项卡 下图两个对象观察器,左边一个按种类排序 ,右边一个按名字排序注意:帮助系统是和对象观察器紧密结合在 一起的,想了解某个属性或事件的帮助信息 ,只要在该属性或事件上按下F1 键图1-5 按种类或名称查看Object Inspector4.代码编辑器 代码编辑器是输入代码来指定应用程序 行为的地方,也是Delphi根据应用程序中的 组件自动生成代码的地方当向应用程序 中加入一个窗体时,Delphi会自动创建一个 新的单元,并添加到代码编辑器顶部的标 签中 5.代码浏览器以一种树状视图方式显示列在代码编辑 器中的单元文件通过它,可以方便地在 单元文件中漫游或在单元文件中加入新的 元素或者把已有的文件改名。
要记住代码 浏览器和代码编辑器有一对一的关系 6.源代码生成器当对窗体设计器中可视化组件进行操作时 Delphi IDE自动生成Object Pascal源代码当用【File】|【New】|【Application】菜单 命令创建一个新的项目时,将看到屏幕上出 现一个空白的窗体设计器,同时,代码编辑 器中会自动出现一些代码,如下所示: unit Unit1; interface usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs;typeTForm1 = class(TForm)private{ Private declarations }public{ Public declarations }end; varForm1: TForm1; implementation {$R *.dfm} end.从上述源代码清单中可以看出,窗体对 象是从TForm继承下来的下面这一行非常重要:{$R*.dfm} Pascal语言中的$R指令用于加载一个外 部资源文件dfm文件中包含在窗体设计 器中创建的表单的二进制代码。
其中的“*” 表示与当前单元文件同名的文件 项目文件的扩展名是.dpr 可以选择主菜单下的【Project】|【View Source】命令把项目源文件调入代码编辑 器 如下用程序示例的项目文件: program Project1; usesForms,Unit1 in 'Unit1.pas' {Form1}; {$R *.res} beginApplication.Initialize;Application.CreateForm(TForm1, Form1);Application.Run; end. 当添加表单和单元时将出现在uses子句中 1.2.2 基于组件的编程思想Ⅰ.早期DOS操作系统和C语言主导的时 代,“数据结构+算法”成为构建软件惟一方式 Ⅱ.C++语言和面向对象技术Ⅲ. 20世纪90年代中期流行一种崭新的 程序设计概念 :软件可以由可互换的组件构 成 组件是一种通过公开的属性、方法、事 件,是可以重复使用的一种经过编译的二进 制文件,其文件名可以是.OCX或者是.dll, 如命令按钮、复选框、单选框、滚动条等都 是常见的组件 1.2.3 Delphi 7的特点Delphi最显著的特点就是高效性和稳定性 ,主要体现在以下4个方面: ●可视化开发环境的性能。
●编译器的速度和已编译代码的效率 ●编程语言的功能及其复杂性 ●丰富的VCL 1.可视化开发环境可视化开发环境通常可分为3个部分:编 辑器、调试窗口和窗体设计器 2.编译器的速度和已编译代码的效率Pascal编译器最著名特点就是速度快, 而Delphi正是建立在这种编译器基础之上的 增加了链接和各种缓存策略,尤其是 在Visual C++和C++ Builder中 3.编程语言的功能及其复杂性汇编是一种最有力的语言,即便是用汇编 开发最简单的应用程序,难度也非常大, 还可能一无所获 4.丰富的VCLVCL是Delphi7最重要的组成部分,包含 不同种类的组件 1.2.4 帮助的使用 (1)当遇到问题时,可以尝试按下【F1】键 ,一般情况下Delphi都会准确地定位2)如果需要浏览系统的一些帮助内容,比 如说对象Pascal语言,可以通过菜单【Help 】|【Delphi Help】命令打开【帮助主题: Delphi Help】对话框,在目录标签中展开相 关条目,进行系统学习 3)当使用Windows API函数时,通过【Help 】|【Delphi Help】打开的【帮助主题: Delphi Help】对话框中,在【索引】选项卡 中可能查不到有关的帮助信息,有两种解决 办法: 一种办法是在代码编辑器中输入Windows API函数的名称,然后将光标定位到该名称 中,接着按下【F1】键。
另一种办法是通过【Help】|【Windows SDK】打开帮助文件Win32.hlp,在【索引 】选项卡中查找 (4)帮助文件打开时,要浏览相关内容,可 以按下工具栏中的【>>】或【=;…=; 其中Const是保留字,表示常量定义段开始 注意: ●保留字Const可单独一行也可与常量一行 ●不能在程序中给常量另行赋值,否则将导致 语法错误 ●Delphi由常量值判断常量名属于哪种类型 (2)类型常量类型常量用于保存数组、记录、过程以 及指针等类型的值,不能出现在常量表达式 中在默认的编译器状态下,类型常量的值 可改变,但当在程序中加入编译命令{$j-}时 ,则类型常量的值在运行期就无法改变 声明类型常量的语法规则为: Const:=;其中类型是除文件型和可变型的所有类型 ,常量值可以是和类型相应的常量表达式2.3.2 变量 1.变量的声明变量在单元、函数或过程的声明部分进 行声明,声明的位置决定了变量的作用域 声明包括两部分:变量名和它所属的类型, 变量声明的语法格式为:Var:; … :; 当多个变量具有相同数据类型时,格式如下 : Var ,,…:; 其中,Var是保留字,表示变量声明段的开始 ;同类型的可超过一个,间用“,”分隔;可以是基本数据类 型或是由用户定义的高级数据类型; 2.变量的使用一旦声明了一个变量应及时对它进行初始 化,最简单方法就是给变量赋值,在表达式 中使用变量。
2.4 运算符与表达式按照操作数数目的多少来分,运算符分 为下面两类:单目运算符和双目运算符单 目运算符一般放在操作对象的前面,双目运 算符都放在两个操作数之间表达式是表示某个求值规则的运算公式 ,由运算符和配对的圆括号将常量、变量、 函数、对象等操作数以合理的形式组合而成 2.4.1 算术运算符与算术表达式 1.算术运算符算术运算符对浮点数和整数进行加、减 、乘、除和取模运算,取正“+”和取负“-”是 单目运算符,其他均为双目运算符 § 说明: (1)+、-、*运算中,参加运算的数可以是整型 和实型,结果自动向精度高的类型转化 (2)参加除法运算“/”,结果都是实型的商 (3)参加整数除法“Div”和求余运算“Mod”的数 必须是整型,结果也是整型数,符号与被除 数的符号相同,小数部分被舍去 (4)在表达式a/b、a Div b和a Mod b中,如果b 的值为0,将会触发一个错误 2.算术运算符的优先级 同级运算自左至右,如果含有括号,则 先计算括号内表达式的值 3.算术表达式 将数学式改写为算术表达式,考虑三个 问题:一是语法,二是优先级,三是类型 优优先顺顺序 运算符 1+、-(取正、取负) 2*、/(法、除法) 3Div、Mod(整除、求余 ) 4+、—(加法、减法) § 说明: (1)数学式中省略的运算符和表示函数参数的 括号必须添加上去 (2)必须注意优先级的处理 ,恰当利用标准函 数 ,注意数据类型。
2.4.2 逻辑运算符与布尔表达式逻辑运算符可分为布尔运算符、位运算 符和关系运算符 1.布尔运算符只能对两个布尔型操作数进行运算,结 果仍为布尔型,True或False其中,NOT是求“非”,为一元运算符 ; AND是求“与”,OR是求“或”,XOR是求“异或” ,均为二元运算符 2.位运算符运算符 操作举举例操作数类类型 结结果类类 型 功能说说明 NOT NOT x integer integer 即按二进制形式将每位求反AND a AND b integer integer 将两者相对应 的位进行AND运算 OR a OR b integer integer 将两者相对应 的位进行OR运算XOR a XOR b integer integer 将两者。