【文档说明】Visual-FoxPro-程序设计教程课件——面向对象的程序设计.ppt,共(52)页,862.000 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-44922.html
以下为本文档部分文字说明:
第八章面向对象的程序设计8.1面向对象的概念8.2VFP中的基类8.3创建表单8.4操作表单8.5表单常用控件8.6VFP中类的建立第八章面向对象的程序设计8.1面向对象的概念面向对象编程
用“对象”表现事物,用“事件”表示处理事物的动作,用“方法”表现处理事物的过程。面向对象程序设计时,不再是单纯地从代码的第一行一直编写到最后一行,而是考虑如何创建对象,利用对象来简化程序设计。VisualFoxPro不但仍然支持
标准的结构化程序设计,而且在语言上还进行了扩展,提供了面向对象程序设计的强大功能和更大灵活性。VFP是面向对象(ObjectOriented)的,是以事件驱动为运行机制的。对象与类是面向对象方法的两个最基本的概念。1、对象:•从程序员的
角度:世界上一切东西都是对象;•在面向对象系统中一切成分都是对象,大到整个系统、项目、数据库、表、表单,小到窗口、控件都被视为对象。从程序的角度:对象是一个实体,包含一定的属性和方法(动作),并且能够
对外界事件进行响应。对象把一组相关信息,以及作用于这组相关信息上的行为组合在一起,封装了数据和行为。2、对象的属性、方法和事件描述对象特征的数据称为“属性”,对象可以识别和响应的一个外界(用户或者
系统)发出的动作称为“事件”,对象自身的行为和动作称为“方法”。对象是属性、事件和方法的集合体,用户通过对对象属性、事件和方法的使用来处理对象。例如,一个按钮就是一个对象。按钮的名称、位置、和颜色都是按钮对象的“属性”;用鼠标点击按钮产生按钮
的Click(单击对象)“事件”,并驱动该事件的代码程序。如果在按钮单击事件中要关闭数据表,则调用系统提供的Release“方法”程序(该方法将关闭释放当前表单)。对象属性访问格式:<对象引用>.<对象属性>对象
方法调用格式:<对象引用>.<对象方法>事件驱动程序既能在事件触发时执行,也能在代码中显式调用。事件的调用格式:<对象引用>.<事件>每个类产生的对象都具有由系统预定义的属性、方法和事件,并具有系统给定的默认值或者默认过程。在VFP中可以为对象定义新的属性和方法,但是不能定义
新的事件。•3、类:•同类型的对象具有相同的属性和行为。(属性不是属性值)•把具有相同属性和行为的同种类型的对象称为“类”。•“类”是同类型对象的抽象;对象是“类”的具体化,是将类所描述的共同特征赋予具体实体而形成的,是类的一个实例;一个类可以拥有成千上万个类的对象。•vfp
系统预先定义了29个基类。使用基类的两种方法:•用基类生成对象;•用基类派生出其他新类,已有的类称为父类,由父类派生出的新类称为子类。子类继承了父类的全部属性和方法,也可以为新类添加新的属性和方法8.2VisualFoxPr
o中的基类基类分为容器类和控件类,相应的对象分为容器对象和控件对象。容器对象可以包含其它控件或容器,被称为其所包含的对象的父对象。控件对象不能容纳其它对象,通常放在容器中,以图形化的方式显示出来,形成可视化的程序运行界面,并与用户进行交互操作。不同的容
器可以包含不同的对象,容器也可以包含容器,形成了对象的嵌套包含关系。要引用某个对象,必须指明这个对象在对象嵌套包含关系中的位置。1.Parent:对象的一个属性,指明该对象的直接容器对象。2.This:代表当前对象的关键字。3.ThisForm:代表当前对象所在
表单的关键字。4.ThisFormSet:代表当前对象所在表单集的关键字。Ex:Cmd1.Parent.Caption="myObject“This.Caption="myObject"ThisForm.C
aption="myObject"ThisFormSet.Frm1.Cmd1.Cpation="myObject"8.3创建表单表单设计的两种工具:表单设计器与表单向导一、表单设计器:1.菜单方式“文件”“新建”“表单”类型“表单设计器”2.
命令方式格式:CreateForm<表单名>[.scx]在表单设计器打开状态下,可以使用表单生成器快捷地生成表单。“表单”“快速表单”命令“表单生成器”对话框。点击“文件”菜单中的“保存”命令将设计结果存盘。表单文件扩展名为.scx,并自动生成.sc
t的表单备注文件。二、使用表单向导vfp提供了两种表单向导:“单表向导”适用于单表表单;“一对多表单向导”适用于具有一对多关系的两个表的表单。8.4操作表单表单设计基本步骤1、设计出表单界面2、设置表单及表单中各种对象的属性3、为对象规定在被某个“事件”激活时执行的“过程
”构成完整的应用程序一、修改表单使用表单设计器修改表单,两种方式打开表单设计器:“文件”“打开”“表单”类型“表单设计器”ModifyForm<表单名>[.scx]表单设计器环境包括:“表单设计器”窗口:包含表单界面“表单”菜单:包含设计表单所需的各种控件按钮代
码编辑窗口:①在“对象”下拉列表框中选择对象;②在“过程”下拉列表框中选择需要编辑的方法或事件;③在代码编辑区中输入或修改方法或事件的代码。“表单控件”工具栏:包含各种控件按钮,利用控件按钮可以方便地
往表单中添加控件“表单设计器”工具栏:“属性”窗口:对象列表:该下拉列表中以树形结构分层列出了当前表单及其所包含的对象的名称,单击下拉按钮,可以从中选择表单中的对象。属性分类选项页:•属性列表:列出当前选项页的所有属性名及
其取值。单击属性列表中的某一项目,则选中该属性,称为当前属性。•属性值输入框:用来输入或选择当前属性的值。表单和控件的绝大多数属性数据类型是固定的。•属性说明:对当前属性的文字解释•属性列表:列出当前选项页的所有属
性名及其取值。单击属性列表中的某一项目,则选中该属性,称为当前属性。•属性值输入框:用来输入或选择当前属性的值。表单和控件的绝大多数属性数据类型是固定的。•属性说明:对当前属性的文字解释二、运行表单1
.菜单方式:“表单”“执行表单”命令;或者单击“常用”工具栏上的“运行”按钮2.命令方式:格式:DoForm<表单名>.scx注意,表单文件及其表单备注文件必须同时存在才能运行表单。三、表单的属性、事件和方法1.表单的属性⑴常用的表单属性:⑵创建新属性:“表单
”“新建属性”命令“新建属性”对话框属性创建之后,系统自动将其赋值为.F.,可以在属性窗口中对其值进行设定,从而改变该属性的数据类型,并像引用表单的其他属性那样引用它们。2.表单的常用事件Load事件:在表单对象建立之前触发。Init事件:在对象建立时触发
。运行表单时,先触发表单的Load事件,再触发表单的Init事件。表单对象Init事件触发之前,先触发它所包含的控件对象的Init事件。Destroy事件:在对象释放时触发。Unload事件:释放表单时,先触发表单的Destroy事件,再触发表单所包含
的控件对象的Destroy事件,最后触发表单的Unload事件。Error事件:当对象方法或事件代码运行中产生错误时触发Click事件:当用鼠标单击对象时触发。DblClick事件:用鼠标双击对象时触发。RightClick事件:用鼠标右键单击对
象时触发。InteractiveChange事件:当用户通过鼠标或键盘交互式改变一个控件的值时触发。GotFocus事件:当对象获得焦点时触发。表单对象以及无法拥有焦点的控件对象不具有该事件。3、常
用方法SetFocus方法:使对象获得焦点。无法拥有焦点的对象和Enabled属性或Visible属性为.F.的对象,没有该方法。Release方法:关闭表单,并将表单从内存中释放。Refresh方
法:刷新表单或控件对象,表单上的所有控件对象会随着表单的刷新而被刷新。Show方法:显示表单。Hide方法:隐藏表单,但并不从内存中释放表单。4、创建新方法“表单”“新建方法程序”命令“新建方法程序”对话框新建方法将出现在“属性”窗口中,
双击其中的方法名称,打开代码编辑窗口,输入方法的代码。四、设置表单的数据环境1、数据环境指表单或表单集使用的数据源,包括表、视图、以及表之间的关系。数据环境中表或视图会随着表单的打开或运行而自动打开,随着表单的关闭或释放而关闭
。设置数据环境后,设置表单中各控件的controlsource属性,使控件与字段相关。2、“显示”“数据环境”命令,打开数据环境设计器窗口,在其中创建或修改表单数据环境。系统菜单栏中将增加“数据环境”菜单项。3、“数据环境”“添加”命令
,向数据环境中添加表或视图。4、“数据环境”“移去”命令,将不需要的表或视图移出数据环境。5.向表单添加字段表单上产生的控件在很多情况下被用来显示或修改表中的数据,直接从“数据环境设计器”中将需要的字段、表或者视图拖入表单,
系统即会在表单上产生相应的控件与字段相联系。8.5表单常用控件设计表单时,可以用表单控件工具栏中的各种控件按钮在表单上生成控件对象。•控件基本操作:选定单个控件、选定多个控件、取消选定移动控件、删除控件改变控件大小剪贴控件设置
网格线控件布局规格化大部分控件共有属性:P230表8-3控件属性设置一、在属性窗口设置;二、通过属性赋值语句完成:<对象引用>.<对象属性名>=值8.5.1标签控件(Lable)显示不可编辑文本的控件,常用于提示或说明。常用属性:1.Caption属
性:字符型,指定控件的标题文本,即在标签控件上显示的文本。2.Name属性:字符型,指定对象的名字,所有对象都具有Name属性,用于在代码中引用对象。3.Alignment属性:指定标题文本在控件中显示的对齐方式。取0(默认值),左对齐;取1,右对齐;取2,居中对齐。
4.BackStyle属性:设置标签控件背景是否透明。取1(默认值),不透明;取0,透明。8.5.2命令按钮控件和命令按钮组控件1.命令按钮(CommandButton)操作代码通常放置在命令按钮的Click事
件中。•Caption属性:按钮标题•Enabled属性:逻辑型,默认值为.T.,即对象是有效的,能响应外部事件,否则不能响应外部事件。•Visible属性:指定对象是可见还是隐藏。默认值为.T.,即对象是可见的,否则对象是隐藏的。•命令按钮常用的事件是Click事件2.命令按钮组
(CommandGroup)包含一组命令按钮的容器,用户可以选择单个按钮来操作,或作为一个整体对象来操作。类似命令按钮组的常用容器还有选项按钮组、表格控件、页框控件等。可以单独为容器中包含的某个控件设置属性、方法,选定容器内控件的方法:⑴从对象下拉列表框中选择控件对象名称;⑵从容器的
快捷菜单中选择“编辑”命令,使容器进入编辑状态,然后单击容器中的某个控件对其进行选定。可以使用命令组生成器来设置命令按钮组常用属性。常用属性:ButtonCount属性:命令按钮组中命令按钮的个数,默认值为2
。Buttons属性:数组,每个元素代表其中的一个命令按钮,设计时不可用,在代码中实现对某个按钮的引用。下标取值在1~ButtonCount之间。Value属性:在属性窗口中设置为1(默认值),返回值为数值型
,表示第几个按钮被操作;在属性窗口中设置为空,返回值为字符型,表示Caption为value的按钮被操作。命令按钮组可以整体相应click事件,每个按钮也可有自己的click事件,此时单击该按钮,只执行该按钮的单击事件,而不执行按钮组的单击事件。Ex:在
命令按钮组的click事件中的一段代码:DOCASECASEThis.Value=1*第一个按钮的操作代码CASEThis.Value=2*第二个按钮的操作代码CASEThis.Value=3*第三个按钮的操作代
码ENDCASE命令按钮组生成器8.5.3文本框控件(TextBox)和编辑框控件(EditBox)都可以用来输入、输出、编辑数据,执行标准的编辑操作,如剪切、复制、粘贴.1.文本框控件文本框
可以编辑数值型、字符型、逻辑型、日期型或日期时间型数据。只能编辑单段数据。常用属性:ControlSource属性:通过ControlSource属性的设置来实现控件的数据绑定。控件数据绑定是指将控件与某个数据源(字段或内存变量)联系在一起,字段来自表
单数据环境中的表。与数据源绑定后,控件的值就与数据源一致了。Value属性:设置或返回文本框显示的数据,默认值为空串,字符型。文本框可编辑数值型、字符型、逻辑型、日期型或日期时间型数据,通过对该属性的赋值改变文本框可编辑数据的类型。如果ControlSource
属性指定了数据绑定,则与数据源具有相同的数据类型。PasswordChar属性:指定占位字符,为空时显示用户输入的字符,否则显示占位字符,但实际输入值仍在value属性中。InputMask属性:模式字符串,指定在文本框中如何输入和显示数据。表8-5文本框生成器2、编
辑框控件编辑框与文本框的主要区别在于:编辑框只能用于输入或编辑字符型数据。编辑框可以输入多段文本,故可用来处理长文本或者备注型字段。ScrollBar属性来设置编辑框是否显示垂直滚动条(默认值2-显示滚动条;0-没有滚动条)。编辑框生成器8.5.4选项组控件和复选框控件
1、选项组控件(OptionGroup)是一个包含若干个选项按钮的容器,提供多个选项,用户通过单击单选按钮进行选或者不选的操作,只能选择其中之一。ButtonCount属性:选项组中选项按钮的个数。默认值为2。Buttons属性:数组,每个元素
代表其中的一个选项按钮,设计时不可用,在代码中实现对某个选项按钮的引用。下标取值在1~ButtonCount之间。Value属性:选项组中哪个选项按钮被选中。若是数值型,表明第几个单选按钮被选中;或是字符型,表明caption属
性为value值的单选按钮被选中。2、复选框控件(CheckBox)用户通过单击指明复选框选定还是清除,被选定的复选框会显示一个对号。通常成组使用多个,以实现多选。复选框可以与表中的逻辑字段绑定。Value属性:表明复选框的当前状态选项组生成器0或.f.未被选中1或.t.被选中2或nul
l不可用,灰色8.5.5列表框和组合框控件1、列表框控件(ListBox)提供一组选项列表,用户可以从中选择一项或多项。RowSourceType与RowSource属性:分别指定数据项的数据源类型和数据源。RowSource
Type取0~9。•0:无。程序运行时,通过AddItem方法添加条目,RemoveItem方法移去条目•1:值。RowSource指定逗号分隔的数据项作为列表项。RowSource=“one,two,three,four”•3:SQL语句。RowSource指定
SQLSELECT命令,选出一个或多个表中的字段作为列表项。•RowSource=“SELE*FROMgzINTOCURSORmyList5:数组。RowSource为数组名6:字段。RowSource指定逗号分隔的一个表内的多格字段名列表,首
字段有表名前缀。RowSource=“zg.xm,zc”•List属性:存储列表项的字符串数组,设计时不可用var=Thisform.myList.list(3)Thisform.myList.list(3)=“OK”•Selected属性:指定某
个列表项是否处于被选定状态的逻辑数组。在设计时不可用。•ListCount属性:返回列表项的数目,设计时不可用,运行时只读。•ColumnCount属性:指定列表框中列表项的列数。•ColumnCount属性:指定列表框中
列表项的列数。•Value属性:返回列表框中被选中的列表项。如是数值型(默认类型),是被选中条目的序列号;字符型,是被选中条目的内容。只读•ControlSource属性:该属性在列表框和组合框用来指定存储用户选择的列表项的字段或变量。•MultiSelect属性:指定用户能否在列表项
中进行多选。为0或.F.(默认值)时,不允许多选;为1或.T.时,按下Ctrl键的同时用鼠标单击列表项进行多选。•AddItem方法:•<对象引用>.AddItem(cItem[,nIndex][,nColumn])•在列表框或组
合框中添加以cItem为内容的新列表项,cItem为字符型;nIndex指定新列表项的位置,缺省时当Sorted属性为.T.则按字母顺序插入列表,否则添加到最后;nColumn指定放置新列表项的列,缺省为1•RemoveItem方法•<对象
引用>.RemoveItem(nIndex)•在列表框或组合框中删除某列表项。nIndex指定要删除的列表项的位置,整值。•列表框生成器2、组合框(ComboBox)与列表框类似,以下拉列表的形式提供一组数据供选择。属性方法也类似。主要区别有:⑴
列表框始终显示它的选项列表;组合框平时只显示被选择的选项,单击下拉按钮时才能显示可滚动的下拉列表。(2)列表框可以进行多选,组合框只能单选。(3)组合框分为下拉列表框与下拉组合框。前者只有选择功能;后者除可以选择已有选项外,还可以在编辑区内输
入新数据。Style属性:0,下拉组合框,输入新内容时用Text属性获得。1,下拉列表框。列表框和组合框常用事件为Click和Dbclick事件组合框生成器8.5.6计时器控件(Timer)利用系统时钟产生定时时间间隔。用来实现每隔一段时间间隔完成一次的周期性的任务。在设计时是可见
的,但在运行时不可见。1.Timer事件每经过指定的时间间隔触发一次Timer事件。2.Interval属性指定计时器时间间隔,决定计时器事件发生的频率,单位为ms。3、Enable属性:.t.或者.f.,用以打开或者关闭定时器。8.5.7微调控件(Spinner)使用微调控件可
以接受指定范围内的数值输入.用户可以通过上箭头或下箭头增减当前值,或直接在微调框中键入值。1、KeyboardHighValue属性和KeyboardLowValue属性指定键盘输入数值的最大值和最小值。2.SpinnerHighValue属性和Spinne
rLowValue属性指定按钮微调数值的最大值和最小值。3.Increment属性设定每次单击上箭头或下箭头时增加或减少的值,默认为1.00。8.5.8图像控件(Image)用于.bmp、.ico、.cur、.gif、.jpg等图像文件的输出•Picture属性:指定
显示的图像文件,可在设计或运行时进行设置。Thisform.Img1.Picture="c:\Visual\FoxPro\fox.bmp"8.5.9容器控件(Container)可以包含多个不同类型的控件对象,起到控件分组作用。在容器控件的编辑状态下,
将所需控件装入其中,容器控件就包含了该控件。注意:⑴若容器控件未处于编辑状态下,即使将控件置于其中也不会被其包含;⑵装入的控件必须是新建的,将已有的控件拖动到容器控件内无效。8.5.10表格控件(Grid)按行和列的形式来显示数据。表格控件是一种容器,包含以下对象•列(Colum
n):一列可以用来显示表的一个字段。列是包含列标题和列控件的一种容器。•列标题(Header):显示列标题。•列控件:一列必须设置一个列控件,该列中的每个单元格都可用此控件来显示数据。默认为文本框。可以根据显示数据类型进行修改。•表格生成器1、表格常用
属性•RecordSourceType和RecordSource:为整个表格设置数据源。0—表,4—SQL•ColumnCount属性:指定表格的列数,即包含列对象的个数。默认值为-1,此时表格自动创建足够多的列来显示数据源中所有字段。•LinkMaster属性:指
定与表格中的子表建立关联的父表名称。•ChildOrder属性:建立表间关联时,表格中所显示的子表的索引标识名。2、列常用属性•ControlSource属性:列的数据源,通常是表中的一个字段。•CurrentC
ontrol属性:为列指定活动控件,用以显示数据,缺省为文本框控件。在表格控件的编辑状态下向列中添加新控件,并将该属性设置为其中某个控件的Name属性。•Sparse属性:为.T.时,CurrentControl属性仅影响当前选定单
元格,其它单元格仍为文本框;为.F.时,CurrentControl属性影响该列的所有单元格。8.5.11页框控件(PageFrame)容器类控件,包含了若干个页面(Page),每个页面也是一种容器对象,可以设计每个页面内
包含的控件,设置之前应先选定某一页面。常用属性有:•PageCount属性:包含页面的个数.默认值为2.页面对象最常用的属性是Caption,指定页面标题.•Pages属性:数组,一个数组元素代表一个页对象,用于代码中
访问.•Tabs属性:默认值为.T.,页框控件显示选项卡.否则不显示选项卡。•TabStrech属性:指定页面标题文本过长时的处理方式。默认值为1,标题仅在一行内显示其中的一部分;为0时,以多行显示所有的标
题文本。•ActivePage属性:指定当前活动页的页号页框生成器8.6VisualFoxPro中类的建立VFP支持自定义类,通常用户会为重复使用的通用功能创建类。自定义的类可以添加到表单控件工具栏中,用其生成
对象,添加到表单中。8.6.1利用“类设计器”创建类1.创建新类•菜单方式“文件”“新建”选择“类”“新建类”对话框在“新建类”对话框中,定义新类名;选择基类名或者父类名,指定类库文件的文件名和存储位置.•命令方式格式一:CreateClass<类名>格式二:Crea
teClass<类名>of<类库文件名>自定义类保存的类库文件的扩展名为.vcx,并且系统自动生成一个同名的扩展名为.vct的类库备注文件。用户自定义类也可以派生出新类。新类继承了基类或父类的全部属性、方法和事
件,并且保留了默认值。2.类的修改修改类需在“类设计器”中进行。菜单方式命令方式:ModifyClass<类名>of<类库文件名>用户可以在“属性”窗口中修改继承属性的值,在“代码”编辑窗口中编辑继承的事件和方法,也允许用户为新类添加新的属性和方法,但不允许定义新的事件。关于类的几
个属性:Class:类名;BaseClass:基类名;ClassLibrary:类库的路径与名称;ParentClass:父类名,如果该类是由基类派生而来的,则该属性的值与BaseClass属性的值相同。DefineClass<子类名>As<父类名>&
&定义子类名,指定父类属性名1=属性值1属性名2=属性值2&&设置类的属性……[AddObject<对象名>As<类名>With属性赋值列表]&&添加对象并设置属性[Procedure方法或事件名称<方法或事件代码>Endprocedure]&&定义方法或事件的代码
Enddefine8.6.2利用编程创建类可以在.prg文件中以编程方式定义类。