CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他数据库开发 >  VFP

在表单如何用代码新增一个方法或属性?

楼主tracylin888(小林)2006-03-03 20:11:36 在 其他数据库开发 / VFP 提问

如何在表单的init或load方法内写入代码,通过代码向表单新增一个临时方法或属性,此表单关闭后不保存此方法或属性,同时通过代码增加完临时方法或属性后,如何给新增的临时方法加入代码或设置属性值?  
   
  比如我用代码新增了一个label控件,如何给这个控件注入click事件?  
  this.AddObject('label1','label')  
  WITH   this  
        .label1.visible=.t.  
        .label1.caption='自动加载项目1'  
        .label1.top=50  
        .label1.backstyle=0  
        .label1.autosize=.t.  
  ENDWITH  
   
   
   
   
  用BINDEVENT来绑定可以行得通,但因为我要求随机生成的label个数较多,  
   
  在表中有           标签caption名、标签name名、代码字段,  
   
  记录内容为       随机标签1             label1           do   form   xx.scx          
   
  我想在一个表单内根据表中记录随机生成N个label控件,并给每个label控件的click定义事件代码,click事件有规律性,都是do   form   xx.scx类的代码。这样能实现码?  
  问题点数:5、回复次数:1Top

1 楼apple_8180(十豆三)回复于 2006-03-04 08:48:39 得分 0

请参考:  
   
  表单运行时用BINDEVENT()来绑定事件,属性或方法从VFP自己的对象到其它VFP对象  
   
  *--------------------------------  
   
  以下为一个列子:  
   
  在一个表单中有n个命令按钮,我想随便单击其中任何一个按钮,此表单关闭,进入另一个表单。  
  不想一个按钮一个按钮的添加代码,而想用动态方式将对象的CLICK事件与原有或新建的事件或方法绑定。  
   
  ----------------------------------------------------------------------------------  
   
  可以为表单新建一个方法,比如NewMethod,然后写入诸如下面的代码:  
  THISForm.Release  
  DO   FORM   表单名  
   
  在表单的Init事件中加入以下代码:  
  FOR   i   =   1   TO   THIS.ControlCount  
  IF   UPPER(THIS.Controls[i].BaseClass)   ==   "COMMANDBUTTON"  
  =   BINDEVENT(THIS.Controls[i],   "Click",   THIS,   "NewMethod")  
  ENDIF  
  ENDFOR  
   
  这样应该就可以了。但是,需要注意的是,只有VFP8及以上版本才有BINDEVENT()函数。  
  也完全可以把按钮做成类,然后再向表单中添加若干基于该类的按钮。  
  不过如果如你所说,按钮是不可视的,那应该怎么都没用了。  
   
   
   
  ----------------------------------------------------------------------------------  
  动态加载一个控件,如Grid,并给Grid的Text1的RightClick事件绑定事件:  
   
  1、建一个过程文件(如MyProc.PRG),内容如下  
  DEFINE   CLASS   myhandler   AS   Session  
  PROCEDURE   MyRightClick  
  MESSAGEBOX('ok',64,'')   &&此处改为相应代码  
  RETURN  
  ENDPROC    
  ENDDEFINE  
   
   
   
  2、表单的INIT事件:  
   
  SET   PROCEDURE   TO   MyProc.prg  
   
   
  3、表单上动态加载控件(这里是Grid)按钮的CLICK事件:  
   
  THISFORM.ADDOBJECT('Grid1','Grid')  
  THISFORM.Grid1.RECORDSOURCE='表名'  
  THISFORM.Grid1.TOP=100  
  THISFORM.Grid1.LEFT=100  
  PUBLIC   oHandler  
  oHandler=NEWOBJECT("myhandler")  
  BINDEVENT(THISFORM.Grid1.Column1.Text1,"RightClick",oHandler,"MyRightClick")  
  THISFORM.Grid1.VISIBLE=.T.  
  Top

相关问题

  • 用JS来控制表单中的input字段属性为只读的代码是什么呀?谢了!
  • 求教form(表单)属性
  • 代码完善:Javascript代码\动态增加表单元素???
  • 怎样用JAVASCIRPT改变表单背景和表单的只读属性??
  • 问一个关于表单属性ENCTYPE传表单内容的问题
  • 大家好,请问怎样更新我修改的Delphi原代码,让Delphi识别我新增的属性和方法?
  • 表单对象不支持submit属性,但是reset属性支持,为什么?
  • 一个关于表单属性的问题?
  • 哪位提供详细的表单对象属性的资料!!!
  • 关于表单自定义属性的问题求教……

关键词

  • 代码
  • 属性
  • grid
  • 控件
  • 表单
  • thisform
  • bindevent
  • 按钮
  • 新增
  • 事件

得分解答快速导航

  • 帖主:tracylin888

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo