Access交流中心

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

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

yuhong  发表于: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

 

Top
zhaoyoulong 发表于:2016-10-13 10:54:36
Public Function DClick(ctrName As String)
msgbox ctrName '这里是 ctrName  而不是 ctr.name

End Function


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



yuhong 发表于:2016-10-13 11:30:10

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

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

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



煮江品茶 发表于:2016-10-13 12:06:11
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


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


yuhong 发表于:2016-10-13 12:56:24

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

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




煮江品茶 发表于:2016-10-13 14:22:36

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

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



yuhong 发表于:2016-10-13 14:38:40
十分感谢!

总记录:6篇  页次:1/1 9 1 :