Access交流中心

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

关于控件的可用性设置?

qfb  发表于:2014-01-21 11:04:18  
复制

我在一个窗体中有很多个控件,有可能是text 、label、combobox等,我需要在点击某一控件时让有些控件可用(enabled=true),而点击另一控件时让另外一些控件可用,可不可以写一个函数,在点击时直接调用该函数(函数参数不固定:因为有时点击一个控件需要让某4个控件可用,而点另一控件时需要让某7个控件可用之类)。请高手指点,谢谢!非常感谢!

 

Top
zhaoyoulong 发表于:2014-01-21 11:29:50

public function CtlEnabel(FmNam as string ,CtlName() as string,Optional BoolEnabel as boolean=true)

dim ctl as Control

dim CtlNameStr as string

CtlNameStr =Join(CtlName(),";")

for each ctl in forms(FmNam ).form

if replace(CtlNameStr &";",ctl.name,"")<>CtlNameStr  then ctl.enabel=BoolEnabel 

next

end function



落尘_小新 发表于:2014-01-21 11:46:37
    Public Sub llx(Formname As String, Controlsname As String, Optional kyf As Boolean = True)
    Kjsz = Split(Controlsname, ";")
    For Each A In Kjsz
        Forms(Formname).Controls(A).Enabled = kyf
    Next

End Sub

调用示例:Call llx("窗体1", "Text1;Text4", False)

注意,多个控件之间用";"分号隔开.



zhaoyoulong 发表于:2014-01-21 13:33:26

2楼正确,我的刚好把意思写反了!

改成:

public function CtlEnabel(FmNam as string ,CtlName as string,Optional BoolEnabel as boolean=true)

dim ctl as Control

dim CtlNameStr as string


for each ctl in forms(FmNam ).Form

   if replace(CtlNameStr &";",ctl.name,"")<>CtlNameStr  OR  CtlNameStr=ctl.name then ctl.enabel=BoolEnabel 

next

end function

当前窗体调用:CtlEnabel ME,"TEXT1;TEXT2",FALSE



qfb 发表于:2014-01-21 14:11:17

谢谢三位大侠了,我看三位的代码都很好,但只有一个是佳答案,我看二楼老师的代码比较少,就选他的了。
非常感谢大家的帮助!



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