第 8章 自定义属性与自定义方法第 8章 自定义属性与自定义方法
8.1 自定义属性
8.2 自定义方法第 8章 自定义属性与自定义方法
8.1 自定义属性
8.1.1 添加自定义属性
Visual FoxPro 6.0中,用户可以像定义变量一样自定义各种类型的属性 。
在可视化编程中,自定义属性只能依附于表单对象,
对于由控件创建的对象,无法增加新的属性 。
在某些场合下,可以使用“属性”来代替使用“变量”。
第 8章 自定义属性与自定义方法
1,添加自定义属性的步骤在表单中添加一个自定义属性 ( 如 Desec) 的步骤如下:
(1) 进入表单设计器,单击,表单,菜单中的,新建属性,命令,打开,新建属性,对话框 。
(2) 在“新建属性”对话框的“名称( Name)”栏中,输入自定义属性的名称,Desec,在“说明”栏中填入该属性的简单说明。
第 8章 自定义属性与自定义方法
(3) 单击,添加,按钮,然后单击,关闭,按钮,
退出,新建属性,对话框 。
(4) 此时,在属性窗口的,全部,选项卡中可以看见新建的属性及其说明 。
(5) 新定义属性的类型为逻辑型,值为,.F.。与改变其他属性的方法一样,可以将它改为其他类型,如数值型值,0。
2,自定义属性的应用示例第 8章 自定义属性与自定义方法
8.1.2 数组属性数组属性是一组具有不同下标的同名属性,可以在任何使用数组的地方使用数组属性。注意,如同属性是一种依附于表单的特殊变量,数组属性是一种依附于表单的数组。要使用数组属性,必须先在表单中定义数组属性。
第 8章 自定义属性与自定义方法
1,添加自定义数组属性数组属性的定义和设置与自定义属性的设置基本一样,
步骤如下:
(1) 在表单设计器中,单击,表单,菜单中的,新建属性,命令,打开,新建属性,对话框 。
(2) 在,名称,栏中输入数组属性的名称,以及括号括起来的数组大小 。
(3) 如果能够事先确定数组的维数和大小,就在括号中输入其值,否则可以先随意指定一个,然后在代码中用
DIMENSION再重新定义 。
(4) 单击“添加”按钮后,再单击“关闭”按钮。
第 8章 自定义属性与自定义方法
8.2 自定义方法
8.2.1 自定义方法的概念
1,子程序将重复使用的程序设计成能够完成一定功能的、
可供其它程序使用(调用)的独立程序段。这种程序段称为子程序,它独立存在,但可以被多次调用,调用的程序称为主程序。
第 8章 自定义属性与自定义方法
2,过程,函数与方法在 Visual FoxPro 6.0中,子程序的结构分为过程、
函数与方法三类。一般来说,过程与函数的区别在于函数返回一个值而过程不返回值,而方法则是 VFP中的一个新式的程序组装方式 —— 限制在一个对象中的子程序。
第 8章 自定义属性与自定义方法
(1),方法,的特点
“方法”可以像过程那样以传值或传址的方式传递参数,也可以像函数那样返回值,集中了过程和函数的所有功能与优点。与过程、函数的不同在于方法总是和一个对象密切相联,即仅当对象存在并且可见时方法才能被访问。
第 8章 自定义属性与自定义方法
(2),方法,的分类
VFP的方法分为两类:内部方法和用户自定义方法 。
内部方法是 VFP预制的子程序,可供用户直接调用或修改后使用 。 例如 Release,SetFocus等方法 。
用户自定义方法其实就是用户为某种需要所编写的子程序。
第 8章 自定义属性与自定义方法
(3) 方法的命名规则
1) 由字母,汉字,下划线和数字组成,并且必须以字母,汉字或下划线开头 。
2) 可以是 1~ 128个字符 。
3) 不能使用 VFP的保留字 。
4) 方法名不要与变量、数组名称相同,尽量取有意义的名称。
第 8章 自定义属性与自定义方法
8.2.2 自定义方法的建立与调用自定义方法的建立分为两步:方法的定义和编写方法代码。而自定义方法的调用则要指明调用的路径。
第 8章 自定义属性与自定义方法
1,添加新方法自定义新方法的步骤如下:
(1) 进入表单设计器,单击,表单,菜单中的,新建方法程序,命令,打开,新建方法程序,对话框 。
(2) 在,名称,栏中填入自定义方法的名称 。
(3) 在,说明,栏中填入新方法的简单说明
(4) 单击,添加,按钮,将新方法添加到方法程序中 。
(5) 单击,关闭,按钮,退出,新建方法程序,对话框 。
(6) 此时,在属性窗口的“方法程序”选项卡中可以看见新建的方法及其说明。
第 8章 自定义属性与自定义方法
2,编写自定义方法的代码编写自定义方法的代码与编写表单的事件过程代码方法基本一样 。
在编写时,可以双击属性窗口的新方法项,或直接打开“代码”窗口,在“过程”下拉列表中选择新方法,即可开始编写新方法的代码。
3,自定义方法的调用自定义方法的调用与表单的内部方法的调用一样,可以在事件过程或其他的方法代码中调用。
第 8章 自定义属性与自定义方法
8.2.3 参数传递与方法的返回值方法可以接收主程序传递的参数,也可以不接收参数。方法可以有返回的值(如函数),也可以没有返回的值(如过程)。
第 8章 自定义属性与自定义方法
1,参数传递如果需要使方法能够接收参数,则在方法代码的开始部分增加下面的命令行:
PARAMETERS 〈 形参表 〉
或
LPARAMETERS 〈 形参表 〉
调用时使用括号将实参括起:
对象名,方法名( 〈 实参表 〉 )
第 8章 自定义属性与自定义方法
2,参数传递的方式参数传递的方式分为传址方式和传值方式 。
(1) 传址方式传址方式是指主程序将实际参数在内存中的地址传给被调用的方法,由形式参数接收,而形式参数也使用该地址。即实际参数与形式参数使用相同的内存地址,形式参数的内容一经改变,实际参数的内容也将跟着改变。
第 8章 自定义属性与自定义方法
(2) 传值方式传值方式是指主程序将实际参数的一个备份传给被调用的方法,这个备份可以被方法改变,但在主程序中变量的原值不会改变。
第 8章 自定义属性与自定义方法
(3) 传址或传值方式的区别传址或传值方式对于数组的影响较大,如果采用传值方式只能传递数组的第一个元素的内容,其他元素无法传递 。 如果采用传址方式,则将整个数组的地址传给了被调用的方法,形式参数会自动变成一个与实际参数同样大小的数组 。
在默认的情况下,VFP在调用方法时采用传值方式 。
如果要改变参数的传递方式,可以采用以下两种方法:
1) 使用 SET UDFPARMS TO VALUE|REFERENCE命令强制改变参数的传递方式 。
2) 使用 @符号强制 VFP使用传址方式。
第 8章 自定义属性与自定义方法
3,方法的返回值如果需要使方法能够返回一个值,则要在方法代码的结束处增加下面的命令行:
RETURN [〈 表达式 〉 ]
如果缺省 〈 表达式 〉,VFP将自动返回,T.。
当代码执行到 RETURN命令,就会立即返回到主程序中 。
第 8章 自定义属性与自定义方法在主程序中可用以下形式调用方法:
(1) 在表达式中调用方法,例如,k =
x( )*Thisform.Demo(r)。
(2) 在 赋 值 语 句 中 调 用 方 法,例如,k =
Thisform.Demo(r)。
(3) 以等号命令调用方法,例如,=
Thisform.Demo(r)。以该形式调用方法将舍弃返回值。
4,示例第 8章 自定义属性与自定义方法
8.2.4 方法的递归调用递归就是一个过程调用过程本身。在方法的递归调用中,一个方法执行的某一步要用到它自身的上一步(或上几步)的结果。递归调用在处理阶乘运算、级数运算、
幂指数运算等方面特别有效。例如,自然数 n的阶乘可以递归定义为:
0
0
)!1(
1
!
n
n
nn
n
8.1 自定义属性
8.2 自定义方法第 8章 自定义属性与自定义方法
8.1 自定义属性
8.1.1 添加自定义属性
Visual FoxPro 6.0中,用户可以像定义变量一样自定义各种类型的属性 。
在可视化编程中,自定义属性只能依附于表单对象,
对于由控件创建的对象,无法增加新的属性 。
在某些场合下,可以使用“属性”来代替使用“变量”。
第 8章 自定义属性与自定义方法
1,添加自定义属性的步骤在表单中添加一个自定义属性 ( 如 Desec) 的步骤如下:
(1) 进入表单设计器,单击,表单,菜单中的,新建属性,命令,打开,新建属性,对话框 。
(2) 在“新建属性”对话框的“名称( Name)”栏中,输入自定义属性的名称,Desec,在“说明”栏中填入该属性的简单说明。
第 8章 自定义属性与自定义方法
(3) 单击,添加,按钮,然后单击,关闭,按钮,
退出,新建属性,对话框 。
(4) 此时,在属性窗口的,全部,选项卡中可以看见新建的属性及其说明 。
(5) 新定义属性的类型为逻辑型,值为,.F.。与改变其他属性的方法一样,可以将它改为其他类型,如数值型值,0。
2,自定义属性的应用示例第 8章 自定义属性与自定义方法
8.1.2 数组属性数组属性是一组具有不同下标的同名属性,可以在任何使用数组的地方使用数组属性。注意,如同属性是一种依附于表单的特殊变量,数组属性是一种依附于表单的数组。要使用数组属性,必须先在表单中定义数组属性。
第 8章 自定义属性与自定义方法
1,添加自定义数组属性数组属性的定义和设置与自定义属性的设置基本一样,
步骤如下:
(1) 在表单设计器中,单击,表单,菜单中的,新建属性,命令,打开,新建属性,对话框 。
(2) 在,名称,栏中输入数组属性的名称,以及括号括起来的数组大小 。
(3) 如果能够事先确定数组的维数和大小,就在括号中输入其值,否则可以先随意指定一个,然后在代码中用
DIMENSION再重新定义 。
(4) 单击“添加”按钮后,再单击“关闭”按钮。
第 8章 自定义属性与自定义方法
8.2 自定义方法
8.2.1 自定义方法的概念
1,子程序将重复使用的程序设计成能够完成一定功能的、
可供其它程序使用(调用)的独立程序段。这种程序段称为子程序,它独立存在,但可以被多次调用,调用的程序称为主程序。
第 8章 自定义属性与自定义方法
2,过程,函数与方法在 Visual FoxPro 6.0中,子程序的结构分为过程、
函数与方法三类。一般来说,过程与函数的区别在于函数返回一个值而过程不返回值,而方法则是 VFP中的一个新式的程序组装方式 —— 限制在一个对象中的子程序。
第 8章 自定义属性与自定义方法
(1),方法,的特点
“方法”可以像过程那样以传值或传址的方式传递参数,也可以像函数那样返回值,集中了过程和函数的所有功能与优点。与过程、函数的不同在于方法总是和一个对象密切相联,即仅当对象存在并且可见时方法才能被访问。
第 8章 自定义属性与自定义方法
(2),方法,的分类
VFP的方法分为两类:内部方法和用户自定义方法 。
内部方法是 VFP预制的子程序,可供用户直接调用或修改后使用 。 例如 Release,SetFocus等方法 。
用户自定义方法其实就是用户为某种需要所编写的子程序。
第 8章 自定义属性与自定义方法
(3) 方法的命名规则
1) 由字母,汉字,下划线和数字组成,并且必须以字母,汉字或下划线开头 。
2) 可以是 1~ 128个字符 。
3) 不能使用 VFP的保留字 。
4) 方法名不要与变量、数组名称相同,尽量取有意义的名称。
第 8章 自定义属性与自定义方法
8.2.2 自定义方法的建立与调用自定义方法的建立分为两步:方法的定义和编写方法代码。而自定义方法的调用则要指明调用的路径。
第 8章 自定义属性与自定义方法
1,添加新方法自定义新方法的步骤如下:
(1) 进入表单设计器,单击,表单,菜单中的,新建方法程序,命令,打开,新建方法程序,对话框 。
(2) 在,名称,栏中填入自定义方法的名称 。
(3) 在,说明,栏中填入新方法的简单说明
(4) 单击,添加,按钮,将新方法添加到方法程序中 。
(5) 单击,关闭,按钮,退出,新建方法程序,对话框 。
(6) 此时,在属性窗口的“方法程序”选项卡中可以看见新建的方法及其说明。
第 8章 自定义属性与自定义方法
2,编写自定义方法的代码编写自定义方法的代码与编写表单的事件过程代码方法基本一样 。
在编写时,可以双击属性窗口的新方法项,或直接打开“代码”窗口,在“过程”下拉列表中选择新方法,即可开始编写新方法的代码。
3,自定义方法的调用自定义方法的调用与表单的内部方法的调用一样,可以在事件过程或其他的方法代码中调用。
第 8章 自定义属性与自定义方法
8.2.3 参数传递与方法的返回值方法可以接收主程序传递的参数,也可以不接收参数。方法可以有返回的值(如函数),也可以没有返回的值(如过程)。
第 8章 自定义属性与自定义方法
1,参数传递如果需要使方法能够接收参数,则在方法代码的开始部分增加下面的命令行:
PARAMETERS 〈 形参表 〉
或
LPARAMETERS 〈 形参表 〉
调用时使用括号将实参括起:
对象名,方法名( 〈 实参表 〉 )
第 8章 自定义属性与自定义方法
2,参数传递的方式参数传递的方式分为传址方式和传值方式 。
(1) 传址方式传址方式是指主程序将实际参数在内存中的地址传给被调用的方法,由形式参数接收,而形式参数也使用该地址。即实际参数与形式参数使用相同的内存地址,形式参数的内容一经改变,实际参数的内容也将跟着改变。
第 8章 自定义属性与自定义方法
(2) 传值方式传值方式是指主程序将实际参数的一个备份传给被调用的方法,这个备份可以被方法改变,但在主程序中变量的原值不会改变。
第 8章 自定义属性与自定义方法
(3) 传址或传值方式的区别传址或传值方式对于数组的影响较大,如果采用传值方式只能传递数组的第一个元素的内容,其他元素无法传递 。 如果采用传址方式,则将整个数组的地址传给了被调用的方法,形式参数会自动变成一个与实际参数同样大小的数组 。
在默认的情况下,VFP在调用方法时采用传值方式 。
如果要改变参数的传递方式,可以采用以下两种方法:
1) 使用 SET UDFPARMS TO VALUE|REFERENCE命令强制改变参数的传递方式 。
2) 使用 @符号强制 VFP使用传址方式。
第 8章 自定义属性与自定义方法
3,方法的返回值如果需要使方法能够返回一个值,则要在方法代码的结束处增加下面的命令行:
RETURN [〈 表达式 〉 ]
如果缺省 〈 表达式 〉,VFP将自动返回,T.。
当代码执行到 RETURN命令,就会立即返回到主程序中 。
第 8章 自定义属性与自定义方法在主程序中可用以下形式调用方法:
(1) 在表达式中调用方法,例如,k =
x( )*Thisform.Demo(r)。
(2) 在 赋 值 语 句 中 调 用 方 法,例如,k =
Thisform.Demo(r)。
(3) 以等号命令调用方法,例如,=
Thisform.Demo(r)。以该形式调用方法将舍弃返回值。
4,示例第 8章 自定义属性与自定义方法
8.2.4 方法的递归调用递归就是一个过程调用过程本身。在方法的递归调用中,一个方法执行的某一步要用到它自身的上一步(或上几步)的结果。递归调用在处理阶乘运算、级数运算、
幂指数运算等方面特别有效。例如,自然数 n的阶乘可以递归定义为:
0
0
)!1(
1
!
n
n
nn
n