快速开发技能工具―Delphi教学课件电子教案全套课件_第1页
快速开发技能工具―Delphi教学课件电子教案全套课件_第2页
快速开发技能工具―Delphi教学课件电子教案全套课件_第3页
快速开发技能工具―Delphi教学课件电子教案全套课件_第4页
快速开发技能工具―Delphi教学课件电子教案全套课件_第5页
已阅读5页,还剩361页未读 继续免费阅读

下载本文档

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

文档简介

第一章

Delphi7.0集成开发环境第二章

面向对象基础知识和Windows程序开发初步第三章

Object

Pascal语言基础第四章

常用控件的使用第五章

程序的调试和异常处理第六章

数据库程序开发第七章

项目实例1-系部图书管理系统第八章

项目实例2-小区物业管理系统第九章

项目实例3-Delphi控制Excel第十章

项目实例4-DVD租赁管理系统第一章

Delphi7.0集成开发环境Delphi

7.0概述Delphi

7.0的安装与启动Delphi

7.0的集成开发环境Delphi

7.0概述强大的可视化编程环境高效的编辑器网络通讯方面数据库方面丰富的VCL控件库Model

Maker工具Rave报表设计器Delphi编译Delphi的安装与启动软硬件环境要求Delphi

7的安装Delphi

7的启动1.2.1软硬件环境要求硬件要求:CPU在Intel

Pentium

233以上内存在32M以上(建议使用128M以上的内存)100MB以上的硬盘空间软件要求:要求安装Windows

98或更高版本的操作系统1.2.2

Delphi

7的安装过程启动Windows

2000,在CD—ROM驱动器中放入Delphi

7企业版光盘,使其自行运行安装程序安装初始界面安装类型:典型安装(Typical):

安装用户最常用的部分。压缩安装(compact):

仅仅把运行Delphi7所必须的文件安装到用户的硬盘上。自定义安装(Custom):安装程序以对话框的形式要求程序设计人员按自己的需要选择安装Delphi

7的构成部分。安装类型选择1.2.3

Delphi

7的启动菜单栏工具栏对象树形查看器对象编辑器代码编辑器窗体设计器控件页运行界面单击Delphi

7的桌面图标或单击【开始】|【程序】|【Borland

Delphi

7】|【Delphi

7】命令运行Delphi

7应用程序,进入集成开发环境。1.3

Delphi

7的集成开发环境菜单栏File(文件):新建、打开和保存单元文件和工程;Edit(编辑):编辑代码和各种控件;Search(搜索):代码编辑器中代码的查找、替换和定位;View(视图):打开环境窗口、单元文件、窗体文件;Project(工程):管理工程文件、编译工程文件和工程设置;Run(运行):程序调试;Component(组件):建立、安装组件和设置控件页属性;Database(数据库):提供数据库应用程序的各种工具;Tools(工具):进行Delphi编程环境设置、图标编辑、报表制作等;Window(窗口):提供不同窗口的切换;Help(帮助):提供Delphi的帮助信息。工具栏打开保存打开项目全部保存帮助从项目移走添加到项目查看单元文件查看窗体

新窗体单元文件/窗体切换单步运行暂停运行跟踪运行新建控件页控件分类选项卡上一类控件一个具体控件:

Button按钮控件下一类控件对象编辑器主要功能:修改窗体及其包含的对象属性;通过自动代码生成机制使对象响应相应的事件。对象列表框:对象列表是一个下拉列表框,包含了当前窗体上的所有控件。属性选项卡(Properties):或称属性页,列举了当前所选中的控件对象的属性。它有两个部分组成,左侧是控件对象的属性名,右侧为相应属性的取值。事件选项卡(Events):或称事件页,设置控件的事件处理程序。显示出控件对象可以响应的所有事件列表,它有两个部分组成:事件名和事件处理方法。代码编辑器主要用于编辑程序文件、单元文件和文本文件。支持代码和对象的剪切、复制和粘贴操作。编写程序时,注意窗口的标题栏所显示的被编辑的文件名称。开发环境设置设置工具栏查找控件和控件页设置工程管理可以打开工程管理器(Project

Manager)Delphi

7的工程管理器通过工程组进行管理,列出了反映各工程之间的联系的树状表,使用户可以很直观的找到各工程直接的联系,方便地将相互联系的工程中共同使用的动态链接库文件与可执行文件组织在一起。第二章

面向对象基础知识和Windows程序开发初步面向对象基础知识一个简单的Delphi程序2.1

面向对象基础知识面向过程思想(结构化程序设计)面向对象对象和类的概念对象的属性对象的方法对象的事件➢对象和类的概念对象:包含现实世界物体特征的抽象实体。类:可以理解为一种类型,是具有相同操作功能和相同数据格式的对象的结合,它是同种对象的高度抽象,包含了所创建对象的属性描述和行为特征的定义。类是对象的定义,而对象是类的一个实例➢面向对象的特性封装性:当用户声明了一个类并在应用程序中创建了该类的具体对象后,用户只要使用对象的属性和方法进行相应的操作,而不必去关心其内部是如何实现的。继承性:类与类之间的继承关系。一个基本的抽象类,是所有下属类的祖先;而位于底部的类继承了其所有上位类属性、方法,但其又有自身特殊的属性、方法。VCL中类的层次关系图VCL是Delphi中预定义的类,使用其中的对象,基本可满足一般程序的编程需求。➢控件页以选项卡的形式分类集中了VCL组件,利用这些组件,用户可以方便地构造自己所需要的界面。对象的三要素:属性、方法和事件对象的属性属性是对象的性质,它说明了对象在运行时如何显示以及它的功能如何,是用来描述和反映对象特征的参数。属性分为三类设计期属性:用户在进行界面设计设计时能显示和发挥作用的属性。运行期属性的值只有在程序运行过程中设定只读属性只可查看,不可更改。➢设置对象属性的方法在设计阶段利用对象编辑器——属性选项卡直接设定对象的属性;在程序代码中通过赋值实现,其格式为:对象.属性:=属性值;对象的方法面向对象的程序设计语言,为程序设计人员提供了一种特殊的已经封装好的过程和函数,称为方法,供用户直接调用。对象方法调用的格式为:对象.方法[参数表];对象的事件对象的事件是指控件在受到激励后执行的动作。这种激励可以是外部的,也可以是系统内部的。Delphi系统为每个对象预先定义好了一系列的事件。在对象编辑器-事件选项卡上可以看到一个对象控件的事件列表。文本框的内容发生改变时触发了onchange事件鼠标单击文本框时触发了

onclick事件文本框在获取焦点状态下,用户按下并且释放一个会产生ASCII码的键时触发了

onkeypress事件鼠标在文本框上按下、鼠标移动到文本框上和鼠标在文本框上按下后抬起时,分别触发了onmousedown、onmousemove和onmouseup事件2.2

一个简单的Delphi程序窗体的概念(TForm)可以作为容器来包容其他种类的控件并协同完成程序的整体功能。1.窗体的重要属性、方法和事件(1)窗体的重要属性Name属性:字符串类型。窗体的Name属性默认值为

“Form1”控件是Delphi构成应用程序的基本单元。控件的Name属性值指明了控件对象的引用名称,Delphi中所有的控件都有Name属性,且Name值不重复。Name属性在应用程序设计期被设置,在程序运行期不能更改。Caption属性:字符串类型。Delphi中许多控件具有可视化的用户界面,如窗体(Form)、按钮(Button)、对话框(Dialog)、标签(Label)等。这些可视化控件的窗口界面需要用字符串来表明其功能,Caption属性反映了这种需求。窗体的Caption属性确定了窗口的标题。Height、Width、Left和Top属性:Height和Width指明了控件的高度和宽度;Left和Top指明了控件在其父容器中的位置。Color属性:用来确定窗体的背景颜色。Font属性:用来确定窗体内控件的字体属性。Cursor属性:用来确定窗体中光标的样式,默认值为“crDefault”。Enabled属性:布尔型。Enabled属性用于设定控件(包括窗体)在程序运行期是否处于有效状态。Enabled

属性是控件中常用的属性,在应用程序中为防止用户的误

操作或是在特定情况下屏蔽某些功能,常常会使用该属性。默认值为“True”。BorderStyle属性:窗体的BorderStyle属性用于确定运行期窗口边界的类型,BorderIcons属性:用于确定窗体标题栏上是否显示系统菜单、最小化按钮、最大化按钮和帮助按钮。Position属性:设计期阶段,用户可以通过Left和Top属性来设置窗体在显示器屏幕上的位置。Visible属性:布尔型。用于确定程序运行时窗体是否可见在Delphi中,运行期可视控件都具有Visible属性。WindowState属性:用于确定程序运行时窗口显示的状态。其取值有:wsMinimized、wsMaximized和wsNormal,分别表示程序运行时窗口处于最小化、最大化和正常状态。默认值为wsNormal。(2)窗体的方法Close方法:用于关闭窗体对象。当应用程序的主窗体调用Close方法关闭后,整个应用程序结束。Hide方法:用于隐藏窗体,相当于程序运行期将窗体的Visible属性置为False。Show方法:用于显示窗体窗口,相当于程序运行期将窗体的Visible属性置为True,并将该窗体置于屏幕上所有窗体的之前,该窗体称为当前活动窗体。SetFocus方法:调用SetFocus方法可将键盘输入焦点定位到窗体上。ShowModal方法:用于以对话框模式显示窗体窗口,

打开的窗口称为模态窗口。Windows的窗体有模态和非

模态的区别。所谓模态窗口就是指如果程序中具有多个窗体,当其中一个窗体处于活动状态时,其他的窗体都处于不可用状态,那么这个窗体就称为模态窗体。例如:打开文件对话框、保存文件对话框、关于对话框等等。当调用Show方法时,如:Form1.Show;则显示的Form1窗体为非模态窗体;要以模态方式显示窗体,则做如下调用:Form1.ShowModal;➢(3)窗体的事件窗体是一个可视化的对象控件,它几乎可以响应和处理所有的事件――外部事件和内部事件。2.在窗体上放置和删除控件添加控件的方法在控件页上选择相应的控件标签,鼠标左键单击某个控

件,使该控件标签处于凹陷状态。然后在窗体上单击鼠标左键,则控件被添加到窗体上。这时添加的控件大小是固定的,且控

件的Left和Top值为鼠标点击处。选择控件页,鼠标左键单击控件,然后在窗体中某个位置按下鼠标左键并拖动,窗体上会产生一个虚框,表示即将放置在窗体上的控件的位置和大小,释放鼠标左键,控件便以指定的大小和位置出现在窗体上。在控件标签上双击某个控件,则该控件自动添加到当前默认的窗口或容器控件中。控件支持剪贴板操作,可以用复制粘贴方式放置一个新控件。首先选中窗体上已有的源控件并复制(快捷键为Ctrl+C),执行粘贴操作(快捷键为Ctrl+V),新的控件将被添加到窗体

上,且它的大小和字体等属性与源控件相同。如想连续添加多个相同的控件,则按下Shift键并单击控件,该控件标签凹陷且周围有浅蓝色边框,然后在窗体上不同位置连续单击鼠标左键,每次单击都将添加一个相同的控件。如要停止添加,单击每个控件页标签最左端的箭头即可。删除窗体上的控件,应遵循先选中后删除的原则单击窗体上欲删除的某个控件,此时控件周围出现八个黑色方块句柄,按Delete键删除。按下Shift键,同时用鼠标单击窗体上的多个控件,使这些控件同时被选中,按Delete键删除。在窗体空白处按下鼠标左键并拖动,将欲删除的控件包含在出现的虚框中,释放鼠标,此时控件被选中,按Delete键删除。如删除的是容器控件,如GroupBox、RadioGroup、Panel等,则包含在该容器中的所有子控件被同时删除。3.改变控件的大小和位置控件在窗体上的大小和位置可以通过设置控件的Height、

Width、Left和Top属性值来完成,除此以外,也可以使用鼠标或键盘操作来改变控件在窗体上的位置和大小。使用鼠标操作时,先选中控件,控件四周出现八个句柄。按下鼠标左键拖动,可改变控件的位置,如将鼠标移动到句柄上,按下鼠标拖动,则可以改变控件的大小;使用键盘操作时,先选中控件,按下“Ctrl键+方向键”可改变控件的位置,按下“Shift键+方向键”可改变控件的大小。4.对齐控件窗体上包含多个控件时,往往需要调整控件之间的相对位置,使得控件在窗体上的排列有一定的规律,可以通过使用Align工具栏或Alignment对话框来调整。(1)使用Align工具栏调整使用以上所述的方法在窗体内选择多个控件,执行View-Alignment

Palette(2)使用Alignment对话框调整控件位置先选中需调整位置的多个控件,执行Edit-Align命令,或在窗体上右击执行弹出菜单中的Position-Align命令,打开Alignment对话框,根据界面设计需要分别在对话框的Horizontal和Vertica选项内选择合适的单选按钮,并单击OK按钮确定,调整窗体内被选择控件的相对位置。5.调整控件在窗体上的叠放次序在窗体上先后放置两个Button按钮控件(Button按钮位于控件页的Standard标签上),分别为Button1和Button2,使得两个按钮的位置如图所示;选中Button2按钮;(3)右击,执行弹出菜单中的Control-Send

to

Back命令,这时Button2按钮被置于Button1按钮后,如图所示。6.调整控件在窗体上的TAB次序程序运行时,不断按下键盘上的Tab键,键盘焦点可在这些控件上停留、按序跳转,获得焦点的控件周围有虚线边框表示。决定键盘焦点是否在控件上停留,以及焦点跳转的顺序是由该控件的TabStop和TabOrder属性决定。TabStop属性决定了键盘焦点是否在控件上停留,其值为布尔型。当取值为False,按Tab键时,该控件不会获得焦点。

TabOrder属性决定了键盘焦点在控件上跳转的先后次序,其值为整型。默认情况下,TabOrder属性值与控件在窗体上添加的先后次序有关,第一个添加的控件,取值为“0”,表示程序运行时该控件优先获得焦点,以后添加的控件,

TabOrder值顺延。调整控件在窗体上的Tab次序的方法通过设定TabStop和TabOrder两个属性值来实现:设计期在属性查看器中改变TabOrder值后,其他控件的TabOrder值将自动作响应的调整。如将属性值从“0”改为“1”,则原先TabOrder属性值为“1”的控件自动变更为“0”,其他控件不变;如将属性值为“2”的控件改为“0”,则原来值为“0”的控件,其

TabOrder属性值自动更改为“1”,原为“1”的控件它的TabOrder属性值自动变为“2”,其他控件不变。一种更为直观的调整Tab次序的方法:在窗体上右击,执行弹出菜单中的TabOrder命令,打开EditTabOrder对话框,如图2.13所示。以图2.12的程序为例,对话框中的列表显示了可获得键盘焦点的所有控件,它们在列表中的上下位置反映了按TAB键后焦点跳转的先后次序,位于列表顶端的Button1按钮(即‘确定’按钮)优先获得焦点,它的TabOrder属性值为“0”。在对话框右侧有两个指示向上和向下的按钮,在列表中选中需要调整Tab次序的控件后,按向上或向下按钮即可直观地调整次序,TabOrder属性值将自动改变。调整后调整前7.锁定控件在应用程序的界面设计完成后,为避免误操作而改变控件在窗体上的相对位置,可以执行Edit-LockControls命令来锁定窗体内各个控件对象的相对位置。如果希望修改控件的位置,再次执行以上命令以解除锁定。8.改变网格大小为了精确地调整窗体上控件的相对位置,Delphi提供了精细的网格(设计期窗体上有细小的浅灰色网格点),网格的大小确定了鼠标拖动控件时每次移动的距离。默认情况下,网格大小设置为8×8个像素。在设计期,用户可以重新设置网格的大小:执行Tools-Environment

Options命令,打开Environment

Options对话框并切换到Designer标签卡;在Grid

options选项中,改变Grid

size的X和Y值,取值范围为[2,128]。第一个例子第一个例子所要达到的功能是:程序运行时(初始状态),窗体界面有两个button按钮,按钮上分别显示“显示”和“退出”。单击“显示”按钮,在窗体上出现“聪明的程序员用Delphi”字样,同时“显示”按钮上的字变成“隐藏”;再次单击“隐藏”按钮,窗体上的文字被隐藏,“隐藏”按钮上的字变为“显示”,即回到程序初始运行状态;单击“退出”按钮则结束应用程序。应用程序(Application)建立的过程如下:新建一个应用程序在窗体上添加控件编写事件代码编译运行程序保存文件一个Delphi工程项目中主要的文件及其说明:文件扩展名文件类型说

明DPR工程文件PAS单元文件文本文件。工程主程序文件,列出工程中所有的窗体、单元和包含应用程序的起始程序文本文件。程序单元源文件,包含单元所有说明和程序,包括事件处理DFM窗体文件RES资源文件二进制文件。包含窗体和窗体内控件对象的特性描述,工程中每一个窗体文件对应一个Pas的单元文件二进制文件。保存着工程项目需要使用的位图、图标等资源~DPR工程文件备份~PAS单元文件备份工程修改后第二次存储时产生,随存储动作而更新。保存了DPR文件最近一次存储前的一个副本保存了PAS单元文件最近存储前的一个副本~DFM窗体文件备份在第二次保存时自动生成,随以后的保存操作而更新EXE可执行文件二进制文件。编译工程文件后生成的可执行文件DCU单元目标文件二进制文件。单元文件经过编译后生成正确的改名方法在Windows资源管理器中双击dpr工程文件,或是先启动Delphi集成环境,再执行File菜单下的Open或OpenProject或Reopen命令,重新打开项目;执行File-Save

As命令,另存单元文件;执行File-Save

Project

As,另存项目文件;回到Windows资源管理器,删除原来的工程文件、单元文件以及系统自动产生的同名文件。编程规范1.命名规范:包括文件命名、常量、变量、函数、过程以及控件对象命名等。(1)文件命名在Delphi中对一个工程保存时,主要是存储工程文件(DPR)和单元文件(PAS),起名时应该用能直接揣摩出文件意义的名称。文件名“FirstUnit”、“FirstProject”以及“AboutFrm”采用了英文词组(或单词缩略,Frm即为窗体Form的简略)命名。在采用词组方式时,单词间不要插入空格,且每个单词的首字母大写,这种方式称为“驼峰格式”。变量、常量、函数、过程命名变量、常量、函数和过程的命名同样也遵循“驼峰格式”,并且名称有一定的意义。控件对象的命名任何一个控件在同一个应用程序中都有一个唯一的名称,用于区分不同的控件,控件对象的命名实际上是对控件的Name属性赋值。控件对象的命名原则是:命名后能从名称上大致理解控件的类型和作用。一个控件对象Name属性:它必须是在同一个应用程序中唯一的(不同窗体间控件的名称可以重复,但调用时要加上窗体名,在此视为控件对象的名称不同)。2.注释为了阅读程序的方便,可以在程序适当的地方加上说明性语句,称为注释。注释不是程序有效的程序代码,程序编译时会自动跳过注释部分,添加注释的目的在于提高程序的可读性。注释部分在Delphi程序代码中以蓝色斜体表示,方式有两种,分别称为块注释和单行注释。3.缩进程序中应当清晰地显示级别不同的代码。通常的做法是每一级都缩进两格(建议不要使用制表符Tab,因为Tab制表符会因每个用户设置的不同而其间隔距离不同)。即,第一级缩进2格,第二级缩进4格……,以此类推。第三章Object

Pascal语言基础控制台应用程序标识符保留字数据类型有序数据类型枚举类型子界类型数组类型指针类型变体类型常量和变量运算符与表达式Object

Pascal语句结构

3.14过程与函数3.1控制台应用程序用Delphi

7创建控制台应用程序。用控制台应用程序进行简单的程序计算。3.2标识符ObjectPascal语言的标识符是由ASCII字符集组成的,用来标识常量、变量、属性、对象、类型、过程、函数、单元等等。标识符的命名规则如下:标识符是由字母(A-Z,a-z)、数字(0-9)或下划线组成。标识符的第一个字符必须是字母(A-Z,a-z)或下划线,不可以是数字。标识符长度不应超过255个字符,如果超过255个字符,则只有前255个字符有效。不能用Object

Pascal的保留字做为标识符。3.3保留字Delphi中有65个保留字,保留字是ObjectPascal语言预定义的具有特殊意义和用途的字符串,不能用保留字作为标识符的名称。Delphi7有39个指令字,这些指令字也具有特定的意义。这些指令字都可以重新被定义,当指令字被重新定义后,在其定义的作用域内,这些指令字就失去了原有的意义.3.4数据类型数据类型可以分为基本数据类型,复杂数据类型,指针类型,变体类型等。分类如下图所示:实型实型是用来存储实数数据的类型。它包括7种数据类型。注意Real类型和Currency类型区别:Real为通用型。Currency类型是专门为处理货币值而设定的,它的精度较高,适合于货币数值的计算,它只有4位有效的小数位数。时间日期型➢时间日期类型实质是实型的一种映射。它的整数部分表示从1899年12月30日以来所经过的天数,小数部分表示经过的时间与24小时之比。如:0表示的时间是1899-12-30

00:00:0038196.32表示的时间是2004-7-28

7:40:48字符串型字符串是用来存储字符串的数据类型。它有短字符串型、长字符串型、宽字符串型、字符串型4种数据类型。通用类型是String型,AnsiString数据类型的定义是动态分配的,长度几乎可以无限。整型整型是存储整数数据的类型。整数类型分为:通用整数类型和基本整数类型。·字符型字符类型只能存储一个字符。字符类型可分为:通用字符类型和基本字符类型。一般情况下常使用char字符类型。·布尔型布尔型可用于逻辑的运算。Boolean类型的取值范围是{False

,

True}。3.5有序数据类型有序数据类型不是一种单独的数据类型。在ObjectPascal语言中,整型、字符型、布尔型、枚举型、子界型都是属于有序数据类型。任何一个有序类型的数据都有一个唯一的数值和它对应。ObjectPascal语言中有多个函数可以进行有序数据类型的计算。在Object

Pascal有Ord(x)、Pred(x)、Succ(x)、High(x)、Low(x)、Inc(x)、Dec(x)等函数。Ord(x)函数:返回的值是有序数据类型表达式的序号,但它不能处理Int64这类的数据。Pred(x)函数:返回的值是表达式的前驱值。第一个值无前驱值。Succ(x)函数:返回的值是表达式的后继值。最后一个值无后继值。High(x)函数:返回的值是表达式所在类型中的最大值。Low(x)函数:返回的值是表达式所在类型中的最小值。Inc(x)函数:相当与Succ(i)。Dec(x)函数:相当与Pred(i)。3.6枚举类型·枚举类型的定义语法格式如下:Type{类型名称=(枚举值1,枚举值2,…,枚举值n)}·枚举类型的运算枚举类型的值实际就是枚举常量,对枚举类型的运算实际是对枚举常量的运算.所有的有序函数,都适用于枚举类型,但是第一个枚举常量没有前驱值,最后一个枚举常量没有后继值。3.7子界类型➢子界类型是由整型、字符型、枚举型、布尔型中某两个常量指定的该类型的值区域.➢子界类型的定义语法格式如下:Type{类型名称=(常量1)..(常量2)};√“类型名称”即用户自定义的子界类型名称,常量1表示子界类型的下界,常量2表示子界类型的上界。注意:常量1和常量2必须属于相同的有序类型,3.8数组类型·静态数组一维数组类型的定语语法格式如下:Type{类型名称=array[下标1..下标2]of基类型};多维静态数组的定义语法格式如下:Type{数组类型名称=Array[下标11..下标12]ofArray[下标21..下标22]…of

Array[下标n1..下标n2]of基类型};·动态数组➢动态数组在使用前并没有说明数组的大小,只是在程序运行当中,根据需要为数组开辟相应的内存空间进行存储。➢一维动态数组的定义语法格式如下:Type{类型名称=array

of基类型};➢二维及多维动态数组的定义语法格式如下:Type{数组类型名称=array

of

array

of…array

of基类型};➢动态数组被定义后,数组的大小具有不确定性,在程序的运行当时可以用SetLength函数来重新分配数据占据空间的大小。·数组元素的访问➢数组类型的变量被定义后,便可以通过数组元素进行访问。➢访问数组元素的语法格式如下:变量名[一维下标[,…n维下标]];√对数组元素的访问是通过变量名,其后加上方括号和下标来表示。3.9指针类型➢指针可以用来表示数据在内存当中的位置。➢有类型指针可以用如下的语法格式进行指针的声明:Type{类型名称=^基类型};√指针类型名称只是一种数据类型,若需要使用此数据类型还必须定义此类型的变量;指针类是由基类型前加上一个“^”符号来表示。3.10变体类型➢变体类型就是在运行期可以改变其数据类型。➢变体类型在声明后初始化一个特殊值Unassigned,它表示此变量还没有被赋值,而当Variant变量为另一个特殊的Null时,则表明Variant变量未知或数据已经丢失。➢变体类型能够表示大部分的数据类型。定义变体类型的语句格式如下:VAR变体类型变量:Variant;3.11常量和变量·常量➢在程序运行中,固定不变的值称为常量。➢常量又可分为直接常量和符号常量。(1)直接常量是在程序中无需定义,可以直接引用的量。(2)符号常量是以标识符的形式出现在程序中,可以用此标识符来替代一个反复出现的一个常数。·变量➢在程序的运行当中,变量的值可以被改变。➢变量的定义语法格式如下:VAR{变量名1,变量2,…,变量m:类型名1};3.12运算符与表达式·运算符运算符是在程序中对各种数据类型进行运算的符号。➢(1)赋值运算符:赋值运算符是用来给变量赋值时使用的运算符。Object

Pascal语言的赋值运算符是用:=来表示赋值。➢(2)算术运算符:算术运算符是用来进行算术运算的符号。算术运算符可以分为一元运算符和二元运算符:一元运算符号只有两个:“+”和“-”,分别用来表示正数和负数。二元运算符有:加法运算符+、减法运算符-、乘法运算符

*、除法运算符/、整除运算符Did、取余运算符Mod。➢(3)逻辑运算符:用来进行布尔操作的运算符。Not(逻辑非):它是一元运算符,将逻辑结果取反。And(逻辑与):有且仅有两个操作数都为真,结果才为真,否则为假。Or(逻辑与):仅当一个操作数为真时,值就为真,否则为假。Xor(逻辑异或):当两个操作数不同时,即一个为True,另一个为False时结果为真,同时为True或同时为False时为假。➢(4)位运算符:位运算符能够按位对操作数进行运算。➢(5)关系运算:用来比较两个变量的值。关系运算符用来比较两个操作数的大小,被比较的两个操作数类型必须相容。若操作数是数值,则按照数值的大小进行比较;若操作数是字符(串),则根据字符的先后顺序按照ASCII值进行比较。·运算符优先级➢优先级的判定一般规则如下:(1)一元运算的的优先级最高。有括号参与运算的表达式,先计算括号内的表达式值,有多对括号,括号由内到外依次运算。运算符的优先等级如上表所示。同一优先级的运算符,按从左到右依次运算。3.13

Object

Pascal语句结构➢ObjectPascal的语句可以写在一行,也可以写在多行,但在每一行末尾都必须加上分号“;”,用来表示一个语句的结束。➢比较复杂的语句必须用begin和end两个保留字围起来。Begin…end之间还可以嵌套Begin…end。➢ObjectPascal语言支持顺序结构、选择结构、循环结构、函数与过程结构等4种语言结构。·

顺序结构➢顺序结构是Delphi语言结构中最简单的一种,它是按照程序书写顺序执行的语句,语句体比较简单,一般都是一行语句做为一个语句体。➢顺序结构是任何程序主体的基本结构,在一般的选择或循环结构中,也是以顺序结构做为基础。语句1语句2·

选择结构——简单IF语句➢IF语句也称为条件语句,是最常见的单条件语句,它的一般语法格式如下:If{条件}Then{语句1}[Else{语句2}];√整个“If…Then…Else…”是一个完整的语句,只能在此语句的结束才加上分号,表示语句结束。·

选择结构——嵌套IF语句IF语句可以嵌套,即IF语句中还可以包含IF语句,语法格式如下:IF{条件1}ThenIF{条件2}Then{语句1}[Else{语句2}][ElseIF{条件3}Then{语句3}[Else{语句4}]·

选择结构——Case语句➢Case语句用以实现程序多分支的选择,结构简单明了,便于理解。➢Case语法格式如下:

Case{选择表达式}of{情况常量表:语句或语句体1;}……{情况常量表:语句或语句体n;}[Else语句或语句体;]End;➢需要注意的是:在Case语句中,只可能执行一个分支,当一个分支被执行后,就直接运行end后的语句。计算表达式的值类型必须与情况常量表中的类型一致,并且同一个情况常量不能出现在两个常量表中。计算选择表达式语句或语句体n+1语句或语句体2语句或语句体n语句或语句体1……情况常量表1情况常量表n情况常量表2Case语句的程序执行流程图·

循环结构——For循环➢For循环是在事先知道循环次数的情况下使用的结构。语法格式如下:For{循环变量=初值}{To|DownTo终值}Do{循环体}循环变量初始化初值与终值比较循环条件判断True循环体循环变量修正FalseFor循环流程图·

循环结构——While循环➢While循环一般在不知道循环次数的条件下使用。➢语法格式:While{条件}Do{循环体};➢While循环中的“条件”是一个布尔类型的表达式,当此条件为真时,则执行循环体。循环条件判断True循环体False

While循环流程图·

循环结构——Repeat循环➢Repeat循环也是在不知道循环次数的条件下使用。➢语法格式:Repeat{循环体}Until{条件};FalseTrue循环条件判断循环体➢Repeat它与While的区别:Repeat循环先执行循环体,后判断循环条件,所以,Repeat循环体至少需要执行一次,而While循环体的循环体可以一次都不被执行。Repeat循环是当“条件”为False时循环,而

While循环是当“条件”为真时循环。Repeat的循环体至少执行一次,而While的循环体可以不被执行。循环的嵌套➢多重循环指在循环体内还包含有另一个循环。嵌套在内部的循环称为内循环,外部的循环称为外循环。➢循环的嵌套需要注意以下:外循环必须完全包含内循环,即循环只能嵌套,不能交叉。内循环变量与外循环变量不能同名。3.14过程与函数➢根据过程或函数体本身是否返回值可以分为过程和函数。➢过程体本身不返回值,函数本身返回值,因此,函数可以直接参与表达式的计算。·

函数的定义➢函数的定义由函数的首部和函数体两个部分组成,➢定义格式如下:Function{函数名}[(形式参数:类型)…(;形式参数:类型):返回类型;[局部变量说明]begin[语句体]end;·

函数的调用➢函数调用的一般形式为:{函数名}({实际参数表});➢当主程序中遇到函数调用时,首先根据函数的定义将函数调用语句的实参依次传递给相应的形参,然后执行函数体内的各语句,最后将函数计算结果通过函数名赋值语句返回到主程序,程序继续执行函数调用后的语句。·

过程与函数——过程➢过程可分为事件过程和通用过程。➢事件过程依附于控件,控件响应相应的事件,既执行相应的过程。➢通用过程由用户自己编写,用来完成用户自定义的过程。·

过程的定义➢过程定义一般格式为:Procedure{过程名}[(形式参数:类型)…(;形式参数:类型)][局部变量说明]begin[语句体]end;·

过程的调用➢对传数值与传地址方式的比较:传数值:当调用一个子过程时,系统将实参的值复制给形参,形参在内存中开辟了一个新的存储单元,实参与形参没有任何的联系。被调用子过程的操作是在形参自己的存储单元中进行,当调用过程结束,形参所占用的存储单元被释放。因此,在子过程体内对形参的任何操作不会影响到实参。传地址:当调用一个子过程时,是将实参的地址传递给形参,形参与实参共同指向同一个内存单元。调用过程中对形参的任何操作变成了对相应实参的操作,实参的值会随子过程体内形参值的改变而改变。·

参数传递➢在函数调用或过程调用过程中,都需要传递一定的参数,在定义函数或过程时出现的称为形式参数,简称“形参”,在调用函数或过程时出现的称为实际参数,简称“实参”。➢参数传递有两种方式,一种为传数值,另一种是传地址。判断参数传递是何种形式,以过程或函数定义时形参前的保留字为依据。➢传数值➢传地址➢对传数值与传地址方式的比较:➢传数值:当调用一个子过程时,系统将实参的值复制给形参,形参在内存中开辟了一个新的存储单元,实参与形参没有任何的联系。被调用子过程的操作是在形参自己的存储单元中进行,当调用过程结束,形参所占用的存储单元被释放。因此,在子过程体内对形参的任何操作不会影响到实参。➢传地址:当调用一个子过程时,是将实参的地址传递给形参,形参与实参共同指向同一个内存单元。调用过程中对形参的任何操作变成了对相应实参的操作,实参的值会随子过程体内形参值的改变而改变。3.15常用算法1.累加和连乘2.穷举法3.最大值和最小值4.数值排序·

1.累加和连乘➢累加:在原有和的基础上一次次的加上一个数,累加((循环)前须设定一个累加和变量,并初始化;累加是在循环体中进行的;循环结束则累加过程结束,累加的和存储在sum中。➢连乘:在原有积的基础上一次次的乘一个数字。连乘(循环)前完成连乘变量初始化,循环连乘以及循环结束后获得连乘结果。例程求1×1/2×1/3×……×1/10的积问题分析:由于所求的问题是一个连乘算法,规律是每次连乘的子项其分母从1开始不断递增1,一直到10,则循环从1到10,将循环变量作为子项的分母,实现连乘计算。程序界面设计:启动Delphi7.0,新建一个应用程序

Application,在窗体上各增加一个Edit1文本框和Button1按钮控件,Edit1用于显示结果;设置Button1控件的Caption属性为“计算”,(3)程序代码在窗体上双击Button1计算按钮,在Button1的onclick事件中书写代码:procedure

TForm1.Button1Click(Sender:

TObject);vari

:integer;

//定义循环变量total

:

real;

//定义连乘变量begintotal:=1;

//连乘变量初始化,通常为1,累加变量初始化通常为0for

i:=1

to

10

dobegintotal:=total

*(1/i);

//连乘

end;Edit1.Text:=FloatToStr(total);

//结果在Edit1中显示end;·

2.穷举法➢穷举算法就是按照问题本身的性质,通过多重循环一一列举出该问题的所有可能解,不能遗漏也不能重复,并在逐一列举的过程中,检验每个可那的解是否是问题的真正解,若是,则采用这个解,否则抛弃。例程,百元买百鸡问题(1)问题描述:百鸡问题是我国古代数学家张丘建所著《算经》中的一道解不定方程的问题。题意:公鸡每只5元,母鸡每只3元,小鸡每三只1元。用100元买100只鸡。问公鸡、母鸡、小鸡各买多少只?(2)问题分析设公鸡有i只,母鸡j只,小鸡k只,如果使用方程组求解,可以列出如下的方程组:i+

j

+

k

=

1005×i

+

3×j

+

(1/3)×k

=

100可见,这是一个不定方程组,结果有多个解集。如果采用穷举法,只需对i,j,k循环取可能的值,每次取值结果用表达式(i*5+j*3+k*1/3=100)And

(i+j+k=100)判断,如果成立,表示找到了一个解。故程序使用一个三重循环来求解。(3)界面设计在应用程序窗体上添加一个Memo控件(位于Standard控件页

)和一个Button按钮,设置Button按钮的Caption属性为“求解”,Memo控件的Lines属性设为空。当点击“求解”按钮后,计算结果显示在Memo中。(4)程序代码为Button按钮的onclick事件编写代码:procedure

TForm1.Button1Click(Sender:TObject);vari,j,k:integer;//i,j,k分别表示公鸡、母鸡和小鸡的只数beginfor

i:=0

to

20

dofor

j:=0

to

34

dofor

k:=

0

to

100

doif

(i*5+j*3+k*1/3

=

100)

and

(i+j+k=100)

then//如果条件满足,将结果添加到Memo中Memo1.Lines.Add(IntToStr(i)+""+IntToStr(j)+"

"+IntToStr(k));end;·

3.最大值和最小值➢基本思想:通过循环做数的两两比较,一旦发现有更大(或更小)的数后,将该数作为后续数比较的基数。➢求最大值,通常循环比较前先假定一个足够小的数为最大数(max),如果无法估计较小的值,可以取第一个数为最大值作为初值,然后将每一个数与最大值比较,若该数大于最大值,将该数替换为最大值,依次逐一比较。例程,输入10个大于0-100之间的整数,求解最大值。问题分析:求最大值问题,循环前设定一个max变量,并初始化为

“-1”,将后续接收的10个数逐个与max比较,以求得最大值。界面设计:当点击Button1按钮后,连续10次弹出输入数值的对话框,输入一个判断一个,直到10个数输入结束,最大值结果在Edit1中显示。程序中用到了数值输入对话框,使用Delphi提供的“InputBox()”函数,其原型为:function

InputBox(const

ACaption,

APrompt,

ADefault:

string):string;(3)代码编写主要事件为“开设连续输入10个整数”按钮的onclick事件,代码如下:procedure

TForm1.Button1Click(Sender:

TObject);vari:integer;

//定义循环变量max,temp:integer;//定义最大值变量和临时变量beginmax:=-1;

//最大值变量初始化for

i:=1

to

10

dobegin//InputBox返回的值赋值给临时变量temptemp:=StrToInt(Inputbox("输入",Pchar("输入第"+IntToStr(i)+"个数"),"0"));if

temp>max

then

//max与临时变量的比较,max中始终存放最大值max

:=

temp;end;Edit1.Text:=IntToStr(max);

//将最大值结果由Edit1显示

end;程序中将最大值变量max初始化为-1,若把该变量初始化为100的话,能得到正确的最大值吗?·

4.数值排序

排序就是将一组任意序列的数据元素,重新排列成一个按关键字排列的有序序列。比如按数值的大小递增或递减排列。

算法思想:首先在所有数值中选出最小值,把它与第一个值交换,然后在其余的数中再选出次最小的数与第二个数交换,依此类推,直到所有数排序完成。例程,输入10个整数,用选择排序算法从小到大排序。(1)问题分析:为明晰选择算法思想,分析时先简化问题的规模,假设有6个数字,值分别为“5,9,8,7,3,6”,根据算法,有如下的排序过程:原始数据598736第1轮排序398756(3最小,与第1位的5位置互换,3不参与下论排序)第2轮排序358796(5最小,与第2位的9位置互换,5不参与下论排序)第3轮排序356798(6最小,与第3位的8位置互换,6不参与下论排序)第4轮排序356798(7最小,与第4位的7位置互换,7不参与下论排序)第5轮排序356789(8最小,与第5位的9位置互换)排序结果3

5

6

7

8

9

(2)界面设计:连续输入10个整数后将排序结果显示在文本框Edit1中。(3)代码编写因输入的10个数参与排序并输出,故每次从InputBox获得的数须存入一个定义的数组中第四章

常用控件的使用文本输入控件按钮类控件列表类控件分组控件信息显示控件菜单与工具栏控件对话框控件其他控件控件是在面向对象程序设计一种可视对象,函数被

“封装”在Windows编程所必需的对象中,只要在提供的框架中添加实现功能的代码,如点击按钮、移动鼠标等,而不必考虑按精确次序执行的每一个步骤。控件的状态信息、动作信息、反馈信息,分别对应对象的属性、方法、事件。常用控件的功能:Standard:标准的Windows控件,比如按钮、单选按钮,菜单;Additional:为应用程序专门设计的Windows控件;Win32:Windows

95/NT

4.0常用控件;System:系统级访问所需控件,例如计时器、文件系统、多媒体播放控件;Internet:管理Client/Server应用所需的控件;Data

Access:数据库存取控件;Data

Controls:数据库感知控件;Rave:报表制作控件,Delphi7.0中已默认安装,简单易用;Dialogs:Windows通用对话框;4.1文本输入控件:文本操作相关的控件Edit:对单行文本进行编辑,位于Standard控件页上;

MaskEdit:掩码编辑框,按照预选指定的格式输入单行文本,位于Additional控件页上;Memo:对多行文本进行编辑,位于Standard控件页上;

RichEdit:显示、编辑具有丰富文本格式的文件,位于Win32控件页上;

UpDown:通常与一个TEdit控件组合使用,通过上下箭头按钮对文本框内的数值调整,位于Win32控件页上。4.1.1

Edit和MaskEdit·

单行文本编辑框Edit——主要属性属性名称属性类型说明AutoSelectBoolean表示编辑框得到焦点的同时,文本能否被自动选中AutoSizeBoolean编辑框的大小是否自动随文字大小的变化而变化EnableBoolean表示编辑框是否可用BorderStyle枚举型编辑框的边框类型MaxLengthInteger表示所最多能够输入的字符串长度CharPasswordCharReadOnlyBoolean用户所输入的字符将被该属性指定的字符所掩盖,通常在使用编辑框输入口令时使用编辑框的状态是否为只读SelStartSelTextSelLengthIntegerStringInteger光标当前所处位置表示被选中的文字被选中的字符串的长度TextCharCaseStringTeditCharCase编辑框中的文本数据表示编辑框中文本的大小写状态单行文本编辑框Edit——编辑框的使用

编辑框的Text属性决定了编辑框中所显示的内容。Text属性可以在设计阶段进行修改,或者在程序运行过程中通过代码动态设置,也可以在运行时由用户输入。例程4.1:输入圆的半径,根据圆的半径计算并且输出圆的周长以及面积。创建应用程序界面,新建一个工程,进入窗体设计器当中,增加三个标签控件,三个编辑框控件,以及一个按钮控件设置窗体中对象的属性为相应的事件过程编写代码例程4.2:在编辑框中输入英文单词,实现将单词中的小写字母转化成为大写字母和将单词中的大写字母转化成为小写字母的功能。创建应用程序界面,新建一个工程,进入窗体设计器当中,在窗体中增加一个标签,一个编辑框,以及两个按钮,设置窗体中对象的属性,编写代码。·

掩码编辑框MaskEditMaskEdit控件是一种格式化的编辑框,它的主要作用为以一定的格式规范用户所输入的数据。掩码编辑框隶属于类TmaskEdit,TmaskEdit继承了Tedit的所有属性、事件和方法。掩码编辑框MaskEdit——主要属性EditMask为掩码编辑框的掩码字符串属性,主要用于确定输入数据的格式以及风格。取值主要划分成为三个部分,并且用分号隔开,其中第一部分是掩码字符串的主要部分,它确定了数据的格式,第二部分确定了是否将掩码中的字符串作为数据的一部分,第三部分代表了掩码中将要输入的数据的占位符。掩码编辑框MaskEdit——MaskEdit的使用掩码输入的格式定义是使用Input

Mask

Editor对话框来设置的。打开Input

Mask

Editor对话框的方法有如下两种:窗体上选中EditMask控件,在对象编辑器中选择EditMask属性,单击属性值旁所对应的按钮;右击EditMask控件,在弹出菜单中执行Input

Mask

Editor…命令,打开Input

Mask

Editor对话框。使用时可以选择一个Delphi所提供的样本掩码,也可以自己设定特殊的掩码字符串。4.1.2

Memo和RichEdit·

多行文本编辑框Memo➢当需要处理备注类型的多行文本时可以选用Memo控件,但

Memo控件只能显示单一的一种字体格式,如果想使文本的字体多样化,可以选择RichEdit控件。➢Memo控件隶属于Standard控件页中。多行文本编辑框Memo——主要属性(1)Lines属性:

Lines是用于处理Memo对象中文本内容的属性,类型为

Tstrings,即字符串数组类型:其类型定义为:property

String[Index:Integer]:string;Index表示字符串数组的索引,

Lines作为一种对象又有其自身的方法——Add方法、

Delete方法、Insert方法、Move方法:(2)ScrollBars属性ScrollBars属性用于控制滚动条的状态,取值分别为:取值说明ssNone无滚动条ssHorizontal仅有水平滚动条ssVerticall仅有垂直滚动条ssBoth同时具有水平垂直滚动条(3)WantTabs属性

如果将WantTabs属性设置为True时,在文本当中使用Tab键就可以进行文本编辑。如果想要使得焦点从Memo控件切换到其他控件,就必须要使用Ctr+Tab组合键来完成操作。多行文本编辑框Memo——使用例程4.3:对Memo控件中的文本进行编辑,其中包括:剪切、复制、粘贴、删除操作。(1)创建应用程序界面,在窗体设计器中添加一个Memo控件,四个

Button控件,并且分别将四个按钮控件的Caption属性设置为“剪切”、“复制”、“粘贴”和“删除”,将Memo1控件的Lines属性设置为所需要的文字,(2)分别为四个按钮的单击事件编写代码:“剪切”按钮的单击事件为:procedure

TForm1.Button1Click(Sender:

TObject);beginMemo1.CutToClipboard;end;“复制”按钮的单击事件为:procedure

TForm1.Button2Click(Sender:TObject);beginMemo1.CopyToClipboard;end;“粘贴”按钮的单击事件为:procedure

TForm1.Button3Click(Sender:

TObject);beginMemo1.PasteFromClipboard;end;“删除”按钮的单击事件为:procedure

TForm1.Button4Click(Sender:TObject);beginMemo1.SelText:="";end;·

丰富文本编辑框RichEdit1.常用属性SelStart以及SelLenght属性:分别表示被选中文字的起始位置和长度。DefAttributes和SelAttributes属性:分别为默认字体的样式和被选中文字字体的样式。Paragraph属性:光标以及别选中的文字所在位置的段落属性。2.丰富文本编辑框RichEdit的使用

RichEdit控件与Memo控件类似,不同之处在于

RichEdit可以对所输入的文字单独进行字体的设置,类似于Microsoft

Office中的Word,该控件在Win32组件面板中。例程4.4:对RichEdit控件中输入的文字进行字体的设置(1)创建应用程序界面,在窗体设计器中添加一个RichEdit控件,以及六个按钮控件,将三个按钮控件的标题(Caption)属性分别设为“红”、“黄”、“蓝”、“隶书”、“宋体”以及“幼圆”,将RichEdit控件的Lines属性设为空,Font属性中的size(即字体大小)设为“24”,“红”、“黄”、“蓝”按钮用于设置选中文字的颜色,“隶书”、“宋体”以及“幼圆”按钮设置被选中文字的字体样式。(2)编写按钮所对应的事件的代码:

单独设置RichEdit控件中所选定的文本的字体时,需要使用到

SelAttributes属性,该属性表示当前选中文字的属性,其中

Color表示选中文字的颜色,而Name表示选中文字的字体样式。三种颜色所对应的按钮的单击事件为:procedure

TForm1.Button1Click(Sender:TObject);//红色按钮beginRichEdit1.SelAttributes.Color

:=

rgb(255,0,0);end;procedure

TForm1.Button2Click(Sender:TObject);//绿色按钮beginRichEdit1.SelAttributes.Color

:=

rgb(0,255,0);end;procedure

TForm1.Button3Click(Sender:TObject);//蓝色按钮beginRichEdit1.SelAttributes.Color

:=

rgb(0,0,255);end;三种字体按钮所对应的单击事件为:procedure

TForm1.Button4Click(Sender:

TObject);beginRichEdit1.SelAttributes.Name:="隶书";end;procedure

TForm1.Button5Click(Sender:

TObject);beginRichEdit1.SelA:="宋体";end;procedure

TForm1.Button6Click(Sender:

TObject);beginRichEdit1.SelA:="幼圆";end;4.1.3

UpDown控件作用:通过点击上、下按钮来设定连续的数值。

通常将UpDown控件与一个Edit控件相关联,当点击

UpDown控件的上下按钮时,编辑框中的数值会发生连续的变化。该控件隶属于Win32控件页中。1.UpDown控件的主要属性Min、Max、Position属性:分别表示上下按钮所能进行数值调整范围中的最大值、最小值以及当前值。Associate属性:该属性指明与UpDown控件相关联的控件,通常情况下,将UpDown与单行编辑框控件相关联。AlignButton属性:该属性决定了UpDown与相关联控件之间的位置关系,其取值分别为udLeft以及udRight,分别表示左侧与右侧。Increment属性:该属性表示在数值调整范围以内,当前值变化的步长,即用来控制Position属性的增量,其默认值为1。Orientation属性:该属性指明了按钮的排列方式,分别为udHorizontal、udVertical,即水平、垂直方向的排列。Wrap属性:当Wrap属性的值为真时,Position的取值会在最小值和最大值之间连续变化,其默认值为false。2.UpDown控件的使用例程4.5,利用UpDown控件进行颜色合成。(1)创建应用程序界面,在窗体设计器中添加三个标签控件,并且分别将Caption属性设置为“红”、“绿”、“蓝”;添加三个编辑框以及三个UpDown控件,通过设置UpDown控件的Associate属性,分别将三对UpDown控件与编辑框进行关

联;分别将三个UpDown控件的Min、Max、Position属性设置为0、255、0。在窗体上添加一个shape控件(位于Additional控件页),改变红、绿、蓝UpDown的position值,使得颜色在Shape中显示。(2)颜色合成的效果显示在Shape控件中,根据三个

UpDown控件的position属性决定了Shape控件颜色中的红、绿、蓝的分量。当UpDown控件发生改变时,Shape控件的颜色也会发生相应的变化,因此在编写代码时需要调用Shape控件。三个UpDown控件的onchange事件的代码如下:procedure

TForm1.UpDown1Changing(Sender:

TObject;var

AllowChange:Boolean);beginShape1.Brush.Color

:=rgb(UpDown1.Position,UpDown2.Position,UpDown3.Position);end;procedure

TForm1.UpDown2Changing(Sender:

TObject;var

AllowChange:Boolean);beginShape1.Brush.Color

:=rgb(UpDown1.Position,UpDown2.Position,UpDown3.Position);end;procedure

TForm1.UpDown3Changing(Sender:

TObject;var

AllowChange:Boolean);beginShape1.Brush.Color

:=rgb(UpDown1.Position,UpDown2.Position,UpDown3.Position);end;当设定UpDown控件的Min属性为0时,其Positon属性取值自动与Min的值保持一致(如果未设定Position的值)。程序运行时,UpDown1、UpDown2、UpDown3的Position都为0,Shape1的颜色应该是rgb(0,0,0)黑色。因此在程序的

FormCreat事件中增加如下代码:procedure

TForm1.FormCreate(Sender:

TObject);beginShape1.Brush.Color

:=

rgb(UpDown1.Position,UpDown2.Position,UpDown3.Position);end;4.1.4

应用实例-例程4.6:统计字符数量1.实例功能:实现一个类似记事本并且含有字符统计功能的工具,首先将所要统计的文字导入至窗口中的文本区域中,然后点击“统计”按钮后,在文本中的字母以及汉字的数量就能够显示在窗口的编辑框中。2.设计思路:该实例应用到了Memo控件的属性以及各种常用方法,如:CuttoClpboard(剪切)、CopytoClipboard(复

制)、PastfromClipboard(粘贴)功能。在统计时,程序将Memo1控件中所输入的字符串中每一个字符做一个判断,判断的累计结果分别显示在两个编辑框中。其中Ord函数用于得到字符的ASCII码值,如果当前字符的ASCII码值处在33至126之间,那么该字符就被认定为英文字符或数字,否则该字符表示二分之一个汉字。3.控件的属性控件属性取值Memo1Lines默认值为’memo1’,将其置空Button1Caption“复制”Button2Caption“粘贴”Button3Caption“剪切”Button4Caption“统计”Edit1Text“英文字符数”Edit2Text“汉字数”4.程序代码(略)4.2按钮类控件常用的按钮类控件:Button:最常用的按钮控件,在按钮上提供简单的提示信息,位于Standard控件页上;BitBtn:图形按钮控件,与Button按钮类似,但可在按钮上增加图形提示,位于Additional控件页上;SpeedButton

温馨提示

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

评论

0/150

提交评论