《Delphi-程序设计教程完整版教学课件全书电子讲义(最新).ppt》由会员分享,可在线阅读,更多相关《Delphi-程序设计教程完整版教学课件全书电子讲义(最新).ppt(199页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Delphi 程序设计教程程序设计教程第1章 初识Delphi 1.1 Delphi简介 1.2 Delphi学习方法1.3 Delphi7的安装1.4 Delphi 7的特点1.5 一个简单的实例工程1.1 Delphi简介1.1.1 Delphi是什么?lBorland公司推出软件开发工具l采用Object Pascal语言作为开发语言l提供几近完美的可视化开发特性l广泛的应用开发功能l强大的数据库支持l高效率的编译器1.1 Delphi简介1.1.2 Delphi的特点 l可定制的开发环境 l真正的面向对象 l组件库 l完全编译 1.2 Delphi学习方法良好的编程习惯l合理的数据结构
2、l代码尽可能重用与模块化l良好的编写风格l注重程序测试,注意异常处理 1.2 Delphi学习方法必要的基本功l逻辑分析和建立数学模型的能力 l数据结构和算法知识 l丰富的实践经验 1.2 Delphi学习方法学习注意事项l事件驱动的编程方法l理解组件的概念并熟练应用l实践真正的程序员用Visual C+,聪明的程序员用Delphi 1.3 Delphi7的安装安装硬件需求 lPentium166以上的个人计算机,推荐Pentinum333以上l32MB以上内存,推荐64M以上lWindows95/98、WindowsNT和更高版本的操作系统lDelphi7的紧凑安装需100MB以上的硬盘空间
3、lVGA或更高分辨率的显示器 极低的配置要求,这就是Delphi1.4 Delphi 7的特点l跨平台的开发环境l大量的Web组件可实现各种网络协议l多种数据库支持l全新的Rave报表l全新的建模工具1.5 一个简单的实例工程新建应用程序设置窗体属性添加组件设置组件的属性与事件响应程序保存程序编译运行procedure TForm1.Button1Click(Sender:Tobject);begin ShowMessage(欢迎使用欢迎使用Delphi 7);end;Delphi 程序设计教程程序设计教程第2章 Object Pascal程序设计2.1 Object Pascal数据类型2.
4、2 运算符与表达式2.3 流程控制2.4 循环2.5 过程与函数2.6 数组2.7 文件2.8 指针类型2.1 Object Pascal数据类型l基本类型整型实型字符型字符串型布尔型l自定义类型类别类型类别类型标识符标识符大小(大小(b y t e)范围范围整型整型Integer2/4-3276832767/-2147483648 2147483647Cardinal2/4065535/02147483647ShortInt 1-128127SmallInt2-3276832767LongInt4-21474836482147483647Byte10255Word2065535实实型型Rea
5、l62.9E-391.7E38,-2.9E-391.7E38Single41.5E-453.4E38,-1.5E-45-3.4E38Double85.0E-3241.7E308,-5.0E-324-1.7E308Extended103.4E-49321.1E4932,-3.4E-4932-1.1E4932Comp8-9.2E189.2E18Currency8-922337203685477.5808 922337203685477.5807布布尔尔型型Boolean1True/FalseByteBool1True/FalseWordBool2True/FalseLongBool4True/Fa
6、lse字符型字符型Char1ASCII码码String0255ASCII码码2.1 Object Pascal数据类型整型(整型(integer)l基本整数类型包括shortint、smallint、longint、byte和word l一般整数类型包括有符号整数(Integer)和无符号整数(Cardinal)两种 l5种算术运算“+(加)、(减)、*(乘)、DIV(除)、MOD(取余)”l6种关系运算“=(等于)”、“(不等于)”、“(小于)”、“(大于)”、“(大于等于)”2.1 Object Pascal数据类型2.1.2 字符类型lAnsiChar:标准的1字节的ANSI字符。lWi
7、deChar:WideChar类型的数据为双字节,与Unicode字符集对应。Unicode字符集的前256个字符与ANSI字符集的相同。lChar;通用的字符类型,在Delphi6以前相当于AnsiChar,在Delphi6以后版本中相当于WideChar。Attention:不能在应用程序中对字符长度进行直接编码,而应该使用Sizeof()函数 2.1 Object Pascal数据类型2.1.3 字符串类型AnsiString:这是Pascal缺省的字符串类型,它由AnsiChar字符组成,其长度没有限制,同时与null结束的字符串相兼容。WideString:功能上类似于AnsiStr
8、ing,但它是由WideChar字符组成的。Pchar:指向null结束的Char字符串的指针,类似于C的char*或lpstr类型。PansiChar:指向null结束的AnsiChar字符串的指针。PWideChar:指向null结束的WideChar字符串的指针。小实例小实例:缺省情况下,如果用如下的代码来定义字符串,编译器认为是AnsiString 字符串:varS:string;/编译器认为S的类型是AnsiString2.1 Object Pascal数据类型2.1.3 字符串类型编译开关$H的使用 当$H编译开关的值为负时,string变量是ShortString类型;当$H编译
9、开关的值为正时(缺省情况),字符串变量是AnsiStr ing类型。小实例:var$H-S1:string;/S1是ShortString类型$H+S2:string;/S2是AnsiString类型例外:如果在定义时特地指定了长度(最大在255个字符内),那么总是ShortString:小实例:varS:string63;/63个字符的ShortString字符串2.1 Object Pascal数据类型2.1.3 字符串类型字符串运算符/用+运算符vars1,s2:string;begins1:=hello;s2:=delphi;s1:=s1+s2;/s1的内容为hellodelphien
10、d;/用Concat函数vars1,s2:string;begins1:=hello;s2:=delphi;s1:=Concat(s1,s2);/s1的内容为hellodelphiend;字符串的空间分配varS:string;/字符初始化时,没有长度beginS:=hello;/为字符串的字母分配足够的空间/或者SetLength(S,8);/分配8个字符的空间end;字符串的空间分配varS:string;beginS1:=c;/不能工作,因为S没有被分配空间end;/然而,代码改成如下,就能正常工作了:varS:string;beginSetLength(S,1);S1:=c;/现在S有
11、足够空间来容纳字符end;2.1 Object Pascal数据类型2.1.4 布尔(Boolean)类型lBoolean型的常量只有True和False两个值 l布尔类型的运算AND(逻辑与)OR(逻辑或)NOT(逻辑非)XOR(异或)2.2 运算符与表达式运算符与表达式2.2.1 赋值运算符 Number:=25;2.2.1 赋值运算符操作符操作符操作操作操作数类型操作数类型结果数据类型结果数据类型+加加Interger,realInterger,real-减减Interger,realInterger,real*乘乘Interger,realInterger,real/除除Interge
12、r,realrealDIV整数除整数除IntergerIntergerMOD求余数求余数IntergerInterger操作符操作符操作操作操作数类型操作数类型结果数据类型结果数据类型+保持原数符号不保持原数符号不变变Interger,realInterger,real-求求负负Interger,realInterger,real二二元元运运算算符符一一元元运运算算符符2.2 运算符与表达式运算符与表达式2.2.3 逻辑运算符 l布尔运算符 l位运算符l关系运算符 操作符操作符操作举例操作举例操作数类型操作数类型结果类型结果类型说明说明NOTNOT xIntegerInteger按二按二进进制
13、形式每位求反制形式每位求反ANDa AND bIntegerInteger按位按位进进行行AND运算运算ORa OR bIntegerInteger按位按位进进行行Or运算运算XORa XOR bIntegerInteger按位按位进进行行XOR运算运算SHLa SHL bIntegerInteger将将a的二的二进进制制值值左移左移b位,左移位,左移1位相当于乘位相当于乘2SHRa SHR bIntegerInteger将将a的二的二进进制制值值右移右移b位,右移位,右移1位相当于除位相当于除2关系符关系符操作操作结果类型结果类型=等于等于boolean不等于不等于boolean大于大于bo
14、olean=大于等于大于等于boolean2.3流程控制2.3.1 If语句 l语法形式:ifthen/满足条件1执行语句组1beginendelseifthen/满足条件2执行语句组2beginend;else/前面条件都不满足则执行语句组3beginend;2.3流程控制2.3.1 If语句实例:a:=1;b:=2;if ab then/如果满足if后面的条件执行then后面的语句beginc:=0;d:=1;endelse/如果不满足if后面的条件执行Else后面的语句beginc:=1;d:=0;end;2.3流程控制2.3.2 CASE语句 语法形式:caseof数值1:begine
15、nd;数值2:beginend;实例:case x of /对变量x进行多条件选择10:/x=10执行begin,end之间的语句beginx:=x*x*5;y:=sin(x);end;2,4,17:/x为2、4、7时执行语句x:=x+1x:=x+1;3,5,18:/x为3、5、8时执行语句x:=x-1x:=x-1;2.4 循环 WHILE语句 Timer:=0;While Timer=20;2.4 循环FOR语句l语法形式:for:todofor:downtodol实例:For x:=1 to 100 dosum:=sum+x;Attention:适用于循环次固定的情况 2.5 过程与函数过
16、程与函数的定义过程的定义procedure ProcedureName(ParameterList);directives;varLocalDeclarations;beginstatementsend;函数的定义function FunctionName(ParameterList):ReturnType;directives;varLocalDeclarations;beginstatementsResult:=xxxxx;end;2.5 过程与函数参数 l称呼:形参:函数定义时参数列表中的参数实参:函数调用时参数列表中的参数l使用方法数值参数procedure Change(Nunber
17、:Integer);beginNumber:=Number*10;end;变量参数 procedure Change(var Number:Integer);常量参数procedure Change(const Number:Integer);2.5 过程与函数代码分析定义:PInteger=Integer;/定义指针类型procedure P1(var N:Integer);/引用参数传递beginN:=N+1;end;procedure P2(N:Integer);/普通参数传递beginN:=N+5;end;procedure P3(PT:PInteger);/传递指针参数beginPT
18、:=PT+10;end;调用:i:Integer;begini:=1;P1(i);/将i的值增加1Writeln(i,i);P2(i);/希望将i加5,但没有实现Writeln(i,i);P3(i);/将I加10Writeln(i:,i);Readln;end.输出结果:i:2i:2i:122.6 数组 l什么是数组:数组类型是某种数据类型的有序组合 l类型定义方法type Dou=array1.25 of Double;l声明方法var TDou:Dou;或var TDou:array 1.25 of Double;l使用方法for i:=1 to 25 doTDou i:=0;l多重数组声
19、明typeTTable=array1.25,1.25 of Double;2.7 文件文件文件:由一些具有相同类型的元素组成的线性序列文件类型的声明:file of 基类型;文件类型的操作Var F:File Of Integer;I:Integer;Begin AssignFile(F,XXX.DAT);Rewrite(F);I:=0;While(I100)Do Write(F,I);CloseFile(F);End;2.9 指针类型 l指针类型的变量指向内存空间的地址l定义:type PointerName=typt;lObject Pascal语言中的一些标准指针指针类型指针类型所指变量
20、的类型所指变量的类型Pstring,PAnsiStringAnsiStringPbyteArrayByteArrayPcurrecyCurrencyPextendedExtendedPoleVariantOleVariantPshortStringShortStringPvariantVariantPvarRecTvarRec(定(定义义在在System单单元中)元中)PtextBufTextBuf(定(定义义在在SysUtils单单元中)元中)PwideStringWideStringPwordArrayTWordArray(定(定义义在在SysUtils单单元中)元中)Delphi 程序设
21、计教程程序设计教程第3章 Delphi开发环境3.1 Delphi 7开发环境详解 3.2 集成开发环境应用 3.3 常用调试技巧 3.1 Delphi 7开发环境详解lIDE包括:l主窗口l菜单l组件选项板l工具栏l代码编辑器l窗体Forml对象观察器l对象树浏览器3.1 Delphi 7开发环境详解3.1.1 Delphi 7主窗口 File菜单 New子菜单New Items对话框3.1 Delphi 7开发环境详解3.1.1 Delphi 7主窗口(菜单)Search菜单Edit菜单View菜单3.1 Delphi 7开发环境详解3.1.1 Delphi 7主窗口(菜单)Debug菜单
22、Project菜单Run 菜单3.1 Delphi 7开发环境详解3.1.1 Delphi 7主窗口(菜单)Component菜单Database菜单Tools 菜单3.1 Delphi 7开发环境详解3.1.1 Delphi 7主窗口(工具条与组件板)定制工具条定制组件对话框3.1 Delphi 7开发环境详解3.1.2 对象树浏览器3.1.3 对象观察器 事件标签页 特性标签页 定制对象观察器3.1 Delphi 7开发环境详解3.1.4 窗体3.1.5 代码编辑器代码编辑器3.2 集成开发环境应用 开发步骤(1)创建一个新项目。(2)创建窗体。(3)在窗体内放入组件。(4)处理窗体、组件
23、响应的事件。(5)编译程序。3.3 常用调试技巧3.3.1程序错误的类型 1.设计时期错误2.编译期错误3.运行期错误4.逻辑错误3.3.2 使用Run菜单命令调试程序1.单步执行2.跟踪执行3.跳过一段代码4.返回到执行点5.直接运行程序6.暂停运行程序7.重新开始运行3.3 常用调试技巧3.3.3 使用断点1.设置断点2.查找断点3.删除断点4.禁止和激活断点5.修改断点的属性设置断点3.3 常用调试技巧3.3.4 使用监视窗口1.添加一个监视窗口在代码编辑器中找到要跟踪的变量或表达式,在该处按下热键CtrlF5使用菜单上的“Run|Add Watch”命令在代码编辑器中,右击要跟踪的变量
24、或表达式,然后在弹出的快捷菜单中“Debug|Add Watch At Cursor”命令选择“View|Debug Windows|Watches”命令2.删除监视窗口3.设置监视窗口的属性Delphi 程序设计教程程序设计教程第4章 面向对象编程 4.1 面向对象的概念4.2 Object Pascal语言的面向对象技术4.3 Delphi 中的消息机制 4.4 Delphi类库和组件4.5基于组件的可视化程序设计4.1 面向对象的概念4.1.1 对象和类的概念1.对象的封装性2.对象的继承性3.对象的多态性域(field),也被称为域定义或实例变量,域是包含在对象中的数据变量。方法(me
25、thod),属于一个对象的过程和函数名,在C+中它被称为成员函数。属性(property),属性是外部代码访问对象中的数据和代码的访问器,属性隐藏了一个对象的具体实现的细节。手机手机对对象示例象示例4.1 面向对象的概念4.1.2面向对象程序设计开发时间短,效率高,可靠性高,所开发的程序更强壮。由于面向对象编程开发时间短,效率高,可靠性高,所开发的程序更强壮。由于面向对象编程的可重用性,可以在应用程序中大量采用成熟的类库,从而缩短了开发时间。的可重用性,可以在应用程序中大量采用成熟的类库,从而缩短了开发时间。应用程序更易于维护、更新和升级。继承和封装使得应用程序的修改带来的应用程序更易于维护、
26、更新和升级。继承和封装使得应用程序的修改带来的影响更加局部化。影响更加局部化。面向对象方法来进行面向对象方法来进行Windows程序的设计与开发是极其方便的和自然的。程序的设计与开发是极其方便的和自然的。在在Windows中,程序的基本单位是窗口。从面向对象的角度来看,窗口本中,程序的基本单位是窗口。从面向对象的角度来看,窗口本身就是一个对象。身就是一个对象。Windows程序的执行过程本身就是窗口和其他对象的创程序的执行过程本身就是窗口和其他对象的创建、处理和消亡过程。建、处理和消亡过程。Windows中的消息的发送可以理解为一个窗口对象中的消息的发送可以理解为一个窗口对象向别的窗口对象请求
27、对象的服务过程。向别的窗口对象请求对象的服务过程。采用面向对象的方法来进行采用面向对象的方法来进行Windows程序设计还可以简化对资源的管理。程序设计还可以简化对资源的管理。4.2 Object Pascal语言的面向对象技术4.2.1 类的定义类的定义type =class(基类标识符)成员列表end;标明“能见度”的保留字 privateProtectedpublicpublishedautomated4.2 Object Pascal语言的面向对象技术4.2.2 属性4.2.3 方法l分类:静态方法虚拟方法动态方法消息处理方法l使用:方法的覆盖方法的重载重新引入方法名称TMyObjec
28、t=classprivate SomeValue:integer;Procedure SetValue(a:integer);Public Property value:integer read SomeValue write SomeValue;end;procedure TMyObject.SetValue(a:integer);begin if SomeValuea thenSomeValue:=a;end;对象示例TfooChild=class(TFoo)Procedure IamAVitual;override;Procedure IamADynamic;override;Proce
29、dure IamAMessage(var M:TMessage);message wm_SomeMessage;end;Type TSomeClass=class Procedure Amethod(I:integer);overload;Procedure Amethod(S:string);overload;Procedure Amethod(D:double);overload;end;TypeTSomeBase=classProcedure A;end;TSomeClass=classProcedure A;reintroduce;end;方法的覆盖方法的重载重新引入方法名称4.2 O
30、bject Pascal语言的面向对象技术4.2.4 多态性 面向对象的程序设计语言还可以在运行时才确定对象方法面向对象的程序设计语言还可以在运行时才确定对象方法的调用地址,这种调用函数的方式叫做多态性,有时也称的调用地址,这种调用函数的方式叫做多态性,有时也称为动态联编或滞后联编。为动态联编或滞后联编。在在Object Pascal语言中,多态性是通过虚拟方法或动语言中,多态性是通过虚拟方法或动态方法实现的。态方法实现的。4.2 Object Pascal语言的面向对象技术4.2.5 类运算符(1)is运算符is运算符用来检测一个对象在运行时的类的类型,具体形式如下:object is cl
31、ass如果返回值为True,那么对象object是类class的一个实例,或者是类class的派生类的一个实例。如果对象为nil,返回值则为False。(2)as运算符as运算符用来进行类型转换检测的,具体形式如下:object as class返回值为object的一个引用,类型为class类型。在运行期间,object必须是与class类兼容的一个类的对象或者为nil。通常为了避免类型不兼容,可以使用is运算符来进行类型判断。4.3 Delphi 中的消息机制什么是消息?l消息是向某对象请求服务的一种表达方式 l消息驱动机制,对消息进行收集、分发和处理的机制l消息驱动机制,使得形式上完全分
32、离的各个模块、各个对象之间达到了动态链接,同时打破了进程事先有序、过程驱动的传统程序设计方法4.3 Delphi 中的消息机制消息的声明type TMessage=packed record Msg:Cardinal;case Integer of0:(wParam:Longint;lParam:Longint;Result:Longint);1:(wParamLo:Word;wParamHi:Word;lParamLo:Word;lParamHi:Word;ResultLo:Word;ResultHi:Word);end;键盘消息的定义TWMKey=packed record Msg:Car
33、dinal;CharCode:Word;Unused:Word;KeyData:Longint;Result:Longint;end;常用的键盘消息WM_KEYDOWNWM_KEYUPWM_CHARWM_SYSKEYDOWNWM_SYSKEYUPWM_SYSCHAR4.3 Delphi 中的消息机制通知消息 类型类型消消 息息含含 义义按按钮钮BN_CLICKED用用户选择户选择了按了按钮钮BN_DISABLE按按钮钮被禁止被禁止BN_DOUBLECLICKED用用户户双双击击了按了按钮钮BN_HILITE用用户户加亮了按加亮了按钮钮BN_PAINT按按钮应钮应当重画当重画BN_UNHILIT
34、E加亮加亮应应当去掉当去掉组组合合框框CBN_CLOSEUP组组合框的列表框被关合框的列表框被关闭闭CBN_DBLCLK用用户户双双击击了一个字符串了一个字符串CBN_DROPDOWN组组合框的列表框被拉出合框的列表框被拉出CBN_EDITCHANGE用用户户修改了修改了编辑编辑框中的文本框中的文本CBN_EDITUPDATE编辑编辑框内的文本即将更新框内的文本即将更新CBN_ERRSPACE组组合框内存不足合框内存不足CBN_KILLFOCUS组组合框失去合框失去输输入焦点入焦点CBN_SELCHANGE在在组组合框中合框中选择选择了一了一项项CBN_SELENDCANCEL用用户户的的选择
35、应选择应当被取消当被取消CBN_SELENDOK用用户户的的选择选择是合法的是合法的CBN_SETFOCUS组组合框合框获获得得输输入焦点入焦点类型类型消消 息息含含 义义编编辑辑框框EN_HSCROLLEN_HSCROLL用用户户点点击击了水平了水平滚动滚动条条EN_ERRSPACEEN_ERRSPACE编辑编辑框内存不足框内存不足EN_CHANGEEN_CHANGE编辑编辑框中的文本己更新框中的文本己更新EN_KILLFOCUSEN_KILLFOCUS编辑编辑框正在失去框正在失去输输入焦点入焦点EN_MAXTEX TEN_MAXTEX T插入的内容被截断插入的内容被截断EN_SETFOCU
36、SEN_SETFOCUS编辑编辑框框获获得得输输入焦点入焦点EN_UPDATEEN_UPDATE编辑编辑框中的文本将要更新框中的文本将要更新EN_VSCROLL用用户户点点击击了垂直了垂直滚动滚动条条列列表表框框LBN_DBLCLK用用户户双双击击了一了一项项LBN_ERRSPACE列表框内存不列表框内存不够够LBN_KILLFOCUS列表框正在失去列表框正在失去输输入焦点入焦点LBN_SELCANCEL选择选择被取消被取消LBN_SELCHANGE选择选择了另一了另一项项LBN_SETFOCUS列表框列表框获获得得输输入焦点入焦点Win32中标准中标准Windows组件的所有通知消息组件的所
37、有通知消息4.4 Delphi类库和组件4.4.1 什么是VCLlVCL就是组件库,它是由一些称作组件的预见对象组成 l在Delphi中,组件是可视化编程的基础,是某些类的对象,程序员用它来设计用户界面,并且给予应用程序一些非可视化功能 4.4 Delphi类库和组件4.4.2 VCL的类型 标准组件:Delphi提供了标准组件来封装Windows 95/98组件的行为,如TButton、TMemo、TListView和TTreeView等。自定义组件:程序员根据需要自己开发的组件。图形组件:只具有显示的功能,如TImage,TLabel,TBevel和TShape等。非可视组件:程序运行之后
38、不可见,如TTable,TTimer和TOpenDialog等等。4.4 Delphi类库和组件4.4.4 组件的使用步骤 在组件工具栏上选择所需的组件所在的标签。选择所需的组件。在窗体的适当位置单击,则组件被加入到窗体中。在对象监视器的Properties标签中设置该组件的属性。视需要有选择地使用对象监视器的Events标签,设置其事件过程,并在程序浏览器中编辑该事件过程。4.5基于组件的可视化程序设计 4.5.1 设计一个字体对话框新建一个窗体。在窗体中添加组件。添加代码。运行程序。字体字体对话对话框框4.5基于组件的可视化程序设计4.5.2 设计资源管理器资资源管理器源管理器Delphi
39、 程序设计教程程序设计教程第5章 VCL详解 5.1 VCL的层次结构 5.2 组件栏介绍5.3 组件开发技术 5.1 VCL的层次结构5.1.1VCL的层次结构5.1 VCL的层次结构5.1.2 核心类介绍lTObject类类:系统中所有类的基类系统中所有类的基类lTComponent 类:所有组件的基类 lTControl类:所有可视组件的基类 5.1 VCL的层次结构5.1.3 VCL的通用属性、方法和事件(1)VCL组件的属性TmyTry=classPrivate Thevalue:String;Procedure SetThevalue(Avalue:String);Public P
40、roperty value:string read Thevalue write SetThevalue;End;Procedure TmyTry.SetThevalue(Avalue:string);Begin If Thevalue Avalue then Thvalue:=Avalue;End;5.1 VCL的层次结构5.1.3 VCL的通用属性、方法和事件(2)VCL组件的方法TypeTmytry=class Male:Boolean;Gender:string;Procedure Judgethegender;end;Procedure Tmytry.Judgethegender;B
41、egin If male then Gender:=I am a man;Else Gender:=I am a woman;end;5.1 VCL的层次结构5.1.3 VCL的通用属性、方法和事件(3)VCL组件的事件type TForm1=class(TForm)button1:Tbutton;button2:Tbutton;procedure TForm1.Button1Click(Sender:TObject);procedure TForm1.Button2Click(Sender:TObject);end;procedure TForm1.Button1Click(Sender:T
42、Object);beginend;procedure TForm1.Button1Click(Sender:TObject);beginButton2.OnClick:=Button1Click;End;5.2 组件栏介绍5.2.1 界面组件 界界面面实实例例5.2 组件栏介绍5.2.2 网络组件网网络络应应用用实实例例5.2 组件栏介绍5.2.2 网络组件关键代码:关键代码:if Edit3.Text begin IdTCPServer.DefaultPort:=StrToInt(Edit3.Text);/打开TCP服务器,TCP服务器开始监听客户的请求 IdTCPServer.Active
43、:=true;end;/建立连接 IdTCPClient.Host:=Edit1.Text;IdTcpClient.Port:=StrtoInt(Edit2.Text);try IdTCPClient.Connect;ClientHandleThread:=TClientHandleThread.Create(True);ClientHandleThread.FreeOnTerminate:=True;ClientHandleThread.Resume;except on E:Exception do MessageDlg(链接错误:+#13+E.Message,mtError,mbOk,0)
44、;end;5.2 组件栏介绍5.2.3 数据库组件lBDE技术lInterbase技术ldbExpress技术lADO技术 数数据据库库应应用用实实例例5.3 组件开发技术5.3.1 自定义组件概况l组件和组件包l自定义组件的分类:界面增强类、图形图像类、多媒体类、系统类、数据库类、网络类等等 l比较有名的自定义组件:Rxlib2.75、AHM2000 for Delphi、ABC5D、XlGrid1.62、CoolMenu1.5、DragDrog3.7 5.3 组件开发技术5.3.2 设计新组件的起点l修改已有的控制l建立原始控制l建立图形控制l建立Windows控制的子类l建立非可视组件途
45、 径起 始 类修改已有组件任何已有组件,如TButton、TListBox或抽象组件对象如TCustomListBox建立原始控制TCustomControl建立图形控制TGraphicControl建立窗口控制的子类TWinControl建立非可视组件Tcomponent5.3 组件开发技术5.3.3 开发自定义组件的一般步骤建立包含新组件的库单元;从已有组件类型中继承得到新的组件类型;增加属性、方法和事件;用Delphi 7注册组件;为组件的属性方法和事件建立Help文件。5.3 组件开发技术5.3.3 开发自定义组件的具体步骤(1)确定祖先类。通过前面的学习,我们明白了VCL的层次结构,
46、由此也就知道了,其实每一个可视组件都有其父类的。所以在开发可视组件时,先要确定它的父类(也叫祖先类)。(2)创建组件的单元文件。组件的具体实现是放在一个单元文件里,在这个单元文件里定义了组件的属性、方法、事件及具体实现。(3)添加属性。(4)添加事件。(5)定义方法。(6)定义构造方法和析构方法。这两个方法不是必须的,因为系统里有默认的方法,一般只在有初始数据属性时才用到。(7)注册组件。组件要注册后才可用,才会出现在工具栏中。(8)测试组件。只有经过测试过的组件才可使用。所以,在组件注册成功后,一定要测试一下它的各个方法,直到确信完全正确为止。Delphi 程序设计教程程序设计教程第6章 界
47、面组件与应用6.1 窗体及其应用6.2 常用组件介绍6.3 菜单设计6.4 界面设计综合应用6.1 窗体及其应用窗体组件中常用属性、事件和方法 FormStyle属性:设置窗体的类型Icon属性:用于设置窗体最小化时的图标。OnCreate事件:用于创建一个窗体,如果该窗体位于AutoCreate列表框中,那么当应用程序加载时,它会被自动激活。OnKeyDown事件:用于捕获专用击键和击键组合OnDestroy事件:如果窗体是自动创建的,那么当应用程序关闭时,OnDestroy事件被激活,否则,由窗体的Destroy析构函数激活。6.2 常用组件介绍6.2.1 标准界面组件与应用标签(TLab
48、el)按钮(TButton)文本编辑框(TEdit)列表框(ListBox)组合框(ComboBox)复选框(CheckBox)分组框(GroupBox)单选按钮组(RadioGroup)多行编辑框(Memo)滚动条 6.2 常用组件介绍6.2.1 标准界面组件与应用(1)标签l从TCustomLabel继承下来的,而TCustomLabel又是从TGraphicControl继承下来的。l标签本身不是窗口,只是用来标注其它组件。由于TLabel是个典型的非窗口组件,它没有窗口句柄,也不会有输入焦点,但可以把它与标注的组件关联,以后当用户按下这个标签的加速字符时(按鼠标无效),输入焦点将自动移
49、到关联的组件上。6.2 常用组件介绍6.2.1 标准界面组件与应用(2)文本编辑框 lDelphi中最常用的输入、输出组件。一般在用户需要传递给应用程序必要信息进行处理和判断时使用,同时它也作为输出组件使用,用以向用户输出必要信息。它作为一个输入单行文本的编辑框,是一个可视组件。lTEdit组件的作用是让用户输入单行文字,用户在组件中输入字符时,Text属性总是保持为的最新内容,并将触发OnChange事件,TEdit的父类是TCustomEdit,而TCustomEdit又是从TWinControl继承下来的,因此它典型的窗口组件。6.2 常用组件介绍6.2.1 标准界面组件与应用(3)按钮
50、 lTButton类用于创建一个标准的普通按钮,普通按钮是经常要用到的,它的用法比较简单。当用户单击按钮时将触发OnClick事件,程序要做的就是响应这个事件。可以把按钮设为默认按钮。这样,用户按下Enter键时,就相当于单击这个按钮。也可以把按钮设为取消按钮,用户按下Esc键时相当于单击这个按钮。lTButton的父类是TButtonControl,而TButtonContrl又是从TWinControl继承下来的。6.2 常用组件介绍6.2.1 标准界面组件与应用(4)列表框 列表框则是一种可供用户选择的组件。它通常用来对一组信息进行列表,其类名为TListBox.。列表框能够在一个可翻滚