CSDN博客

img chenjl1031

通用控件属性设置函数

发表于2008/9/29 0:52:00  943人阅读

        在优化一个软件时,发现了大量同类控件的属性设置问题。这些控件都具有相同的属性,需要编写大量重复的代码,非常难看,一旦改变,还需要全部重新写上一遍,效率非常低。于是,突发奇想,并借助CallByName函数,构造了一个通用的控件属性设置函数,节约了很多程序,有利于生成高性能的运行代码。

 

       一、函数构造

 

  1. '通用控件属性设置函数
  2. '参数说明:Frm,控件所在窗体;CtrlName,Frm窗体上的控件名字;LMin,Lmax分别是控件的最小、最大编号;cPropertyName,表示要设置的属性名称;bProperty,表示要设置的控件属性。
  3. '    作    者:Chenjl1031(东方之珠)
  4. '    编写时间:2008.9.28
  5. Public Function SetControlProperty(Frm As Form, ByVal CtrlName As StringByVal LMin As LongByVal Lmax As LongByVal cPropertyName As StringByVal bProperty As Variant)
  6.       Dim comCtrl As Control '通用控件
  7.        Dim comCtrlName As String '通用控件名字
  8.        For Each comCtrl In Frm '枚举窗体Frm上的控件
  9.            If InStr(comCtrl.Name, CtrlName) > 0 Then '是否指定控件名
  10.               comCtrlName = comCtrl.Name '获取控件名称
  11.               Mid(comCtrlName, 1, Len(CtrlName)) = Space(Len(CtrlName)) '获取控件编号
  12.               If (Val(comCtrlName) >= LMin And Val(comCtrlName) <= Lmax) Then '指定范围内的控件
  13.                  CallByName comCtrl, cPropertyName, VbLet, bProperty '设置属性
  14.               End If
  15.            End If
  16.        Next
  17. End Function

        二、调用方法
   
    例如:要将下面自身窗体中20个Image控件设置为不可见,只须写上一行:

  1. Call SetControlProperty(Me"Image", 1, 20, "Visible"False)

    非常方便;当属性改变时,即这20个Image控件要全部可见,只须写上一行:
         

  1. Call SetControlProperty(Me"Image", 1, 10, "Visible"True)

      
    Image1.Visible = False
    Image2.Visible = False
    Image3.Visible = False
    Image4.Visible = False
    Image5.Visible = False
    Image6.Visible = False
    Image7.Visible = False
    Image8.Visible = False
    Image9.Visible = False
    .......................
    Image20.Visible = False

    再如:要将窗体Form1中下面10个图片框的背景色全部设置成&H8000000F,只须:
          Call SetControlProperty(Form1, "Picture", 1, 10, "BackColor",&H8000000F)

 

    Picture1.BackColor = &H8000000F
    Picture2.BackColor = &H8000000F
    Picture3.BackColor = &H8000000F
    ...............................
    Picture10.BackColor = &H8000000F

 

        三、其它

    该函数一般可以放在标准模块中。当然,也可以编写成ActiveX DLL。

0 0

相关博文

我的热门文章

img
取 消
img