Delphi 基础教程 笔记

合集下载

Delphi的语法基础

Delphi的语法基础
2.4.1 算术运算符与算术表达式 2.4.2 逻辑运算符与布尔表达式
2.4.3 字符串运算符 2.4.4 运算符的优先级
2.5 常用系统函数与过程
2.5.1 数值运算函数 2.5.2 字符处理函数 2.5.3 日期时间函数 2.5.4 顺序类型函数
2.6 语句
2.6.1 语句的基本概念 2.6.2 常见声明语句 2.6.3 赋值语句和程序的顺序结构 2.6.4 条件语句和程序的选择结构 2.6.5 循环语句和程序的循环结构
随机函数的定义: function Random [ ( Range: Integer) ]; 8. π 函数 函数定义为: function Pi: Extended; 2.5.2 字符处理函数 1. 大小写转换函数 其函数定义分别为: function LowerCase(const S: string): string; function UpperCase(const S: string): string;
… 〈常量名n〉=〈常量值n〉; 3. 类型常量 定义类型常量的语法格式为: CONST 〈常量名〉:〈类型名〉=〈常量值〉; 2.3.2 变量 1. 变量的声明
变量声明的语法格式为: VAR 〈变量名1〉:〈类型名1〉;
… 〈变量名n〉:〈类型名n〉; 当多个变量具有相同的类型时,可以使用如下的紧凑格式: VAR 〈变量名1〉,…,〈变量名n〉:〈类型名〉; 2.4 运算符与表达式 2.4.1 算术运算符与算术表达式 1. 算术运算符 2. 算术表达式 算术表达式的格式为: 〈数值1〉〈算术运算符1〉〈数值2〉[〈算术运算符2〉〈数值3〉]
取整数函数的定义: function Int(x: Extended): Extended; 取小数函数的定义: function Frac(x: Extended): Extended; 6. 指数函数和对数函数

DelPhi学习笔记2常用函数与过程

DelPhi学习笔记2常用函数与过程

Delphi7.0的常用函数与过程2.1.4 Delphi 7中的运算符与表达式Delphi 7 有8 类运算符,本章主要学习算术运算符、字符串运算符和位运算符。

其他运算符将在以后的章节中学习。

1.算术运算符算术运算符是用户最熟悉的,类似算术中的加减乘除等。

Delphi 7中有8个算术运算符,具体含义如下。

(1)取正运算符“+”:单目运算符,表示对一个数值型数据取正,例如+5的值为5。

另外,取正运算符可以省略。

(2)取负运算符“-”:也是单目运算符。

例如对5取负,其值为-5。

(3)加法运算符“+”:与数学上的加法相同。

加法运算符与取正运算符符号相同,但含义不同。

例如3+5的值为8。

(4)减法运算符“-”:与数学上的减法含义相同。

也请注意减法运算符与取负运算符的异同。

(5)乘法运算符“*”:表示对两个数值型数据相乘,与数学中的乘法相同。

例如:3*5 的值为15。

(6)除法运算符“/”:与数学上的除法含义相同。

例如3/5 的值为“0.6”。

另外,除法运算的结果总是实型数据。

(7)整除运算符“div”:只能对两个整数进行除法运算,结果为整型数据。

例如5 div 3 的值为1,而“5 div 2.0”是不合法的。

(8)取余运算符“mod”:对两个整数相除,结果为余数。

例如5 mod 3的值为2。

1,数学类函数包括绝对值函数,取整数函数,取小数函数,平方函数,平方根函数,三角函数,指数函数,对数函数和随机函数等。

(1)绝对值函数:Abs(x) 返回x的绝对值,x是整型或实型数据例:x := Abs(-1); //这是一个赋值语句,先计算赋值号右边函数的值(为1)再赋给x.(2)取整数函数例:(3)取小数函数返回x的小数部分,x为实型数据例:(4)平方函数返回实型数据x的平方值,x为实型数据(5)平方根函数返回非负实数x的算术平方根,x为非负实数,返回值也为非负实数例:(6)三角函数返回以弧度为单位的x的正弦函数值,x的单位为弧度返回以弧度为单位的x的余弦函数值,x的单位为弧度ArcTan(x):Extended;返回x的反正切函数值,x的单位为弧度例:(7)指数函数返回值为e x,参数x为实型数据例:(8)自然对数函数Ln(x) := Real;返回x的自然对数值,参数x为正实数,其它对数函数可以由换底公式导出。

Delphi教程

Delphi教程

4.设置组件属性 选中组件,单击Object Inspector的标题栏以 激活对象观察器,并选择Properties选项卡。 在对象观察器中单击要设置的属性,进行属 性设置。 5.添加事件 选中要添加事件的组件,激活对象观察器, 并选择Event选项卡,在对象观察器中单击要 添加的事件,在其右侧输入事件的响应函数 名称,然后回车即可。 6.编写事件响应代码
启动Delphi 7,选择【File】|【New】| 【Application】菜单,新建一个应用程序。 2.设置窗体属性 单击【Object Inspector】,在对象观察器中 打开【Properties】选项卡,单击Caption属 性右侧,输入窗体的新标题“窗口”。 3.向窗体中添加组件 单击Standard选项卡上的Button组件,将鼠 标指向窗体中的任意位置(标题栏除外), 单击鼠标,即可把Button1组件放入窗体中。 或者直接双击组件面板上的Button组件,也 可以在窗体中添加一个Button1组件。
Delphi7的主菜单包括11个下拉菜单 注意:工具栏上的按钮都提供了描述该按 钮功能的tooltip,除了组件面板IDE有6个独 立的工具栏 IDE工具栏的定制功能并不仅限于配置需 要显示的按钮,还可以调整工具栏、组件面 板和菜单栏在主窗口中的位置。
Delphi7组件板包含了350多个组件,是 Delphi可视化编程的核心部件,它由27个选 项卡组成 组件面板如图1-4所示
选定要编写事件响应代码的组件 ,打开Event 选项卡,双击要编写响应代码的事件右侧的 空白部分,进入代码编辑窗口。
procedure TForm1.Button1Click(Sender: TObject); //单击放大按钮,窗口将放大 begin form1.Height:=form1.Height+10; //窗口高度10 form1.Width:=form1.Width+10; //窗口宽度10 end; procedure TForm1.Button2Click(Sender: TObject); //单击缩小按钮,窗口将缩小 Begin form1.Height:=form1.Height-10; //窗口高度减10

DELPHI基础教程:开发Delphi对象式数据管理功能(三)[3]

DELPHI基础教程:开发Delphi对象式数据管理功能(三)[3]

DELPHI基础教程:开发Delphi对象式数据管理功能(三)[3]Position属性的定义中包含了两个读写控制 ... GetPosition和SetPosition:riter = class(TFiler)privateFRootAncestor: TComponent;…function GetPosition: Longint;procedure SetPosition(Value: Longint)public…property Position: Longint read GetPosition write SetPosition;property RootAncestor: TComponent read FRootAncestor write FRootAncestor;end;GetPosition和SetPosition ... 实现如下function riter GetPosition: Longint;beginResult := FStream Position + FBufPos;end;procedure riter SetPosition(Value: Longint)varStreamPosition: Longint;beginStreamPosition := FStream Position;{ 只清除越界的缓冲区 }if (Value < StreamPosition) or (Value > StreamPosition + FBufPos) thenbeginWriteBuffer;FStream Position := Value;endelse FBufPos := Value StreamPosition;end;WriteBuffer是riter对象定义的私有 ... 它的作用是将Writer 对象内部缓冲区中的有效数据写入流中并将FBufPos置为Writer对象的FlushBuffer对象就是用WriteBuffer ... 刷新缓冲区在SetPosition ... 中如果Value值超出了边界(FStream Position FStream Position + FBufPos)就将缓冲区中的内容写入流重新设置缓冲区在流中的相对位置否则就只是移动FBufPos指针riter ... 的实现⑴ WriteListBegin和WriteListEnd的实现这两个 ... 都是用于写连续若干个相同类型的值 WriteListBegin写入VaList标志 WriteListEnd写入VaNull标志procedure riter WriteListBegin;beginWriteValue(vaList)end;procedure riter WriteListEnd;beginWriteValue(vaNull)end;这两个 ... 都调用riter对象的WriteValue ... 该 ... 主要用于写入TValueType类型的值procedure riter WriteValue(Value: TValueType)beginWrite(Value SizeOf(Value))end;⑵ 简单数据类型的写入简单数据类型指的是整型字符型字符串型浮点型布尔型等 riter 对象都定义了相应的写入 ...WriteInteger ... 用于写入整型数据procedure riter WriteInteger(Value: Longint)beginif (Value >= ) and (Value <= ) thenbeginWriteValue(vaInt )Write(Value SizeOf(Shortint))end elseif (Value >= ) and (Value <= ) thenbeginWriteValue(vaInt )Write(Value SizeOf(Smallint))end elsebeginWriteValue(vaInt )Write(Value SizeOf(Longint))end;end;WriteInteger ... 将整型数据分为位位和位三种并分别用vaInt vaInt 和VaIntWriteBoolean用于写入布尔型数据procedure riter WriteBoolean(Value: Boolean)beginif Value thenWriteValue(vaTrue) elseWriteValue(vaFalse)end;与其它数据类型不同的是布尔型数据只使用了标志位是存储布尔值在标志位后没有数据WriteFloat ... 用于写入浮点型数据procedure riter WriteFloat(Value: Extended)beginWriteValue(vaExtended)Write(Value SizeOf(Extended))end;字符串 True False 和 nil 作为标识符传入是由于Delphi的特殊需要如果是 True False 和 nil 则写入VaTrue VaFalse和VaNil 否则写入VaIdent标志接着以字符串形式写入标识符WriteString ... 用于写入字符串procedure riter WriteString(const Value: string)varL: Integer;beginL := Length(Value)if L <= thenbeginWriteValue(vaString)Write(L SizeOf(Byte))end elsebeginWriteValue(vaLString)Write(L SizeOf(Integer))end;Write(Pointer(Value)^ L)end;Delphi的字符串类型有两种一种长度小于个字节另一种长度小于个字节WriteString ... 区分这两类情况存储字符串一种设置VaStirng标志另一种设置VaLString 然后存储字符串的长度值最后存储字符串数据lishixinzhi/Article/program/Delphi/201311/25098。

《Delphi程序设计基础教程》 第2章 面向对象的pascal语言

《Delphi程序设计基础教程》  第2章 面向对象的pascal语言
通常可以利用Delphi开发下面的3种应用程序:
(1)Windows图形界面程序 (2)控制台程序 (3)服务器程序
DELPHI程序设计基础教程
2020年1月9日星期四
2.1 Object Pascal概述
例2-1:编写一个小程序。要求输入一行文字,然后 输出用户输入的文字,按回车键退出。 该实例可以让读者在学习对象Pascal语言的过程中方 便地上机。该实例具有以下特点: (1)是一个控制台程序。 (2)生成的应用程序非常小,一般在几十个字节左 右。 (3)便于保存和备份实例。因为实例的运行环境、 界面模式和文件等都比较简单、统一,所以在做完实 例之后可以将关键代码复制到某个字处理软件的文档 中保存。另外也可以通过简单的操作将运行结果显示 的文字复制到剪贴板中。 (4)相关文件少。最少情况下可以只有一个工程文 件( . dpr )和一个可执行文件( . exe )。
(1)标识符由字母、数字或下划线组成; (2)标识符的第一个字符必须是字母或下划线; (3)标识符的长度不应超过255个字符,否则只有前255个
字符有效; (4)不能将保留字用作标识符; (5)标识符不区分大、小写。源自DELPHI程序设计基础教程
2020年1月9日星期四
2.1.2 保留字
2.1.4 常量和变量
常量 在Object Pascal中用Const关键字来声明变 量,可以同时声明一个或几个常量,每定义 一个常量应以分号结束。说明常量时,不需 要指定其数据类型,只需给出具体的值。因 为编译器能根据常量的值自动判断常量的类 型并分配内存,对于整型常量,编译器在运 行时跟踪它的值,并不对它分配内存。如: Const a=10,编译器能自动判断a是整型, Const Pi=3.14判断Pi是实型,等等。

delphi快速入门(一、基本语法)

delphi快速入门(一、基本语法)

delphi快速⼊门(⼀、基本语法)1、⽂件构成delphi的主模块⽂件格式为.dpr(类似C++的.sln⽂件),其它模块⽂件为.pas(类似C++的.cpp⽂件)。

所以⼀个完整的程序由⼀个.dpr和若⼲个.pas组成(1).dpr程序结构⼀个dpr由程序头、[use从句]、主程序组成,另外源⽂件联系着unit单元,⼀个典型的⼯程⽂件如下所⽰:program Project;{$APPTYPE CONSOLE}useSysUnits; //unit名称与.pas⽂件名称⼀致,⼀个.dpr中不能应⽤两个名称想⽤的.pasbegin//....end.注意:良好的程序需在.dpr中代码尽量的少,代码最好分类在.pas中,然后在.dpr⾥调⽤⼯程⽂件红的全局标识符必须声明与begin之前。

(2).pas⽂件剖析程序的每个⼦模块称为⼀个单元,每个单元存储在⼀个.pas⽂件中。

每个.pas⽂件依次包括:单元名称、Interface关键字,implementation、[initalization]、[finalization]、关键字end。

⼀个完整的pas⽂件如下所⽰:unit Unit1; //单元名称interface //interface起始部分uses ...implementation //implementation起始处uses ...initialization //initalization起始处...finalization //finalization起始处...end. //单元⽂件结尾(end后必须以句号结尾)interface下⾯可定义变量、常量、例程等。

其它地⽅也能定义标识符,但是只有在这⾥定义的标识符才是全局标识符。

在这⾥定义的例程只是⼀个原型,具体的实现部分则放在implementation中.implementation下⾯可定义例程的具体代码,在此处定义的变量、常量、例程等,只能在本implementation单元使⽤,interface部分和其它单元⽆法使⽤initialization下⾯部分可选,此部分的代码在程序启动时运⾏。

《Delphi程序设计基础教程》 第10章 数据库编程基础


DELPHI程序设计基础教程
2019年3月3日星期日
10.2 数据源组件DataSource
数据源的方法 DataSource组件的方法使用的比较少,只 需了解即可 (1)Create 调用Create方法会创建一个DataSource组件 (2)Edit Edit方法可使与数据源联系的数据集进入 编辑状态,可以通过修改数据源的AutoEdit 属性来实现该功能。
DELPHI程序设计基础教程 2019年3月3日星期日
10.1 Delphi数据库编程基础
数据库引擎BDE、ADO简介
1.BDE数据库引擎 BDE数据库引擎(Borland Database Engine)是Borland 公司推出的一种特有的用于访问数据库的机制,它可以让多个 程序共享,为应用程序与数据库的连接提供了灵活性和通用性 。BDE中封装了各种数据库驱动程序,可以访问本地数据库 Paradox、dBase、FoxPro和Access,通过SQL Links驱动程序又 可以访问远程数据库如InterBase、Oracle、Sql Server和DB2 。BDE支持的面很广,因为它可以连接到ODBC,而ODBC本身就可 以支持很多数据库,所以凡是ODBC可以连接的数据库,BDE都可 以连接。 BDE的基本构思是把应用程序与具体的数据库隔离开,提 供一个统一的结构供用户使用,应用程序不再直接与具体的数 据库打交道,而是向BDE提出操作数据库的申请,由BDE具体操 作数据库,并把结果返回给应用程序。
DELPHI程序设计基础教程
2019年3月3日星期日
10.2 数据源组件DataSource
数据源组件的属性
数据源(DataSource)组件是连接数据集组件(如Table、Query、 StoredProc)与数据控制组件的桥梁,数据控制组件的DataSource属性指定数 据源,而数据源的DataSet属性指定数据集。使用DataSource组件,必须设置它 的DataSet属性,这是用来指明一个与当前数据源组件相联系的已知数据集组件 的名字,其它属性可以根据需要设定。数据源组件位于工具栏的Data Access选 项卡。 (1)DataSet DataSet属性是用来指明一个与当前数据源组件相联系的已存在的数据集组 件的名字。可以在设计阶段通过对象检视器来设置DataSet属性,也可以在运行 时通过代码修改该属性值。应用程序通过改变DataSet属性可以实现在同一个数 据控制组件中显示和编辑不同数据集组件中的数据。 (2)Enabled Enabled属性决定了与此数据源组件相连的数据控制组件是否显示数据,如 果Enabled属性值为默认值True,数据控制组件将显示数据,如果Enabled属性 值为False,则所有与此数据源组件相连的数据控制组件都将不显示任何数据。 (3)State State属性是用来读取与此数据源组件相连的数据集组件的当前状态。数据 集组件的当前状态表明了能对数据集所做的操作。

Delphi-基础(常量、集合、数组[动态数组、多维数组])

Delphi-基础(常量、集合、数组[动态数组、多维数组])⼀、常量 1、常量定义:⼀开始定义好的值,以后在程序的运⾏过程中不允许改变1const2 Pi : Double = 3.141592; //定义为常量3{常量的定义⽅式,可以不进⾏类型的声明,编译器会根据具体值决定常量的的类型}4 Pi2 = 3.1415;2、常量使⽤ 枚举:常量集 type 枚举名=(标识符1,标识符2,标识符3,......)1type2{正常情况下,枚举类型的索引是从0开始}3 EColors = (RED,GREEN,BLUE);4 EWeek = (SUN=7,MON=1,TUE=2,WED=3,THU=4,FRI=5,SAT=6);5var6 Color : EColors;7 Week : EWeek;89begin10 Color := EColors.RED;11 Week := EWeek.SUN;12 Writeln(Ord(Color),',',Ord(Week));13 REDln;14end.⼆、⼦界 使⽤:为了防治出现越界 注意事项: 1、⼦界要求上界和下界必须是有序的数据类型整数、字符、枚举 2、⼦界的上界⼤于或者等于下界 格式:type ⼦界1{定义格式}2type3{枚举}4 EColors = (RED,GREEN,BLUE);5{⼦界}6 TSubBoundNumber = 1..10;7 TSubBoundChar = 'a'..'z';8910begin11 Writeln(Low(TSubBoundNumber)); //下界12 Writeln(High(TSubBoundChar)); //上界13 REDln;14end.打印出闰年还是平年,每个⽉的天数和所属季节1{打印出闰年还是平年,每个⽉的天数和所属季节}2type3{⼦界}4 TSubBoundMonths = 1..12;5{枚举}6 ESeason = (Spring,Summer,Autumn,Winter);78var9 Season : ESeason;1415procedure SubBound();16begin17 Writeln('请输⼊⼀个年份:');18 REDln(User_Year);19{默认为闰年}20 Is_Leap_Year := True;21while Is_Leap_Year do22begin23if (User_Year mod4) = 0then begin24if not((User_Year mod100) = 0) then begin25 Writeln('闰年',User_Year);26 Is_Leap_Year := False;27end;28end;29if (User_Year mod400) = 0then begin30 Writeln('闰年',User_Year);31 Is_Leap_Year := False;32end33else begin34 Is_Leap_Year := False;35 Writeln('平年',User_Year)3637end;38end;3940end;41procedure Months();42begin43{季节}44 Writeln('请输⼊⼀个⽉份:');45 REDln(User_Month);46begin47if (User_Month >= Low(TSubBoundMonths)) and (User_Month <= High(TSubBoundMonths)) then48if (User_Month >= 1) and (User_Month <= 3) then begin49 Writeln('当前季节为春季');50case User_Month of511 : begin52 Writeln('31天');53end;542 : begin55if Is_Leap_Year then begin56 Writeln('29天');57end else begin58 Writeln('28天');59end;60end;613 : begin62 Writeln('31天');63end;64end;65end;6667end;68end;6970begin71// Writeln(Low(TSubBoundNumber)); //下界72// Writeln(High(TSubBoundChar)); //上界7374 SubBound();75 Months();76 REDln;77end.View Code三、集合集合是由具有某些共同特征的元素结构的⼀个整体。

Delphi程序设计基础教程 第4章 过程与函数


DELPHI程序设计基础教程

4.2 函数的定义和调用
4.2.1 函数的定义 4.2.2 函数的调用
DELPHI程序设计基础教程

4.2.1 函数的定义
函数与过程基本相同,只是使用的保留字不同,而且多了一个 返回值类型,它就可以用于表达式中,称这种子程序为函数,这种 语句序列的定义称为函数的定义。函数定义在程序的说明部分进行 ,由函数首部和函数体组成,它指明函数名、函数形参及类型、函 数返回值可以赋给函数名,也可以赋给Result变量。
函数定义的格式如下:
function 函数名 (形式参数列表:参数类型):函数返回类型;
<说明部分>;
begin
语句1;
……
函数体
语句n
end;
例4-2:该实例定义了一个函数ShowNum,可以将一个浮点数按指定 的精度输出在屏幕上。
DELPHI程序设计基础教程

4.2.2 函数的调用
函数返回一个函数值,过程则能完成一 系列各种操作。函数的调用方式出现在表达 式中,而过程调用是一句独立的语句。
有了上面的声明之后,若有如下函数定义 : procedure FLength(s:string); begin <过程体> end;
DELPHI程序设计基础教程

4.3.3 过程与函数的调用约定
在调用过程或函数的时候,如果参数列 表中具有多个参数,那么参数传递给过程或 函数的顺序会对结果产生一定的影响。对于 不同的语言,参数传递的顺序是不同的: Pascal语言是按照从左向右的顺序进行传递 的,而C语言是按照从右向左的顺序来传递的 。为了确定传递的顺序,可以在过程或函数 定义的时候,在directives部分利用指令字 指定传递的顺序。

DELPHI基础教程:Delphi图形图像编程(二)[2]

DELPHI基础教程:Delphi图形图像编程(二)[2]另外一个问题是我们希望得到的是鼠标按钮按下和松开这两点所形成的图形但OnMouseMove却把鼠标轨迹上各点与起始点所形成的所有图形画在屏幕上这同样是我们不希望看到的为了解决这些问题程序定义了鼠标的三个事件procedure TForm FormMouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X Y: Integer)beginDrawing := True;Image Canvas MoveTo(X Y)Origin := Point(X Y)MovePt := Origin;OriginPanel Caption := Format( Origin: (%d %d) [X Y])end;procedure TForm FormMouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X Y: Integer)beginif Drawing thenDrawShape(Origin Point(X Y) pmCopy)Drawing := False;end;procedure TForm FormMouseMove(Sender: TObject; Shift: TShiftState; XY: Integer)beginif Drawing thenbeginDrawShape(Origin MovePt pmNotXor)MovePt := Point(X Y)DrawShape(Origin MovePt pmNotXor)end;MovePt用来记录鼠标当前位置当下次鼠标移动时就能在上次鼠标绘制的图形上画一个形状大小一样的图形并把画笔颜色设置成PmNotXor 使上次绘制的图形颜色变成了屏幕颜色从而达到橡皮擦的效果将画笔画刷的Style属性设置成用户希望的值可实现对画笔和画刷风格的选择procedure TForm SetBrushStyle(Sender: TObject)beginwith Image Canvas Brush dobeginif Sender = SolidBrush then Style := bsSolidelse if Sender = ClearBrush then Style := bsClearelse if Sender = HorizontalBrush then Style := bsHorizontal else if Sender = VerticalBrush then Style := bsVerticalelse if Sender = FDiagonalBrush then Style := bsFDiagonal else if Sender = BDiagonalBrush then Style := bsBDiagonal else if Sender = CrossBrush then Style := bsCrosselse if Sender = DiagCrossBrush then Style := bsDiagCross;end;procedure TForm SetPenStyle(Sender: TObject)beginwith Image Canvas Pen dobeginif Sender = SolidPen then Style := psSolidelse if Sender = DashPen then Style := psDashelse if Sender = DotPen then Style := psDotelse if Sender = DashDotPen then Style := psDashDotelse if Sender = DashDotDotPen then Style := psDashDotDot else if Sender = ClearPen then Style := psClear;end;end;图像对象概述TGraphic对象TGraphic对象是TBitmap TIcon Tmetafile对象的基类如果知道图像的具体类型(如位图图标元文件)则应将图像贮存在相应类型的对象中(如TBitmap TIcon Tmetafile)否则应该使用可贮存任何图像类型的TPicture对象TPicture对象TPicture对象可以保存位图图标或元文件 Graphic属性中包括图像的类型图像的高度和宽度分别定义在Height Width属性中调用LoadFromFile方法可以从文件中装载一幅图像procedure TForm FormCreate(Sender: TObject)beginBitBtn Glyph LoadFromFile( TARTAN BMP )end;要保存一个位图则要用SaveToFile方法要把图像复制到剪切板可以调用TClipboard对象的Assign方法TImage部件TImage部件用以在窗体中显示图像它的Picture 属性保存着要显示的图像这是一个TPicture对象AutoSize Stretch属性是用来调节部件与图像的大小的当AutoSize 为真值时TImage部件将根据它所包含的图像的大小来调整自身的大小当AutoSize为假值时不论图像有多大部件将保持设计时的大小如果部件比图像小那么只有一部分图像是可见的当Stretch为真值时位图像将根据部件的大小调整自身的大小当部件大小改变时元文件也做相应变化 Stretch属性对图标没有作用TBitmap Object(位图对象)位图对象包含一个位图图像有HBITMAP HPALETE句柄可自动管理调色板位图对象也有画布属性位图的Palette属性用来控制位图的颜色映射它包括种可显示的颜色如果应用程序用前景色绘制位图Palette 属性的颜色将被加入Windows系统调色板其它颜色被映射到系统调色板已存在的颜色如果应用程序用自己的颜色绘制位图而其它程序已占有系统调色板位图的颜色将被映射到系统调色板中如果Monochrome属性设置成假位图将显示成彩色反之显示成黑白色调用Draw和StretchDraw方法可在画布上绘制位图图像对象的应用本章例程中单击(文件|浏览)菜单项将弹出一个图像浏览窗体如果用户在窗体中选择文件列表框的图形文件窗体右上角的图像部件上将出现此文件所代表的图像若选择雕刻效果按钮中检查框窗体中的加速按钮和位图按钮上将出现位图以下代码是将图像文件装载至图像部件上procedure TImageForm FileListBox Click(Sender: TObject)varFileExt: string[ ];beginFileExt := UpperCase(ExtractFileExt(FileListBox Filename))if (FileExt = BMP ) or (FileExt = ICO ) or (FileExt = WMF )thenbeginImage Picture LoadFromFile(FileListBox Filename)Label Caption := ExtractFilename(FileListBox Filename)if (FileExt = BMP ) thenbeginLabel Caption := Label Caption +Format((%d x %d) [Image Picture Height Image PictureWidth])ViewForm Image Picture Bitmap := Image Picture Bitmap;ViewAsGlyph(FileExt)end;if FileExt = ICO then Icon := Image Picture Icon;if FileExt = WMF thenViewForm Image Picture Metafile := Image Picture Metafile;end;end;这个过程首先判断文件类型如果是图像文件则将图像装载至图像部件上并在标签上列出文件名称如果是位图文件还将显示其大小lishixinzhi/Article/program/Delphi/201311/25244。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Delphi 基础教程 第二章 Delphi面向对象的编程方法(二) {2004-1-21} 2.1.2.2 预定义类型 Integer整形 的范围是-32768到32767,占2字节的内存; Shortint 从-128到127,占1字节内存; Longint 从-2147443648到2147483647 占4字节内存; Byte 从0到255,占1字节; Word 从0到65535,占2字节内存。它们都是没有小数部分的数字。 Single 实型可以包含7到8位有效小数部分,占用4字节的内存; Double 类可以包含15到16位有效小数部分,占用8字节的内存; Extended 类型包含19到20位有效小数部分,占用10字节内存; Comp 可以包含19到20位有效小数部分,占用8字节内存。 以上实数类型只有在8087/80287选项[N+]打开才可以使用。Real可以包含11到12位有效小数部分,占用6字节内存。它只有在和以前Borland Pascal兼容的情况下才使用,否则应使用Double或Extended。 Boolean布尔 只包含true或False两个值,占用1字节内存。 Char字符 一个ASCII字符;字符串类型String一串最长可达255个ASCII字符。 Pointer指针 可以指向任何特定类型。 PChar字符串 是一个指向以零结尾的字符串的指针。 2.1.9.1 枚举类型 一个枚举型的说明列出了所有这种类型可以包括的值,括号中的每一个值都有一个由说明它的位置决定的整形值。例如Sunday有整形值0,Monday有整形值1等:

type Tdays=( Sunday ,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday);

2.1.9.2 子界类型 子界型是下列这些类型中某范围内的值:整形、布尔量、字符型或枚举型。在您想限制一个变量的取值范围时,子界型是非常有用的,子界型限定了变量的可能取值范围。当范围检查打开时,(在库单元的Implementation后面有{$R*.DFM}字样表示范围检查打开,否则您可以在Options|Project|Complier Options中选择Range Cheking来打开范围检查),如果变量取到子界以外的值,会出现一个范围检查错误。:

type Thours = 0..23; TValidLetter = 'A' .. 'F'; 2.1.9.3 数组类型 数组可以是多维的,下面的类型定义了一个20行、20列的数组。例程:

type Ttable = array[1..20,1..20] of Double; var table1:TTable;

想将这一表格的所有数据初始化为0.0,您可以使用for循环: var Col,Row:Integer; „ for Col :=1 to 20 do for Row := 1 to 20 do Table1[Col,Row] := 0.0; 2.1.9.4 字符串类型 字符串类型事实上是一个一维的字符数组,您应当指明这个字符串的大小,下面是说明字符串类型的例子,如果您没有说明字符串的大小,Delphi会认为字符串包含最大值255个字符。给字符串赋值可以直接使用单引号括起的字串赋值: type MyString: string[15];

2.1.4 跳转语句 If 语句可以嵌套,当使用复合语句表达时,复合语句前后需加上begin„end。else保留字前不能加“;”,而且,编译器会将else语句视为属于最靠近的if语句。必要时,须使用begin„end保留字来强迫else部分属于某一级的if语句。 Case 例句: case Number of 1,3,5,7,9: Label2.Caption := '奇数'; 0,2,4,6,8: Label2.Caption := '偶数'; 10..100: begin Label2.Caption := '在10到100之间'; Form1.Color := clBlue; end; else Label2.Caption := '大于100或为负数'; end; 2.1.5 循环语句 repeat、while和for语句 repeat语句会重复执行一行或一段语句直到某一状态为真。语句以repeat开始,以until结束,其后跟随被判断的布尔表达式,至少会被执行一次。 例程: i := 0; repeat i := i+1; Writen(i); until i=10; while表达式在循环的开头进行判断,while保留字后面必须跟一个布尔表达式。例程: i := 0; while i<10 do begin i := i+1; writeln(i); end; for语句的程序代码会执行一定的次数。它需要一个循环变量来控制循环次数。例程: var i : integer; for i := 1 to 5 do writeln(i); 如果您知道循环要执行多少次的话,可以使用for语句。for循环执行速度快,效率比较高。如果您不知道循环要执行多少次,但至少会执行一次的话,选用repeat..until语句比较合适;当您认为程序可能一次都不执行的话,最好选用while..do语句。 2.1.8.6 过程和函数的参数 数值参数在运行过程中只改变其形参的值,不改变其实参的值,即参数的值不能传递到过程的外面,如果您想改变传入的参数值,就需要使用变量参数,即在被调用程序的参数表中的形参前加上保留字var。如果当过程或函数执行是要求不改变形参的值,最保险的办法是使用常量参数,在参数表的参数名称前加上保留字const。 {2004-1-22} 2.2.4 对象公有域和私有域的说明 您可以在对象的Public或Private部分加入新的数据域和方法,在public部分中说明其它库单元中对象的方法也可以访问的数据域或方法。在private部分的说明有访问的限制,只能被本库单元方法访问的数据域和本库单元对象访问的方法。过程或函数的程序代码可以放在库单元的implementation部分。 每一个过程或函数都以标题开始,其中包括过程或函数的名称和它使用的参数。过程以保留字procedure开始,函数以保留字function开始。参数位于括号里面,每一个参数以分号分隔。例如: procedure validateDate(Day : Integer; month : Integer; Year : Integer); 您也可以将相同类型的参数组合在一起,则上述过程头写作: procedure ValidateDate(Day, Month, Year : Integer); 函数在标题中还多了一项:返回值的类型。下面是一个返回值为Double型的函数标题: function CalculateInterest(principal,InterestRate:Double):Double; 一个过程或函数程序模块也含有说明部分和语句部分。说明部分可以包括类型说明、变量说明、常量说明等。除了Object Pascal语言中已经定义的类型之外,Delphi的应用程序还可以建立新的数据类型。类型说明部分有保留字type开始。下面是一些类型的说明: type Tcount = Integer; TPrimaryColor = (Red,Yellow,Blue); TTestIndex = 1..100; TTextValue = -99..99; TTestList = array [TTestIndex] of TTestValue; TCharVal = Ord('A')..Ord('Z') ; Today = (Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday) ; 在类型标识符后面,用“=”号定义了新的类型。类型界定了变量的取值范围,例如,TCount类型的变量必须是整形值;一个TPrimaryColor类型的变量只能是red、yellow或blue等等。每一个类型的名称都是由字母T开始,这并非必须的,但它是Delphi的惯例,在区别类型名和标识符时非常有用。类型说明可以是局部的,也可以是全局的。如果您把它放在implementation后面,则表明对于库单元来讲,它是全局的,所有的事件处理过程和其他的过程、函数都可以调用它。如果类型是在过程中被说明的,则是局部的,离开这一过程,该类型将失效。 一般来讲,在过程和函数中,任何类型说明都在变量说明之前,而任何变量说明都在常量之前。但是,只要遵从说明必须在过程与函数的标题之后,而且在程序代码之前,即是有效的。 在Implementation后面的过程和函数,可以且只能被此库单元的事件处理过程使用。要让过程和函数可以被其他的程序库单元使用,则需要将过程或函数的标题部分放在库单元中的interface部分,而把含标题的整个过程或函数放在库单元的inplementation部分,并在要访问这个过程或函数的库单元的uses子句中加入说明这个过程或函数的库单元名称。 在递归调用中,函数要进行前置,即在函数或过程的标题部分最后加上保留

相关文档
最新文档