版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、会计学1自定义属性自定义属性(shxng)与方法与方法第一页,共32页。变量(binling)作用域第1页/共32页第二页,共32页。第2页/共32页第三页,共32页。【例【例8-1】设计一个计时器,能够设置倒计时的时间,并进行】设计一个计时器,能够设置倒计时的时间,并进行(jnxng)倒计时。倒计时。 设计步骤如下:设计步骤如下: (1) 添加自定义属性(shxng)。 (2) 建立应用程序用户界面与设置属性(shxng)。 8.1 自定义属性自定义属性 (3) 编写代码。编写代码。 编写微调器编写微调器Spinner1的的InteractiveChange事件代码:事件代码:THISFOR
2、M.sec = THIS.Value * 60 &给属性给属性SEC赋初始秒数赋初始秒数a1 = THIS.Valuea2 = IIF(a1 % 60 0 THISFORM.Command1.Enabled = .T.ELSE THISFORM.Command1.Enabled = .F.ENDIF 编写命令按钮编写命令按钮Command1的的Click事件事件(shjin)代码:代码:THISFORM.Timer1.Enabled=.T.THISFORM.Spinner1.Enabled=.F.THIS.Enabled=.F.编写计时器编写计时器Timer1的的Timer事件事件(s
3、hjin)代码:代码:THISFORM.sec=THISFORM.sec1a0 = THISFORM.sec & 秒数秒数IF a0 =0 a1 = INT(a0 / 60) & 分钟数分钟数 a2 = INT(a1 / 60) & 小时数小时数第4页/共32页第五页,共32页。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),S
4、TR(a2 % 60,2) THISFORM.Text1.Value = ALLT(b2 +: + b1 + : + b0) THISFORM.Spinner1.Value = a1ELSE THIS.Enabled=.F. THISFORM.Spinner1.Enabled=.T.ENDIF 运行程序,设置运行程序,设置(shzh)时间后按时间后按“开始开始”按钮,即开始倒计时,时间到时将弹出对话框。按钮,即开始倒计时,时间到时将弹出对话框。 图图8-3 倒计时器倒计时器第5页/共32页第六页,共32页。【例【例8-2】在例】在例7-3(P124)中使用数组属性来存放方阵的元素。求出主对角线
5、上元素之和以及方阵的最大元素。中使用数组属性来存放方阵的元素。求出主对角线上元素之和以及方阵的最大元素。 设计步骤如下:设计步骤如下: (1) 添加添加(tin ji)自定义属性。自定义属性。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
6、i 1 第6页/共32页第七页,共32页。IF x = VAL(THIS.a(j) yes = 1 & 如与前面的元素相同如与前面的元素相同(xin tn),则返回到,则返回到Do循环循环 EXIT ENDIF ENDFOR ENDDO THIS.a(i) = STR(x,3)ENDFORTHISFORM.Text1.Value = THISFORM.Text2.Value = THIS.List1.Refresh 修改修改“计算计算”按钮按钮Command1的的Click事件代码:事件代码:s = 0FOR I = 1 TO 5 s = s + VAL(THISFORM.a(i,i)
7、ENDFORTHISFORM.Text1.Value = s第7页/共32页第八页,共32页。第8页/共32页第九页,共32页。【例【例8-3】使用微调器控制色彩,还可以返回色彩的】使用微调器控制色彩,还可以返回色彩的RGB值值 设计步骤如下:设计步骤如下: (1) 添加自定义属性添加自定义属性,SPI(3),存放微调器对象。存放微调器对象。 (2) 建立应用程序用户界面。建立应用程序用户界面。 选择新建表单,进入表单设计器,首先增加一个命令按钮选择新建表单,进入表单设计器,首先增加一个命令按钮Command1、一个、一个形状控件形状控件Shape1和一个容器和一个容器(rngq)控件控件Co
8、ntainer1,并在,并在Shape1上覆盖一上覆盖一个标签控件个标签控件Label1。然后用鼠标右键单击容器。然后用鼠标右键单击容器(rngq)控件,在弹出的快捷菜控件,在弹出的快捷菜单中选择单中选择“编辑编辑”,进入容器,进入容器(rngq)控件的编辑状态(四周出现浅绿色边界)控件的编辑状态(四周出现浅绿色边界)。在容器。在容器(rngq)中增加两个文本框中增加两个文本框Text1、Text2和三个微调器和三个微调器Spinner1、Spinner2、Spinner3(如图(如图7-7所示)。所示)。 图7-6 调色盘 图7-7 设计(shj)表单界面第9页/共32页第十页,共32页。
9、(3) 设置对象属性。设置对象属性。 (4) 编写程序代码。编写程序代码。 编写表单的编写表单的Init事件事件(shjin)代码,建立属性数组对对象变量的代码,建立属性数组对对象变量的引用:引用:THIS.spi(1) = THIS.Container1.Spinner1THIS.spi(2) = THIS.Container1.Spinner2THIS.spi(3) = THIS.Container1.Spinner3 编写编写Spanner1的的InteractiveChange事件事件(shjin)代码:代码:r = THISFORM.spi(1).Valueg = THISFORM.
10、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)+)第10页/共32页第十一页,共32页。 编写编写Spanner2的的InteractiveChange事件事件(shjin)代码:代码:r = THISFORM.spi(1).Valueg = THISFORM.spi(2).Valueb = THISFORM.spi(3).ValueTHIS.Par
11、ent.Text2.BackColor = RGB(r,g,b)THIS.Parent.Text1.Value = ;Color = RGB(+STR(r,3)+,+STR(g,3)+,+STR(b,3)+)“ 编写编写Spanner3的的InteractiveChange事件事件(shjin)代码:代码:r = THISFORM.spi(1).Valueg = THISFORM.spi(2).Valueb = THISFORM.spi(3).ValueTHIS.Parent.Text2.BackColor = RGB(r,g,b)THIS.Parent.Text1.Value = ;Colo
12、r = RGB(+STR(r,3)+,+STR(g,3)+,+STR(b,3)+)第11页/共32页第十二页,共32页。8.2.1 自定义方法自定义方法(fngf)的概念的概念第12页/共32页第十三页,共32页。第13页/共32页第十四页,共32页。8.2 自定义方法自定义方法(fngf) 自定义方法的建立与调用 自定义方法的建立分为两步:方法的定义和编写方法代码。而自定义自定义方法的建立分为两步:方法的定义和编写方法代码。而自定义方法的调用则要指明调用的路径。方法的调用则要指明调用的路径。 方法的命名遵循下列方法的命名遵循下列VFP中名称的使用原则:中名称的使用原则: (1) 只能使用字母
13、、汉字、下划线和数字。只能使用字母、汉字、下划线和数字。 (2) 使用字母、汉字或下划线作为名称的开头。使用字母、汉字或下划线作为名称的开头。 (3) 名称可以是名称可以是1至至128个字符。个字符。 (4) 避免使用避免使用VFP的保留字。的保留字。 另外还要注意,方法名不要与变量、数组名称相同,尽量取有意义另外还要注意,方法名不要与变量、数组名称相同,尽量取有意义的名称。的名称。第14页/共32页第十五页,共32页。【例【例8-4】在例】在例8-3中使用自定义方法中使用自定义方法(fngf)来统一处理微调器的操来统一处理微调器的操作。作。 在例在例8-3的基础上进行修改,具体步骤如下:的基
14、础上进行修改,具体步骤如下: (1) 添加新方法(fngf)。进入表单设计器,单击系统主菜单中“表单”项,在下拉菜单中选择“新方法(fngf)程序”,打开“新建方法(fngf)程序”对话框。 图8-6 打开“新建方法程序”对话框图7-9 自定义的新方法单击单击“添加添加”按钮后再单击按钮后再单击“关闭关闭”按钮,按钮,退出新建方法程序对话框。此时,在属性退出新建方法程序对话框。此时,在属性窗口的窗口的“方法程序方法程序”选项卡中可以看见新选项卡中可以看见新建的方法及其说明。建的方法及其说明。第15页/共32页第十六页,共32页。 (2) 编写自定义方法的代码。编写自定义方法的代码与编写表单的事
15、件过程代码一样,可以双击属性窗口的新方法项SpiCh,或直接打开“代码”窗口,在“过程”下拉列表(li bio)中选择新方法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)+) 编写自定义方法(fngf)的代码第16页
16、/共32页第十七页,共32页。 (3) 自定义方法的调用。自定义方法的调用与表单的内部方法的调用一样,可以在事件过程或其他(qt)的方法代码中调用。 修改Spanner1的InteractiveChange事件代码:THISFORM.spich 修改Spanner2的InteractiveChange事件代码:THISFORM.spich 修改Spanner3的InteractiveChange事件代码:THISFORM.spich 表单的运行结果与例8-3完全相同。第17页/共32页第十八页,共32页。1. 参数的传递 若想使方法能够接收参数,只需在方法代码(di m)的开始增加命令行:PA
17、RAMETERS 形参表或LPARAMETERS 形参表 调用时使用括号将实参括起:对象名.方法名(实参表)第18页/共32页第十九页,共32页。第19页/共32页第二十页,共32页。【例8-5】在一个窗口中包含3个命令按钮,当用户单击其中(qzhng)一个时,要求其他个别按钮不能使用: 单击Command1后 单击Command3后 单击Command2后 三个按钮第20页/共32页第二十一页,共32页。 设计步骤如下: 应用程序用户界面的建立与对象属性的设置参见图8-10,下面介绍代码的编写。 (1) 添加新方法。 进入表单设计器,单击系统(xtng)主菜单中“表单”项,在下拉菜单中选择“
18、新方法程序”,打开“新建方法程序”对话框。 在“名称”栏中填入自定义方法的名称:CmdClk,单击“添加”按钮后再单击“关闭”按钮,退出新建方法程序对话框。此时,在属性窗口的“方法程序”选项卡中可以看见新建的方法。第21页/共32页第二十二页,共32页。 (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.Comm
19、and1.Enabled=.T. THIS.Command2.Enabled=.T.ENDCASE (3) 三个命令按钮的Click事件(shjin)代码完全相同:THISFORM.cmdclk(THIS) 说明:要注意在不同代码中THIS所代表的不同对象。第22页/共32页第二十三页,共32页。2. 参数传递的方式参数传递的方式(fngsh) 参数传递的方式参数传递的方式(fngsh)分为传址方式分为传址方式(fngsh)和传值方式和传值方式(fngsh)。 传址方式传址方式是指主程序将实际参数在内存中的地址传给被调用的方法,由形式参数接收,而形式参数也使用该地址。即实际参数与形式参数使用相
20、同的内存地址,是指主程序将实际参数在内存中的地址传给被调用的方法,由形式参数接收,而形式参数也使用该地址。即实际参数与形式参数使用相同的内存地址,形式参数的内容一经改变,实际参数的内容也将跟着改变。形式参数的内容一经改变,实际参数的内容也将跟着改变。 传值方式传值方式是指主程序将实际参数的一个备份传给被调用的方法,这个备份可以被方法改变,但在是指主程序将实际参数的一个备份传给被调用的方法,这个备份可以被方法改变,但在主程序中变量的原值不会改变。主程序中变量的原值不会改变。在默认的情况下,在默认的情况下,VFP在调用方法时采用传值方式。如果要改变参数的传递方式,可以采用以下两种方法:在调用方法时
21、采用传值方式。如果要改变参数的传递方式,可以采用以下两种方法: (1) 使用使用SET UDFPARMS TO VALUE|REFERENCE命令来强制改变参数的传递方式。命令来强制改变参数的传递方式。 (2) 使用使用符号来强制符号来强制VFP使用传址的参数传递方式。使用传址的参数传递方式。第23页/共32页第二十四页,共32页。【例8-6】编写求最大公约数的自定义方法,输入的两个整数按值传递,求出的最大公约数按地址传递。 设计步骤如下: 应用程序用户界面的建立与对象(duxing)属性的设置参见图7-13,下面介绍代码的编写:图7-13 求最大公约数 (1) 首先首先(shuxin)添加自
22、定义方法添加自定义方法Hcf。 (2) 编写自定义方法Hcf的代码:PARAMETERS m, n, ZIF m n t = m m = n n = tENDIFr = m % n第24页/共32页第二十五页,共32页。DO WHILE r 0 m = n n = r r = m % nENDDOZ = n & 将求出的最大公约数赋值给变量将求出的最大公约数赋值给变量Z (3) 编写编写“计算计算”按钮的按钮的Click事件代码,调用自定义方法事件代码,调用自定义方法(fngf)Hcf:x=VAL(THISFORM.Text1.Value)y=VAL(THISFORM.Text2.Va
23、lue)a=0IF x*y0 THISFORM.hcf(x,y,a) & 变量变量a按传址方式传递按传址方式传递 THISFORM.Label2.Caption=两数的最大公约是两数的最大公约是:+ALLT(STR(a)ENDIF例题:数据传递例题:数据传递.prg(调用过程时参数的传递)(调用过程时参数的传递)第25页/共32页第二十六页,共32页。3. 方法的返回值方法的返回值 若想使方法能够返回一个值,只需在方法代码的结束处增加若想使方法能够返回一个值,只需在方法代码的结束处增加(zngji)命令行:命令行:RETURN 表达式表达式 如果缺省表达式,如果缺省表达式,VFP将自动
24、返回将自动返回 .T.。 当代码执行到当代码执行到RETURN命令,就会立即返回到主程序中。命令,就会立即返回到主程序中。 在主程序中可用以下形式调用方法:在主程序中可用以下形式调用方法: (1) 在表达式中调用方法。如:在表达式中调用方法。如:k = PI()*THISFORM.Demo(r) (2) 在赋值语句中调用方法。如:在赋值语句中调用方法。如:k = THISFORM.Demo(r) (3) 以等号命令调用方法。如:以等号命令调用方法。如:= THISFORM.Demo(r)注:以等号命令调用方法将舍弃返回值。注:以等号命令调用方法将舍弃返回值。第26页/共32页第二十七页,共32页。【例8-7】改写例8-6中的自定义方法,使其能够(nnggu)返回值。然后通过在表达式中调用方法,得到三个整数的最大公约数。 设计步骤如下: 应用程序用户界面的建立与对象属性的设置参见图7-14,下面介绍代码的编写:图7-14 求最大公约数 (1) 首先添加首先添加(tin ji)自定义方
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 鼻饲并发症的预防性护理措施
- 护理专利的发明创造与转化机制
- 护理临床评估方法与技巧
- 多参数融合分析
- 房地产 -曼哈顿中城办公室数据2025年12月 Manhattan Midtown Office Figures December 2025
- 多传感器融合-第3篇
- 第三单元 第10课时 一次函数的图象与性质
- 高并发交易响应机制
- 2026 年中职康复治疗学类(康复治疗基础)试题及答案
- 办公场地租赁押金条款协议2025年修订版
- 2025年沈阳华晨专用车有限公司公开招聘参考笔试题库及答案解析
- 2025年投融资岗位笔试试题及答案
- 烤房转让合同范本
- (一诊)达州市2026届高三第一次诊断性测试历史试题(含答案)
- 《汽车网络与新媒体营销》期末考试复习题库(附答案)
- 外一骨科年终总结
- 走遍天下书为伴侣课件
- 2025四川成都东部新区招聘编外工作人员29人笔试考试参考题库及答案解析
- 辅警笔试题库及答案临沂
- (已瘦身)(新教材)2025年部编人教版三年级上册语文全册期末复习单元复习课件
- 2026中国人民银行直属事业单位招聘60人笔试备考试卷带答案解析
评论
0/150
提交评论