江西省赣州市信丰县信丰中学高中信息技术 表单间参数的传递素材.doc_第1页
江西省赣州市信丰县信丰中学高中信息技术 表单间参数的传递素材.doc_第2页
江西省赣州市信丰县信丰中学高中信息技术 表单间参数的传递素材.doc_第3页
江西省赣州市信丰县信丰中学高中信息技术 表单间参数的传递素材.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

表单间参数的传递在用vfp进行程序设计时,我们经常要用到表单间参数的传递。通常,最常见的有两种传递方式:(1)把某一个或某些参数传递给表单;(2)表单释放后传回一个返回值。表单间参数传递的第一种方式最常见的就是用命令doformformnamewithcparameterlist,这时一般由表单的init事件接收参数。例如,我们新建一个表单test.scx,然后在该表单的init事件中加入以下代码:lparameterstcparameter1,tcparameter2,tcparameter3messagebox(tcparameter1)messagebox(tcparameter2)messagebox(tcparameter3)然后,执行命令doformtest.scxwitha,b,c,这时,在表单显示出来以前会依次弹出三个消息框,分别显示“a”、“b”和“c”,我们成功把这几个参数传递给了表单test.scx。同样也可把数组传递给表单,但需要注意的是,用doformformnamewithcparameterlist命令传递数组时,无论是setudfparmstovalueset还是setudfparmstoreference,数组都是按引用传递的,传递其他类型的变量也是如此。如果是类定义来创建一个表单对象,可以用createobject(classname,eparameter1,eparameter2,.)函数向表单传递参数。例如,我们可以新建一个程序文件test.prg,写入以下代码:publicgoformgoform=createobject(form1,800)goform.show()defineclassform1asformprocedureinitlparameterstnwidththis.width=tnwidthendprocenddefine执行程序后,会看到表单的宽度充斥着整个屏幕(假如你显示器的分辨率是800*600的话),我们成功向以上所定义的form1类传递了一个数值型参数,并且,它用这个参数作为其宽度。值得注意的是,用createobject()函数传递参数的机制与doformformnamewithcparameterlist不同,参数的传递方式受setudfparmsto的制约。用命令doformformnametovarname,可以实现表单间的第二种参数传递方式。要使用该命令,表单必须是模式表单(windowtype属性设置为1)。可以在表单的unload事件过程中使用return命令来指定返回值。如果不指定返回值,就返回默认值“真”(.t.)。我们可以把上面的test.scx的windowtype属性设置为1,init事件的代码改为:lparameterstcparameter1,tcparameter2,tcparameter3this.addobject(optiongroup1,optiongroup)withthis.optiongroup1.autosize=.t.buttoncount=3.buttons1.caption=tcparameter1.buttons2.caption=tcparameter2.buttons3.caption=tcparameter3.value=1.visible=.t.endwith=bindevent(this.optiongroup1,interactivechange,this,refresh)在refresh方法中加入:this.tag=this.optiongroup1.buttons(this.optiongroup1.value).caption在unload事件中加入:returnthis.tag然后在命令框中敲入命令:locallcreturnvaluelcreturnvalue=doformtest.scxwitha,b,ctolcreturnvalue这时,再在运行的表单中选择一个值,然后关闭表单,再来查看我们刚才所定义的变量的值:?lcreturnvalue,就会发现它的值就是刚才所选的值。其实,不用doformformnametovarname命令完全也能实现这种结果,但是同上面一样,表单的windowtype属性必须设置为1。这时方法又有两种:一是定义一个全局变量,然后在运行的表单中改变全局变量的值;一是向表单传递一个对象,表单把这一对象存储到它的某个属性中(可新建一自定义属性,这是为了以后对该对象进行引用),然后再对传过来的对象进行一些修改。从类定义中创建表单时,doformformnametovarname命令就没有办法再进行使用了,这时,我们只能用这两种方法进行替代。全局变量的方法比较简单,下面我们仅对第二种方法进行举例说明。我们新建一个程序文件select.prg,输入下列代码并保存:defineclassselectoptionsasformcaption=optionswidth=350autocenter=.t.borderstyle=2maxbutton=.f.minbutton=.f.showwindow=1windowtype=1object=nulladdobjectcommand1ascommandbuttonwith;left=270,top=15,width=70,height=25,;caption=ok,visible=.t.,tabindex=2addobjectcommand2ascommandbuttonwith;left=270,top=45,width=70,height=25,;caption=55,alen(taarray)*22+30,85)this.addobject(optiongroup1,optiongroup)withthis.optiongroup1.left=15.top=15.width=240.height=this.height-30.buttoncount=alen(taarray).value=1.visible=.t.tabindex=1fori=1toalen(taarray).buttonsi.autosize=.t.buttonsi.caption=taarrayiendforendwithendprocproceduredestroyifempty(this.tag)=.f.this.object.add(this.optiongroup1.value)elsethis.object.add(0)endifendprocprocedurecommand1.clickthis.parent.tag=closethis.parent.release()endprocprocedurecommand2.clickthis.parent.release()endprocenddefine然后再新建一个程序文件test2.prg:setproceduretoselect.prglocallaarray3,locollection,loformlaarray1=alaarray2=blaarray3=clocollection=createobject(collection)loform=createobject(selectoptions,laarray,locollection)loform.show(1)messagebox(你选择了第+alltrim(str(locollecti

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论