Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

回复 加入收藏帖  复制
我要提问 帖子上移

如何将对象传递给这个过程?

yuhong 等级: 一星会员 积分:124 金币:840 来自:天津Access交流中心 发表于:2016-10-13 09:49:33   已结帖
楼主

各位请教个问题?如何传递对象参数?DClick()" 括号里需要填写个参数,参数是ctr本身,changeCtr函数里的ctr控件的OnDblClick 过程需要填写变量,应如何填写?ctr.OnDblClick = "=DClick(ctr)"?肯定不行!如何引用呢?

函数如下:

Public Function changeCtr()
Dim ctr As Control
    For Each ctr In Me.Controls
            ctr.OnDblClick = "=DClick('" & ctr.Name & "')"   '这样也不行ctr.OnDblClick = "=DClick(" & ctr.Name & ")"  '这样也不行ctr.OnDblClick = "=DClick(ctr)"?也不行!究竟如何填写?ctr.OnDblClick = "=DClick(ctr对象????)"
    Next
End Function

Public Function DClick(ctrName As String)
msgbox ctr.name
End Function

 

access培训  诚聘access开发人员

    yuhong
      获得社区协助:请教问题(即发帖)5篇,其中获得解决的3篇;
      协助社区成员:协助他人(即回帖)145篇,其中被设为【最佳答案】的31篇;
      协助我们社区:发布技术文章21篇,邀请了0名新会员注册本社区(如何邀请会员注册,详见:http://www.accessoft.com/sitehelp.asp)。
Top

扫描下方工作人员的微信二维码加微信,邀您加入Access课堂微信群,进入一个技术交际圈:

网站工作人员微信

zhaoyoulong 等级:一星会员 积分:529 金币:400 来自:南京Access交流中心 发表于2016/10/13 10:54:36 
1楼 得分: 0
Public Function DClick(ctrName As String)
msgbox ctrName '这里是 ctrName  而不是 ctr.name

End Function


ctr.OnDblClick = "=DClick('" & ctr.Name & "')"  



    很高兴与您就本帖子进行交流,如果我的回答已经解决了您的问题,请点击上方的“最佳答案”,这样本帖子就不会在“待解决问题区”显示了,我也将获得2个积分奖励,并不会减少您的积分!
    zhaoyoulong
      获得社区协助:请教问题(即发帖)19篇,其中获得解决的12篇;
      协助社区成员:协助他人(即回帖)663篇,其中被设为【最佳答案】的196篇;
      协助我们社区:发布技术文章10篇,邀请了0名新会员注册本社区(如何邀请会员注册,详见:http://www.accessoft.com/sitehelp.asp)。
yuhong 等级:一星会员 积分:124 金币:840 来自:天津Access交流中心 发表于2016/10/13 11:30:10 
2楼 得分: 0

不好意思:我写差了!应该是:

Public Function DClick(ctr As control)
msgbox ctr.name
End Function

ctr.OnDblClick = "=DClick('" & ctr.Name & "')"  还这样?这样传给它的是string吧,类型不符!



    yuhong
      获得社区协助:请教问题(即发帖)5篇,其中获得解决的3篇;
      协助社区成员:协助他人(即回帖)145篇,其中被设为【最佳答案】的31篇;
      协助我们社区:发布技术文章21篇,邀请了0名新会员注册本社区(如何邀请会员注册,详见:http://www.accessoft.com/sitehelp.asp)。
煮江品茶 等级:荣誉管理员★★★★★ 积分:5140 金币:17920 来自:武汉Access交流中心 发表于2016/10/13 12:06:11 
3楼 得分: 0
1、写一个函数,在这个函数中通过控件名称获取控件对象,然后对控件的属性进行某些设置
public function ctrlsDblCilck(byval ctrlname as string)
    dim ctrl as control
    set ctrl=me.controls(ctrlname)
    '引用当前对象的一些操作
end function


2、在某个事件中(一般在窗体加载事件中),进行如下处理:
dim ctrl as control
for each ctrl in me.controls
    if ctrl.controltype=某类控件 then
        ctrl.OnDblCilck="=ctrlsDbCilck('" & ctrl.name & "')"
    end if
next


所以是向函数传递对象名,然后在函数中通过对象名获取对象,然后对对象进行操作。


    很高兴与您就本帖子进行交流,如果我的回答已经解决了您的问题,请点击上方的“最佳答案”,这样本帖子就不会在“待解决问题区”显示了,我也将获得2个积分奖励,并不会减少您的积分!
    煮江品茶
      获得社区协助:请教问题(即发帖)11篇,其中获得解决的7篇;
      协助社区成员:协助他人(即回帖)4989篇,其中被设为【最佳答案】的1583篇;
      协助我们社区:发布技术文章448篇,邀请了47名新会员注册本社区(如何邀请会员注册,详见:http://www.accessoft.com/sitehelp.asp)。
yuhong 等级:一星会员 积分:124 金币:840 来自:天津Access交流中心 发表于2016/10/13 12:56:24 
4楼 得分: 0

嘿嘿!惊动了煮江品茶老师!实际操作中,我就是传递了控件的名称,我想看看诸如此类的表述中,能否直接传递对象参数!看样子

此类表述:ctrl.OnDblCilck="=ctrlsDbCilck(这里面无法是对象了????)",也就是说,“=aaa()” 引号之内无法直接引用对象变量了!可以这样理解吗?




    yuhong
      获得社区协助:请教问题(即发帖)5篇,其中获得解决的3篇;
      协助社区成员:协助他人(即回帖)145篇,其中被设为【最佳答案】的31篇;
      协助我们社区:发布技术文章21篇,邀请了0名新会员注册本社区(如何邀请会员注册,详见:http://www.accessoft.com/sitehelp.asp)。
煮江品茶 等级:荣誉管理员★★★★★ 积分:5140 金币:17920 来自:武汉Access交流中心 发表于2016/10/13 14:22:36 最佳答案
5楼 得分: 2

当然不能引用对象,因为在vba中给事件赋值一个函数表达式,这个表达式本身用一个字符串表示。因此就无法传递对象,只能传递简单数据类型。

其他语言可以解决这个问题,比如c#和vb.net是通过代理的方式来处理,这种条件下就可以传递对象。VBa好像没有这样的处理方法。



    很高兴与您就本帖子进行交流,如果我的回答已经解决了您的问题,请点击上方的“最佳答案”,这样本帖子就不会在“待解决问题区”显示了,我也将获得2个积分奖励,并不会减少您的积分!
    煮江品茶
      获得社区协助:请教问题(即发帖)11篇,其中获得解决的7篇;
      协助社区成员:协助他人(即回帖)4989篇,其中被设为【最佳答案】的1583篇;
      协助我们社区:发布技术文章448篇,邀请了47名新会员注册本社区(如何邀请会员注册,详见:http://www.accessoft.com/sitehelp.asp)。
yuhong 等级:一星会员 积分:124 金币:840 来自:天津Access交流中心 发表于2016/10/13 14:38:40 
6楼 得分: 0
十分感谢!

    yuhong
      获得社区协助:请教问题(即发帖)5篇,其中获得解决的3篇;
      协助社区成员:协助他人(即回帖)145篇,其中被设为【最佳答案】的31篇;
      协助我们社区:发布技术文章21篇,邀请了0名新会员注册本社区(如何邀请会员注册,详见:http://www.accessoft.com/sitehelp.asp)。
总记录:6篇  页次:1/1 9 1 :
您还没有在Access软件网登录不能回复帖子
  • 你没有登录,请点击后面链接登录:登录
  • 如果你没有注册,请点击后面链接注册:注册,注册完成后,请再次访问本页功能。