Delphi编程入门讲解_第1页
Delphi编程入门讲解_第2页
Delphi编程入门讲解_第3页
Delphi编程入门讲解_第4页
Delphi编程入门讲解_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Delphi历史Delphi特性Delphi 7开发环境介绍面向对象程序设计(OOP)Object Pascal基本语法1995年 delphi1发布1996年 delphi 2发布1999年 delphi5发布2002年 delphi7发布2007年 delphi2007发布2010年 delphi2010发布快速开发工具最好的C/S程序开发工具支持各种程序的开发Win32原生程序快速开发工具delphi语法:Object Pascal,是一种面向对象的计算机语言, 程序语法严谨,易学易用。VCL库:提供丰富的可视化组件库,程序人员可根据需要直接进行调用。 IDE开发环境:集编码、设计、调试

2、如一身,大大方便了程序的开发调试。最好的C/S程序开发工具支持所有的常用数据库可开发两层结构、三层结构的管理软件非常棒的VCL控件支持开发的程序易于发布支持各种程序的开发数据库应用程序的开发网络应用软件的开发游戏软件的开发其它应用软件文件类型pas:单元文件dfm:窗体文件dpr:项目文件dpl:压缩库文件dpk:包文件res:资源文件dcu:编译文件定制工具栏ViewToolbarsCustomize常用工具按钮介绍定制代码编辑器ToolsEditor Properties保存定制开发环境ViewDesktopSave Desktop项目目录设置ProjectOptions组件库路径设置To

3、olsEnvironment Options从当前工程已有基类继承断点设置与调试常用快捷键F3:继续查找F4:运行程序至光标处F5:设置断点F7:跟踪调试F8:单步调试F9:运行程序F11:在Form/Unit和Object Inspector(对象查看器)之间切换F12:在Form和Unit之间切换Ctrl+F9:编译Ctrl+Alt+F11:弹出Project Options(工程管理器)Ctrl+Shift+上/下方向键:在过程的声明和实现间切换Ctrl+J:插入标准语法代码Ctrl+Shift+U,Ctrl+Shift+I:将所选择的代码整体右移或者左移Ctrl+Shift+C:完成已

4、声明类的实现Shift+Alt+F11:对象树状视图运算符常量和变量过程和函数数据类型程序流程控制单元的组织结构一、运算符1、赋值运算符运算符运算符PascalPascalC/C+C/C+JavaJava赋值:=2、比较运算符运算符运算符PascalPascalC/C+C/C+JavaJava等于=不等于!=!=小于小于等于=3、逻辑运算符运算符运算符PascalPascalC/C+C/C+JavaJava与and&或or|非not!4、算术运算符运算符运算符PascalPascalC/C+C/C+JavaJava加+减-乘*除(浮点数)/除(整数)div/取模mod%5、按位运算符运

5、算符运算符PascalPascalC/C+C/C+JavaJava与and&取反not或or|异或xor左移shl6、其他运算 对象类型的转化: a、使用is进行类型兼容性判断,然后用as转化b、使用Tobject.InheritsFrom代替is运算符二、常量与变量1、声明常量:const变量:var2、有类型常量和无类型常量const i = 5; ErrMsg = 被除不能为0; s: String=123456;3、全局变量和局部变量注:全局变量可指定初始值,但局部变量不可以三、过程与函数区别:函数,有返回值;过程,无返回值。声明:函数,function;过程,procedur

6、e。原则:先声明,后使用。参数值传递与参数地址传递参数值传递:procedure ChangeMsg(s: String);参数地址传递:procedure ChangeMsg(var s: String);procedure TForm1.btn1Click(Sender: TObject);var Str: string;begin Str := StrVar; ChangeMsg1(Str); ShowMessage(Str); /StrVar ChangeMsg2(Str); ShowMessage(Str); /StrVarisChangedend;procedure TForm1.

7、ChangeMsg1(s: String);begin s := s+isChanged;end;procedure TForm1.ChangeMsg2(var s: String);begin s := s+isChanged;end;OUT参数输出参数,它传递的也是一个引用。然而,对于OUT参数,将其传递到过程/函数中时,初始量会被丢弃。procedure TForm1.btn1Click(Sender: TObject);var Str: string;begin Str := Message; ChangeMsg3(Str); ShowMessage(Str); /Changedend

8、;procedure TForm1.ChangeMsg3(out s: String);begin ShowMessage(s); /显示空字符串 s := Changed;end;四、数据类型常用类型: 复杂类型:整数(integer) 集合(Set)实数(Real) 数组(Array)布尔(Boolean) 记录(Record)字符(串)(Char,String) 文件(File)枚举(Enumerated)类(Class)子界(Subrange)接口(Interface)可变类型(Variant)枚举数据类型1、定义2、枚举数据类型特点u枚举元素只能是标识符 type days=(sun

9、,mon,tue,wed,thu,fri,sat); colors=(red,yellow,blue,white,black,green); var Week: days; FormColor: colors; type colortype=(red,yellow,blue,white); numbers=(1,3,5,7,9);u枚举类型属于顺序类型根据定义类型时各枚举元素的排列顺序确定它们的序号,且序号从0开始。例如:type days=(sun,mon,tue,wed,thu,fri,sat);则: ord(sun)=0,ord(mon)=1,,以此类推。枚举类型中的第一个元素无前趋,最

10、后一个元素无后继。 pred(sat)=fri; succ(sun)=mon; ord(sat)=6;u同一个枚举元素不能出现在两个或两个以上的枚举类型定义中type color1=(red,yellow,white); color2=(blue,red,black);u枚举类型变量只能进行赋值运算和关系运算,不能进行算术运算和逻辑运算。在枚举元素比较时,实际上是对其序号的比较。例如:type days=(sun,mon,tue,wed,thu,fri,sat); colors=(red,yellow,blue,white,black,green);var color:colors; week

11、day:days;则下面语句是合法的: weekday:=mon; if weekday=sun then ShowMessage();3、枚举数据类型的应用子界数据类型介绍1、定义及定义规则 type 子界类型标识符=常量1.常量2 常量1称为子界的下界,常量2称为子界的上界;下界和上界必须是同一顺序类型(该类型称为子界类型的基类型),且上界的序号必须大于下界的序号。如: type age=1.100; letter=a .z;可以直接在变量说明中定义子界类型。如:type letter=a. z ; var ch1,ch2:letter; var ch1,ch2:a.z;2、子界类型数据的

12、运算规则 凡可使用基类型的运算规则同样适用该类型的子界类型。 基类型相同的不同子界类型数据可以进行混合运算。 var liInt1: 1.10; liInt2: 10.20; liInt3: Integer; begin liInt1 := 5; liInt2 := 11; liInt3 := liInt1+liint2; ShowMessage(IntToStr(liInt3); end;集合数据类型介绍1、定义type 集合类型名称 = Set of 基类型;基类型可以为:字符型、布尔型、枚举型和子界型。例:type numbers = set of 0.9; ch = set of ch

13、ar; var n: numbers; c: ch; d: set of (sun,mon,tue,wed,thu,fri,sat);注:集合的元素个数不超过256个,因此 var s:set of integer; 是错误的。2、集合的值 a、 集合的值放在一对方括号中,中间各元素之间用逗号隔开 。如:1,2,5 和 a,e,i 都是集合。 b、 为空集。 c、在集合中,如果元素的值是连续的,则可用子界型的表示方法表示。例如:1,2,3,4,5, 10,15可以表示成: 1.5,10,15 d、集合的值与方括号内元素出现的次序无关。例如1,5,8 和5,1,8的值相等。 e、在集合中同一元素

14、的重复出现对集合的值没有影响。例如,1,8,5,1,8与1,5,8的值相等。 f、每个元素可用基类型所允许的表达式来表示。如1,1+2、succ(ch)。3、集合的运算集合类型变量不能进行算术运算;集合是无序的,不能使用ord、pred、succ等函数。a、赋值运算var liInt: set of 0.9; liInt := 0;b、集合的并、交、差运算 var A: Set of X,Y,Z; B: Set of X; 并:A+B为X,Y,Z 交:A*B为X 差:A-B为Y,Zc、集合的关系运算 关系运算符: 相等“=”、不等“”、包含“=”、被包含“=”以及“IN”。 例:A,B=B,A

15、 True A,BB,A False A,B=B,A True A,B=B True A=A,B False A=A,B True A in A,B True4、集合的应用Var Language: set of (English,German,France);procedure TForm1.chkEnglishClick(Sender: TObject);begin if (Sender as TCheckBox).Checked then Language := Language + English else Language := Language - English;end;proc

16、edure TForm1.btn1Click(Sender: TObject);begin if English = Language then ShowMessage(English被选中);end;数组数据类型介绍1、静态数组定义一维:数组名:array下标类型 of 元素类型二维:数组名:array下标类型1, 下标类型2 of 元素类型 2、动态数组定义一维:数组名:array of 元素类型二维:数组名:array of array of 元素类型注:动态数组定义后需分配内存空间 SetLength(动态数组名,数组长度,数组长度)3、数组应用const MyArray: array

17、 0.2 of string = (English,German,France);var i: Integer;begin for i:=Low(MyArray) to High(MyArray) do ShowMessage(MyArrayi);end;var MyArray: array of array of Integer; i,j: Integer;begin SetLength(MyArray,2,2); for i:=Low(MyArray) to High(Myarray) do begin for j:=Low(MyArray) to High(MyArray) do beg

18、in MyArrayi,j := Random(10); end; end;end;记录数据类型介绍1、定义 type 类型标识符=record 变量标识符1:类型; 变量标识符2:类型; : : : : 变量标识符n:类型; end;2、记录类型应用type Students = record name: String20; age: 6.30; case className: Char of /变体记录,共享内存 A:(English: Real); B:(Math:Real); end;var Stu1,Stu2: Students;begin S := 张三; Stu1

19、.age := 13; Stu1.className := A; Stu1.English := 88.2; ShowMessage(FloatToStr(Stu1.Math); /88.2end;五、程序流程控制条件语句:循环语句:控制语句:Break: 跳出当前循环。Continue: 结束本次循环,执行下一次循环。Exit:退出当前代码块,如果当前代码块是主程序,则程序终止,如果程序块是被调用的模块,则跳到上一层程序继续执行。Halt: 强制终止程序,返回操作系统。Abort: 中止程序运行,保留主程序。Goto: 跳转。六、单元的组织结构 dpr(项目文件) 唯一 pas(单元文件)

20、工程项目 dfm(窗体文件) 其它文件(如res(资源文件)一个不一定项目文件(program)组织结构单元文件(Unit)组织结构单元的循环引用循环引用的意思是:A引用了B,而B又引用了A,且都是在interface部分进行引用。如下面的单元则通不过编译:unit Unit1;unit Unit2;interfaceinterfaceusesuses Unit2; Unit1;至于有一个引用放置在implementation部分类的概念: 指某一类事物共同特征的抽象描述。类使用属性和方法来描述某一事物的具体特征和行为。对象的概念: 即类的实例化。面向对象编程的表现形式: 封装 继承 多态封装

21、代码模块化指利用类将数据和方法封装起来,从而实现功能的隐匿,即控制功能的可见性。1、访问控制符私有成员访问符(private)受保护成员访问符(protected)公有成员访问符(public)发布的成员访问符(published)自动的成员访问符(automated)/不再使用,向后兼容保留2、封装方式a、逻辑封装对类进行操作,将业务的功能和行为以类的形式呈现。b、物理封装表现形式:如动态链接库(DLL)。继承代码重用继承就是根据已有的类创建一个新类的过程。继承的类称为子类,被继承的类称基类。子类的功能就是完善与扩展基类。子类可以继承基类的变量、属性和方法。1、属性的继承属性通过继承不但可以

22、增加可见性,还可以对其功能进行扩展。2、方法的继承方法静态方法:默认类型虚方法(virtual)动态方法(dynamic)抽象方法(abstract):基类无需实现,子类必须实现。 当代码被编译时,编译器会给静态方法一个地址;子类继承时,只是将基类方法的地址赋给了子类。代码运行时通过动态查找VMT/DMT来指定地址。unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TFo

23、rm) edt1: TEdit; btn1: TButton; procedure btn1Click(Sender: TObject); private Private declarations public Public declarations end;type TMyBaseClass = class public procedure BaseSetEdt; end;type TMyChildClass = class(TMyBaseClass) public procedure ChildSetEdt; end;var Form1: TForm1;implementation$R *

24、.dfm TMyBaseClass procedure TMyBaseClass.BaseSetEdt;begin Form1.edt1.Text := Form1.edt1.Text + 基类;end; TMyChildClass procedure TMyChildClass.ChildSetEdt;begin Form1.edt1.Text := Form1.edt1.Text + 子类;end; TForm1procedure TForm1.btn1Click(Sender: TObject);var MyChildClass: TMyChildClass;begin MyChildC

25、lass := TMyChildClass.Create; MyChildClass.BaseSetEdt; MyChildClass.ChildSetEdt;end;end.多态接口重用多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自“Delphi4 编程技术内幕”)。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。覆盖(override)和虚方法是多态的主要表现形式。注意:重载(overload)只是一种语言特性,与多态无关,与面向对象无关!重载(overload):1、方法名一定相

26、同。2、参数个数、参数类型及参数顺序不同。3、在Delphi中,返回值不同,不能区分两个重载的方法。例:function ShowMsg(psStr: String;piInt: integer): String;overload; function ShowMsg(piInt: integer;psStr: String): String;overload; function ShowMsg(piInt: Integer): String;overload;procedure ShowMsg(piInt: Integer);overload; function ShowMsg(piInt:

27、integer): Integer;overload;unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,ExtCtrls, StdCtrls;type TMyPanel = class(TPanel) public procedure SetColor;virtual;abstract; end;type TForm1 = class(TForm) btn1: TButton; procedure btn1Click(Sender

28、: TObject); private public procedure CreatePanel(poPanel: TMyPanel;piWidth,piHeight,piTop,piLeft: Integer;psCaption: String); end;type TMyPanelA = class(TMyPanel) public procedure SetColor;override; end;type TMyPanelB = class(TMyPanel) public procedure SetColor;override; end;var Form1: TForm1;implem

29、entation$R *.dfm TMyPanel procedure TMyPanel.SetColor;begin Self.Color := clGreen;end; TMyPanelA procedure TMyPanelA.SetColor;begin /inherited; Self.Color := clRed;end; TMyPanelB procedure TMyPanelB.SetColor;begin /inherited; Self.Color := clBlue;end; TForm1 procedure TForm1.CreatePanel(poPanel: TMy

30、Panel; piWidth, piHeight, piTop, piLeft: Integer; psCaption: String);begin with poPanel do begin Caption := psCaption; Left := piLeft; Top := piTop; Width := piWidth; Height := piHeight; Parent := Self; SetColor; end;end;procedure TForm1.btn1Click(Sender: TObject);var loMyPanel: TMyPanel; loPanelA:

31、TMyPanelA; loPanelB: TMyPanelB;begin loMyPanel := TMyPanel.Create(Self); CreatePanel(loMyPanel,100,100,50,20,基类Panel); loPanelA := TMyPanelA.Create(Self); CreatePanel(loPanelA,100,100,50,130,PanelA); loPanelB := TMyPanelB.Create(Self); CreatePanel(loPanelB,100,100,50,240,PanelB);end;end.VCL是可视化组件库(V

32、isual Component Library)的简称;它是一个庞大的类、组件库,Delphi和C+Builder使用的组件库都是VCL。类似于C+的MFC。VCL架构VCL采用单根架构(Single-rooted Hierarchy),即所有类的祖先都是Tobject,且每次只能从一个类派生子类(即单继承而非多继承)。JAVA也采用单根架构,而C+不是。使用VCL1、静态方式设计时加入组件进行属性和事件设计。2、动态方式用代码创建类的实例(对象),然后使用它提供的功能,最后销毁它。扩展VCL自定义组件当现有的类和组件无法满足我们的需要时,可以从VCL的现有类和组件上派生新的子类和子组件。SQL语言组成: 数据定义语言(DDL)例如:CREATE、DROP、ALTER等语句。 数据操作语言(DML)例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。 数据查询语言(DQL)例如:SELECT语句。 数据控制语言(DCL)例如:GRANT、REVOKE、COMMIT、ROLLBACK等语句数据查询语言(DQL)SELECTALL|DIS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论