7.1面向对象的基本概念--对象和类1.对象1)对象对象(Object)是反映客观事物属性及行为特征的描述。每个对象都具有描述它的特征的属性,及附属于它的行为。对象把事物的属性和行为封装在一起,是一个动态的概念。对象是面向对象编程的基本元素,是“类”的具体实例。2)对象的属性窗口的标题及窗口的大小;窗口的前景和背景颜色;窗口中所显示信息的内容及格式;窗口中提供了哪些控件;窗口中每个控件在窗口的位置;窗口中每个控件的大小;窗口中的控件应如何操作。另外,在VisualFoxPro应用程序中,命令按钮也可以看成对象,具有以下属性和行为特征:命令按钮在窗口的位置;命令按钮的标题及命令按钮的大小;按动命令按钮进行什么操作。2.类所谓类(Class),就是一组对象的属性和行为特征的抽象描述。或者说,类是具有共同属性、共同操作性质的对象的集合。1)基类基类又可以分成容器类和控件类。容器类(Containers)可以容纳其他对象,并允许访问所包含的对象。控件类不能容纳其他对象,它没有容器类灵活。2)类的特性类具有继承性、封装性和多态性等特性。返回7.1面向对象的基本概念--属性、事件和方法1.属性属性(Attribute)是用来描述对象特征的参数。属性是属于某一个类的,不能独立于类而存在。派生出的新类将继承基类和父类的全部属性。在VisualFoxPro系统中,各种对象拥有70多个属性。对象的属性可以在设计对象时定义,也可以在对象运行时进行设置。2.事件事件(Event)是每个对象可能用以识别和响应的某些行为和动作。为了使对象在某一事件发生时能够做出用户所需要的反映,就必须为这个事件编写相应的程序代码来实现特定的目标。为一个对象的某个事件编写代码后,应用程序运行时,一旦该事件发生,便激活相应代码开始执行,如果该事件不发生,则这段代码就不会被执行。没有编写代码的事件,即使事件发生也不会有任何反映。在VisualFoxPro系统中,对象可以响应50多种事件。多数情况下,事件是通过用户的操作行为引发的,当事件发生时,将执行包含在事件过程中的全部代码。3.方法方法(Method)是附属于对象的行为和动作,是由VisualFoxPro代码组成的。可以执行某一特定动作的特殊的“过程”或“函数”,方法与事件有相似之处,都可以完成不同任务。但在不同程序中,同一个事件必须根据需要编写不同的代码,从而完成不同任务。而方法通常是VisualFoxPro系统已经编写好的,无论在哪个程序中,任何时候调用都完成统一任务。当然,如果需要,用户可以自己编写代码替换系统提供的方法代码。VisualFoxPro提供100多个内部方法供不同对象调用。返回7.3创建与管理表单--创建表单4.运行表单(4)在命令窗口输入命令:DOFORM表单文件名返回7.3创建与管理表单--表单属性、事件和方法1.常用的表单属性表单属性大约有100个,但绝大多数很少用到。表7-2常用表单属性返回属性描述默认值AlwaysOnTop指定表单是否总是位于其他打开窗口之上.F.AutoCenter指定表单初始化时是否自动在VisualFoxPro主窗口内居中显示.F.BackColor指明表单窗口的颜色255,255,255BorderStyle指定表单边框的风格3Caption指明显示在表单标题栏上的文字Form1Closable指定是否可以通过单击“关闭”按钮或双击控制菜单框来关闭表单1DataSession指定表单里的表是在默认的全局能访问的工作区打开1MaxButton确定表单是否有最大化按钮.T.MinButton确定表单是否有最小化按钮.T.Movable确定表单是否能够移动.T.Scrollbars指定表单滚动条的类型:0(无)、1(水平)、2(垂直)、3(即水平又垂直)0WindowState指明表单的状态:0(正常)、1(最小化)、2(最大化)0WindowType指定表单是模式表单还是非模式表单07.3创建与管理表单--表单属性、事件和方法2.常用方法(1)Release方法:将表单从内存中释放(清除)。比如表单有一个命令按钮,如果希望单击该命令按钮时关闭表单,就可以将该命令按钮的Click事件代码设置为ThisForm.Release。(2)Refresh方法:重新绘制表单或控件,并刷新它的所有值。当表单被刷新时,表单上的所有控件也都被刷新。当页框被刷新时,只有活动页被刷新。(3)Show方法:显示表单。该方法将表单的Visible属性设置为.T.,并使表单成为活动对象。(4)Hide方法:隐藏表单。该方法将表单的Visible属性设置为.F.。(5)SetFocus方法:让控件获得焦点,使其成为活动对象。如果一个控件的Enabled属性值或Visible属性值为.F.,将不能获得焦点。返回7.4常用控件--标签(Label)标签是用以显示文本的图形控件,被显示的文本在Caption属性中指定,称为标题文本。标签的标题文本不能在屏幕上直接编辑修改,但可以在代码中通过重新设置Caption属性间接修改。标签标题文本最多可包含的字符数目为256。标签具有自己的一套属性、方法和事件,能够响应绝大多数鼠标事件。常用的标签属性及其作用如下。(1)Caption属性:确定标签处显示的文本。(2)Visible属性:设置标签可见还是隐藏。(3)AutoSize属性:确定是否根据标签上显示文本的长度,自动调整标签大小,默认值为假(.F.)。(4)BackStyle属性:确定标签是否透明,默认值为1,即不透明。(5)WordWrap属性:确定标签上显示的文本能否换行,默认值为.F.。(6)FontSize属性:确定标签上显示文本所采用的字号。(7)FontName属性:确定标签上显示文本所采用的字体。(8)FontColor属性:确定标签上显示文本的颜色。(9)Alignment属性:指定标题文本在控件中显示的对齐方式。设置值为0,左对齐;设置值为1,右对齐;设置值为2,中央对齐。返回7.4常用控件--命令按钮控件(Command)此按钮用于创建单个命令按钮,命令按钮用来启动某个事件代码,完成特定功能。如关闭表单、移动记录指针、打印报表等。常用的命令按钮属性及其作用如下。(1)Caption属性:用于设置按钮的标题。在设置命令按钮对象的“Caption”属性时,输入“\”和一个快捷键字符可指定其快捷键。在表单上同时按Alt键和快捷字符,可以完成单击此按钮的功能。例如,将Command1按钮的“Caption”属性设置为“退出(\Q)”,在运行表单时,既可以通过Alt+Q键完成单击此按钮的作用。该属性适用于绝大多数控件。(2)Enabled属性:指定表单或控件能否响应由用户引发的事件。默认值为.T.,即对象是有效的,能被选择,能响应用户引发的事件。Enabled属性使得用户(程序)可以根据应用的当前状态随时决定一个对象是有效的还是无效的,也可以限制一个对象的使用,如用一个无效的编辑框(Enabled=.F.)来显示只读信息。该属性在设计和运行时可用,适用于绝大多数控件。(3)Visible属性:指定对象是可见还是隐藏。在表单设计器中,默认值为.T.,即对象是可见的。在程序代码中,默认值为.F.,即对象是隐藏的。但一个对象即使是隐藏的,在代码中仍可以访问它。该属性在设计和运行时可用,适用于绝大多数控件。(4)Piction属性:定义图形化按钮的面版图型。返回7.4常用控件--文本框控件(Text)文本框也是最常用的控件,使用文本框能够进行多种类型数据的输入和输出。文本框的主要应用是对表中非备注字段中的数据进行显示和编辑,这需要将文本框的ControlSource属性设置成表的某个字段。运行表单时,文本框显示当前记录的ControlSource属性所指定的字段的数据,并将用户修改后的数据保存到字段中,同时将改变文本框的Value属性值。可以控制向文本框中输入数据的格式。如果是字符型数据,可用InputMask属性设置对输入字符的限制。如果是逻辑型数据,把InputMask属性设置为“Y”,文本框中只能接受用户键入的“Y”或“N”,而不接受输入“T”或“F”。对于日期型数据,可用Century属性设置年份的前两个数字是否显示。常用的文本框属性和事件如下。(1)ControlSource属性:利用该属性为文本框指定一个字段或内存变量。运行时,文本框首先显示该变量的内容。而用户对文本框的编辑结果,也会最终保存到该变量中。(2)Value属性:返回文本框的当前内容。对文本框Value属性的设置决定了运行表单时,在文本框中显示的数据的值和类型。文本框中的数据可以是数值、字符、日期或逻辑型的。如果设计表单时未设置Value属性值,则运行表单时默认输入的是字符型数据。表单上文本框控件的长度限制了输入到文本框中的字符型数据或数值型数据的长度及大小。在文本框中输入的字符型数据或数值型数据的最大长度和大小还受相应数据类型的限制。运行表单时,当文本框获得焦点时,用户就可修改数据,当移走焦点或按下Enter键,就结束数据的输入,对文本框数据的修改将改变Value属性值。该属性的默认值是空串,如果ControlSource属性指定了字段或内存变量,则该属性将与Controlsource属性指定的变量具有相同的数据和类型。(3)PasswordChar属性:利用该属性可在文本框中接收用户密码,可以把它设置为“*”或其他的一般字符。这样在运行表单时,文本框的Value和Text属性可以接收用户真正输入的信息,而在屏幕上显示的却是PasswordChar所指定的字符。这在设计登录口令框时经常用到。(4)Readonly属性:该属性为.T.时,文本框显示为灰色,表明不可编辑其中的数据。(5)InPutMask属性:指定在一个文本框中如何输入和显示数据。(6)Valid事件:若要检查用户输入文本框的值,可以编写Valid事件代码,利用代码来检查数据。返回7.4常用控件--编辑框控件(Edit)编辑框实际上是一个完整的字处理器,利用它能够选择、剪切、粘贴及复制正文;可以实现自动换行,能够有自己的垂直滚动条,可以用箭头键在正文里面移动光标。编辑框只能输入、编辑字符型数据,包括字符型内存变量、数组元素和字段里的内容。前面介绍的有关文本框的有关属性(不包括PassWordChar、InputMask属性)对编辑框同样适用。除了上述以外,编辑框常用属性还有以下几种。(1)ControlSource属性:用于指定编辑框的数据来源,在编辑框中的输入或修改的结果将存放在指定的数据源。(2)Readonly属性:设置用户能否修改编辑框的文本。值为.T.时,不能编辑编辑框中的内容;值为.F.时,允许编辑编辑框的内容,系统默认值为.F.。(3)ScrollBars属性:指定编辑框是否具有滚动条。当属性值为0时,编辑框没有滚动条;当属性值为2(默认值)时,编辑框包含垂直滚动条。返回7.4常用控件--复选框控件(Check)此控件用于创建一个复选框,每个复选框都有两个状态,如.T.或.F.。当处于.T.状态时,即选中此复选框,则在复选框前面的方框中显示一个“√”;否则,复选框内为空白。(1)Caption属性:用来指定显示在复选框旁边的文字。(2)Value属性:用来指明复选框的当前状态,Value属性的设置有3种情况。①0或.F.,复选框呈清除(也称为未选中)状态。②l或.T.,复选框呈选中状态。③2或.Null.,复选框呈灰色状态。当复选框获得焦点时,只要用户按Ctrl+0,就在复选框中输入.NULL.,使复选框显示灰色。(3)ControlSource属性:指明与复选框建立联系的数据源。返回7.4常用控件--选项组控件(OptionGroup)选项组又称为选项按钮组,是包含选项按钮的一种容器。一个选项组中往往包含若干个选项按钮,但用户只能从中选择一个按钮,当用户选择某个选项按钮时,该按钮即成为被选中状态,而选