欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    自定义属性与方法.ppt

    • 资源ID:6019635       资源大小:228KB        全文页数:33页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    自定义属性与方法.ppt

    ,第 8 章,自定义属性与方法,8.1 自定义属性,8.2 自定义方法,如果说内存变量是个自由数据元素,那么属性就是与某对象相联系的数据元素。自定义属性就是依附到表单上的内存变量,在表单存在时期内,可以象“全局变量”一样使用。由于属性的使用需要严格的引用格式(对象.属性),使得属性使用起来在某种程度上比传统的xBASE变量作用域(全局、局部、私有)更加安全。在某些场合,可以使用“属性”来代替使用“变量”。而方法则是VFP中的一个新式的程序组装方式限制在一个对象中的子程序。,第8章 自定义属性与方法,过程间的数据传递除参数传递,还有一种是按变量的作用域传递数据。全局变量:PUBLIC 定义变量以后,在任何过程中都可使用的变量。私有变量:PRIVATE 未加任何变量类型说明,直接赋值使用的内存变量,本过程其被调用的下层过程中有效。本过程运行结束,变量无效。区域变量:LOCAL 区域变量只能在建立它的过程中使用,不能在上层及下层过程中使用。例题:内存变量作用域例题.prg大小写转换.scx变量作用域.scx,变量作用域,VFP允许用户像定义变量一样自定义各种类型的属性。自定义属性只能依附于表单对象 对于由控件创建的对象,无法增加新的属性。8.1.1 添加自定义属性 例如:在表单中添加一个自定义的属性Sec 在表单设计器,单击“表单”项,选择“新建属性”,打开新建属性对话框。在“名称(Name)”栏中填入自定义属性的名称Sec,然后在“说明”栏中填入该属性的简单说明:单击“添加”按钮后再单击“关闭”按钮,退出“新建属性”对话框。此时,在属性窗口的“其他”选项卡中可以看见新建的属性及其说明,新定义属性的类型为逻辑型,值为:.F.,我们可以将它改为其他类型,如数值型值:0,8.1 自定义属性,教学进程,【例8-1】设计一个计时器,能够设置倒计时的时间,并进行倒计时。设计步骤如下:,(1)添加自定义属性。(2)建立应用程序用户界面与设置属性。,8.1 自定义属性,添加自定义属性,(3)编写代码。编写微调器Spinner1的InteractiveChange事件代码:THISFORM.sec=THIS.Value*60&给属性SEC赋初始秒数a1=THIS.Valuea2=IIF(a1%60 10,“0”+STR(a1%60,1),STR(a1%60,2)&分钟a3=STR(INT(a1/60),1)&小时,教学进程,THISFORM.Text1.Value=0+a3+:+a2+:00IF a1 0 THISFORM.Command1.Enabled=.T.ELSE THISFORM.Command1.Enabled=.F.ENDIF 编写命令按钮Command1的Click事件代码:THISFORM.Timer1.Enabled=.T.THISFORM.Spinner1.Enabled=.F.THIS.Enabled=.F.编写计时器Timer1的Timer事件代码:THISFORM.sec=THISFORM.sec1a0=THISFORM.sec&秒数IF a0=0 a1=INT(a0/60)&分钟数 a2=INT(a1/60)&小时数,教学进程,b0=IIF(a0%60 10,0+STR(a0%60,1),STR(a0%60,2)b1=IIF(a1%60 10,0+STR(a1%60,1),STR(a1%60,2)b2=IIF(a2%60 10,0+STR(a2%60,1),STR(a2%60,2)THISFORM.Text1.Value=ALLT(b2+:+b1+:+b0)THISFORM.Spinner1.Value=a1ELSE THIS.Enabled=.F.THISFORM.Spinner1.Enabled=.T.ENDIF 运行程序,设置时间后按“开始”按钮,即开始倒计时,时间到时将弹出对话框。,图8-3 倒计时器,教学进程,数组属性,【例8-2】在例7-3(P124)中使用数组属性来存放方阵的元素。求出主对角线上元素之和以及方阵的最大元素。设计步骤如下:(1)添加自定义属性。A(5,5)(2)建立应用程序用户界面与设置属性。,(3)修改代码。清除表单的Load、UnLoad事件代码,并修改表单的Activate事件代码:FOR i=1 TO 25 yes=1 DO WHILE yes=1 x=INT(RAND()*100)yes=0 FOR j=1 TO i 1,教学进程,IF x=VAL(THIS.a(j)yes=1&如与前面的元素相同,则返回到Do循环 EXIT ENDIF ENDFOR ENDDO THIS.a(i)=STR(x,3)ENDFORTHISFORM.Text1.Value=THISFORM.Text2.Value=修改“计算”按钮Command1的Click事件代码:s=0FOR I=1 TO 5 s=s+VAL(THISFORM.a(i,i)ENDFORTHISFORM.Text1.Value=s,教学进程,修改“计算”按钮Command1的Click事件代码:s=0FOR I=1 TO 5 s=s+VAL(THISFORM.a(i,i)ENDFORTHISFORM.Text1.Value=smax=0FOR I=1 TO 5 FOR j=1 TO 5 IF max VAL(THISFORM.a(i,j)max=VAL(THISFORM.a(i,j)p=i q=j ENDIF ENDFORENDFORTHISFORM.Text2.Value=A(+STR(p,1)+,+STR(q,1)+)=+STR(max,3)Command2的Click事件代码不变。,教学进程,【例8-3】使用微调器控制色彩,还可以返回色彩的RGB值 设计步骤如下:(1)添加自定义属性,SPI(3),存放微调器对象。(2)建立应用程序用户界面。选择新建表单,进入表单设计器,首先增加一个命令按钮Command1、一个形状控件Shape1和一个容器控件Container1,并在Shape1上覆盖一个标签控件Label1。然后用鼠标右键单击容器控件,在弹出的快捷菜单中选择“编辑”,进入容器控件的编辑状态(四周出现浅绿色边界)。在容器中增加两个文本框Text1、Text2和三个微调器Spinner1、Spinner2、Spinner3(如图7-7所示)。,图7-6 调色盘,图7-7 设计表单界面,教学进程,(3)设置对象属性。(4)编写程序代码。编写表单的Init事件代码,建立属性数组对对象变量的引用:编写Spanner1的InteractiveChange事件代码:r=THISFORM.spi(1).Valueg=THISFORM.spi(2).Valueb=THISFORM.spi(3).ValueTHIS.Parent.Text2.BackColor=RGB(r,g,b)THIS.Parent.Text1.Value=;Color=RGB(+STR(r,3)+,+STR(g,3)+,+STR(b,3)+),教学进程,编写Spanner2的InteractiveChange事件代码:r=THISFORM.spi(1).Valueg=THISFORM.spi(2).Valueb=THISFORM.spi(3).ValueTHIS.Parent.Text2.BackColor=RGB(r,g,b)THIS.Parent.Text1.Value=;Color=RGB(+STR(r,3)+,+STR(g,3)+,+STR(b,3)+)“编写Spanner3的InteractiveChange事件代码:r=THISFORM.spi(1).Valueg=THISFORM.spi(2).Valueb=THISFORM.spi(3).ValueTHIS.Parent.Text2.BackColor=RGB(r,g,b)THIS.Parent.Text1.Value=;Color=RGB(+STR(r,3)+,+STR(g,3)+,+STR(b,3)+),8.2.1 自定义方法的概念1.子程序将重复使用的程序设计成能够完成一定功能的、可供其他程序使用(调用)的独立程序段。这种程序段称为子程序,它独立存在,但可以被多次调用,调用的程序称为主程序。子程序的输入输出,应根据实际情况灵活掌握,一般表现为主程序与子程序间的数据传递。,8.2.1 自定义方法的概念,2.过程、函数与方法,2.过程、函数与方法VFP子程序的结构分为过程、函数与方法三类。过程与函数的区别在于:函数(RETURN语句)返回一个值而过程不返回值。方法是VFP中的一个新式的程序组装方式限制在一个对象中的子程序。“方法”可以像过程那样以传值或传址的方式传递参数,也可以像函数那样返回值,集中了过程和函数的所有功能与优点。与过程、函数的不同在于方法总是和一个对象密切相联,即仅当对象存在并且可见时方法才能被访问。VFP的方法分为两类:内部方法和用户自定义方法。内部方法是VFP预制的子程序,可供用户直接调用或修改后使用,如Release、SetAll、SetFocus等方法。VFP提供了数10种内部方法,并且允许用户使用自定义的方法。用户自定义方法其实就是用户为某种需要所编写的子程序。,教学进程,8.2 自定义方法,自定义方法的概念,自定义方法的建立与调用,自定义方法的建立分为两步:方法的定义和编写方法代码。而自定义方法的调用则要指明调用的路径。方法的命名遵循下列VFP中名称的使用原则:(1)只能使用字母、汉字、下划线和数字。(2)使用字母、汉字或下划线作为名称的开头。(3)名称可以是1至128个字符。(4)避免使用VFP的保留字。另外还要注意,方法名不要与变量、数组名称相同,尽量取有意义的名称。,教学进程,【例8-4】在例8-3中使用自定义方法来统一处理微调器的操作。在例8-3的基础上进行修改,具体步骤如下:,(1)添加新方法。进入表单设计器,单击系统主菜单中“表单”项,在下拉菜单中选择“新方法程序”,打开“新建方法程序”对话框。,图8-6 打开“新建方法程序”对话框,图7-9 自定义的新方法,单击“添加”按钮后再单击“关闭”按钮,退出新建方法程序对话框。此时,在属性窗口的“方法程序”选项卡中可以看见新建的方法及其说明。,教学进程,(2)编写自定义方法的代码。编写自定义方法的代码与编写表单的事件过程代码一样,可以双击属性窗口的新方法项SpiCh,或直接打开“代码”窗口,在“过程”下拉列表中选择新方法SpiCh,即可开始编写新方法的代码(图7-10):r=THISFORM.spi(1).Valueg=THISFORM.spi(2).Valueb=THISFORM.spi(3).ValueTHIS.Container1.Text2.BackColor=RGB(r,g,b)THIS.Container1.Text1.Value=Color=RGB(+STR(r,3)+,+STR(g,3)+,+STR(b,3)+),编写自定义方法的代码,教学进程,(3)自定义方法的调用。自定义方法的调用与表单的内部方法的调用一样,可以在事件过程或其他的方法代码中调用。修改Spanner1的InteractiveChange事件代码:THISFORM.spich 修改Spanner2的InteractiveChange事件代码:THISFORM.spich 修改Spanner3的InteractiveChange事件代码:THISFORM.spich 表单的运行结果与例8-3完全相同。,教学进程,参数的传递与方法的返回值,1.参数的传递 若想使方法能够接收参数,只需在方法代码的开始增加命令行:PARAMETERS 形参表或LPARAMETERS 形参表 调用时使用括号将实参括起:对象名.方法名(实参表),说明:,LPARAMETERS与PARAMETERS的区别在于:PARAMETERS命令所接收的参数变量属于PRIVATE(专用)性质,LPARAMETERS命令所接收的参数变量属于LOCAL(局部)性质。实参表中实际参数的个数最多不能超过27个。若形参表中形参的个数多于实际参数的个数,则多余的形参变量的值为.F.。若实际参数的个数多于形参表中形参的个数,则出现“程序错误”提示:必须指定额外参数。形参表实际参数&多余的形参变量的值为.F.实际参数 形参表&“程序错误”在调用方法时,无论指定或不指定实际参数方法名后都可以带一对括号。实参表中的实际参数可以是任何类型的变量、函数、数组、表达式,甚至是对象。例:浏览数据表,教学进程,【例8-5】在一个窗口中包含3个命令按钮,当用户单击其中一个时,要求其他个别按钮不能使用:,教学进程,设计步骤如下:应用程序用户界面的建立与对象属性的设置参见图8-10,下面介绍代码的编写。(1)添加新方法。进入表单设计器,单击系统主菜单中“表单”项,在下拉菜单中选择“新方法程序”,打开“新建方法程序”对话框。在“名称”栏中填入自定义方法的名称:CmdClk,单击“添加”按钮后再单击“关闭”按钮,退出新建方法程序对话框。此时,在属性窗口的“方法程序”选项卡中可以看见新建的方法。,教学进程,(2)编写自定义方法CmdClk的代码:LPARAMETERS xDO CASE CASE x=THIS.Command1 THIS.Command2.Enabled=.F.CASE x=THIS.Command2 THIS.Command1.Enabled=.F.CASE x=THIS.Command3 THIS.Command1.Enabled=.T.THIS.Command2.Enabled=.T.ENDCASE(3)三个命令按钮的Click事件代码完全相同:THISFORM.cmdclk(THIS)说明:要注意在不同代码中THIS所代表的不同对象。,教学进程,2.参数传递的方式,参数传递的方式分为传址方式和传值方式。,传址方式是指主程序将实际参数在内存中的地址传给被调用的方法,由形式参数接收,而形式参数也使用该地址。即实际参数与形式参数使用相同的内存地址,形式参数的内容一经改变,实际参数的内容也将跟着改变。传值方式是指主程序将实际参数的一个备份传给被调用的方法,这个备份可以被方法改变,但在主程序中变量的原值不会改变。在默认的情况下,VFP在调用方法时采用传值方式。如果要改变参数的传递方式,可以采用以下两种方法:(1)使用SET UDFPARMS TO VALUE|REFERENCE命令来强制改变参数的传递方式。(2)使用符号来强制VFP使用传址的参数传递方式。,教学进程,【例8-6】编写求最大公约数的自定义方法,输入的两个整数按值传递,求出的最大公约数按地址传递。设计步骤如下:应用程序用户界面的建立与对象属性的设置参见图7-13,下面介绍代码的编写:,图7-13 求最大公约数,(1)首先添加自定义方法Hcf。,(2)编写自定义方法Hcf的代码:PARAMETERS m,n,ZIF m n t=m m=n n=tENDIFr=m%n,教学进程,DO WHILE r 0 m=n n=r r=m%nENDDOZ=n&将求出的最大公约数赋值给变量Z(3)编写“计算”按钮的Click事件代码,调用自定义方法Hcf:x=VAL(THISFORM.Text1.Value)y=VAL(THISFORM.Text2.Value)a=0IF x*y0 THISFORM.hcf(x,y,a)&变量a按传址方式传递 THISFORM.Label2.Caption=两数的最大公约是:+ALLT(STR(a)ENDIF例题:数据传递.prg(调用过程时参数的传递),教学进程,3.方法的返回值 若想使方法能够返回一个值,只需在方法代码的结束处增加命令行:RETURN 表达式 如果缺省表达式,VFP将自动返回.T.。当代码执行到RETURN命令,就会立即返回到主程序中。在主程序中可用以下形式调用方法:(1)在表达式中调用方法。如:k=PI()*THISFORM.Demo(r)(2)在赋值语句中调用方法。如:k=THISFORM.Demo(r)(3)以等号命令调用方法。如:=THISFORM.Demo(r)注:以等号命令调用方法将舍弃返回值。,教学进程,【例8-7】改写例8-6中的自定义方法,使其能够返回值。然后通过在表达式中调用方法,得到三个整数的最大公约数。设计步骤如下:应用程序用户界面的建立与对象属性的设置参见图7-14,下面介绍代码的编写:,图7-14 求最大公约数,(1)首先添加自定义方法Hcf。,教学进程,(2)编写自定义方法Hcf的代码:PARAMETERS m,nIF m 0 m=n n=r r=m%nENDDORETURN n&将求出的最大公约数返回,教学进程,(3)编写“计算”按钮的Click事件代码,调用自定义方法Hcf:x=VAL(THISFORM.Text1.Value)y=VAL(THISFORM.Text2.Value)z=VAL(THISFORM.Text3.Value)IF x*y*z 0 a=THISFORM.hcf(x,y)b=THISFORM.hcf(a,z)THISFORM.Label2.Caption=3个数的最大公约数是:+ALLT(STR(b)ENDIF,教学进程,【例8-】计算组合数的程序。在表单中,利用微调器选择参数,然后按等号按钮即可得到所需的组合数(如图)。设计步骤如下:(1)应用程序用户界面的建立参见图。(2)属性的设置。,(3)代码的编写:首先在表单中增加一个计算阶乘的自定义方法Fact(),其代码为:PARAMETER K P=1 FOR I=1 TO K P=P*I ENDFOR RETURN P,编写命令按钮“=”的Click事件代码:M=VAL(THISFORM.TExt1.VALUE)N=VAL(THISFORM.TExt2.VALUE)IF M*N 0THISFORM.TEXT3.VALUE=THISFORM.FACT(M)/;THISFORM.FACT(N)/THISFORM.FACT(M-N)ENDIF这里用到计算组合数的公式:,

    注意事项

    本文(自定义属性与方法.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开