Access911.net   |   a9BBS   |   OTaA System  
  搜索文章:  
Access911欢迎您光临  
   主页      上传      繁體版       论坛     
设为首页  |  加入收藏   
  
你现在的位置:文章索引 -> 文章分类 -> 控件  
 首页|  近日更新|  下载  |  文章索引  |  搜索|  术语|  承接工程|  
 
系统正在加载内容,请耐心等待...
 
 查询
 窗体
 报表
 
 
 VBA
 函数
 ADO/DAO/ADO.NET
 API
 ADP
 安全
 发布
 OA
 ASP/ASP.NET
 其他语言
 控件
 DELPHI
 C#/.Net
 本站
 其他
 小例程
 常用软件
 参考文档
 业主作品
 网友大作
 
 
友情链接
 access911.net
 
访问人次
 1702262
 
站长 E-Mail
 net911@sina.com
 access911@gmail.com
 
RSS 订阅

显示附加信息 >>>

如何查找与控件相关联得 LABEL ?

作者:cg1 & zhuyiwen & v-binyao  摘自:MS  :cg1  更新日期:2004-4-23  浏览人次:

 

问题:

在Access窗体里,如果我们添加一个控件(比如说一个文本框"XingMing"),程序就会自动加入一个标签控件(比如说"lable1")。也就是说控件“XingMing”的关联标签就是“lable1”。我想问的是,通过程序,我有没有办法得知:控件“XingMing”的关联标签?我已经尝试过查找帮助文件、对象浏览器、以及属性枚举,好像都找不到,但我相信Access中肯定有地方存放,就是不知道在哪里

 


回答:

可以获得相关联的标签.前提是这个控件(如文本框)的AutoLabel为True。
也就是单击工具箱上某个控件,然后在属性窗口的格式选卡中看有没有“自动便签”属性。要设置某个控件的默认属性也是这样设置的。

控件在设计时自动产生的标签会存放在这个控件的Controls集合中,且这个标签没有自
己的事件,有一些属性是通过控件相应属性来体现的,因此这个标签也没有Enabled等
属性。

示例下载:http://access911.net/down/eg/eg_DefaultAutoLabel.rar
 (11KB)

你可以通过下面的程序来测试你窗体中的控件:

'新建一个窗体,在窗体上随意放置一些控件,再放置一个名称为 Command5 的命令按钮,
'然后将以下代码复制进该窗体的模块中。

'本方法查询窗体上所有的控件,获取该控件的附加标签信息
Private Sub Command5_Click()
    Dim c As Control
    Debug.Print "控件名", "关联的控件名", "标签内容"
    For Each c In Me.Controls
         If getLabelName(c) = "" Then
             Debug.Print c.Name     '"没有关联标签控件"
         Else
             Debug.Print c.Name, getLabelName(c), getLabelCaption(c)
         End If
    Next
    MsgBox "已经将所有控件相关的标签内容打印到“立即”窗口了,请按 Alt + F11 键查看。" & _
        "如果“立即”窗口没有显示请按 Ctrl + G 键"
    
    DoCmd.OpenModule "Form_关联的标签控件"
End Sub

'本函数获取关联标签控件的控件名
Public Function getLabelName(aCtl As Control)
On Error Resume Next
    getLabelName = aCtl.Controls(0).Name
    If Err <> 0 Then
        getLabelName = ""
    End If
End Function

'本函数获取关联标签控件中显示的文本
Public Function getLabelCaption(aCtl As Control)
On Error Resume Next
    getLabelCaption = aCtl.Controls(0).Caption
    If Err <> 0 Then
        getLabelCaption = ""
    End If
End Function

'本函数设定关联标签控件内显示的文本
Public Function setLableCaption(aCtl As Control, CaptionText As Variant)
On Error Resume Next
    aCtl.Controls(0).Caption = Nz(CaptionText, "")
    If Err <> 0 Then
        setLableCaption = Err.Description
    Else
        setLableCaption = "Success"
    End If
End Function


对于如何设置控件的的AutoLabel属性,请您参见以下文档(或者Access Online Help)

Set defaults for labels attached to new controls:
http://office.microsoft.com/assistance/preview.aspx?AssetID=HP051877341033&CTT=4&Origin=CH063661971033

为附加到新控件的标签设置默认值
http://office.microsoft.com/zh-cn/assistance/HP051877342052.aspx

http://office.microsoft.com/assistance/hfws.aspx?AssetID=HP051877342052&CTT=1&Origin=EC010227042052&QueryID=iIKAnrFl60&respos=1&rt=2

为控件附加标签
http://office.microsoft.com/zh-cn/assistance/HP051877302052.ASPX


目前还无法编程将某个标签附加到某个控件上。
编程读、写某控件的关联标签的 Catpion 属性的代码如下:
'本函数获取关联标签控件的控件名
Public Function getLabelName(aCtl As Control)
On Error Resume Next
    getLabelName = aCtl.Controls(0).Name
    If Err <> 0 Then
        getLabelName = ""
    End If
End Function

'本函数获取关联标签控件中显示的文本
Public Function getLabelCaption(aCtl As Control)
On Error Resume Next
    getLabelCaption = aCtl.Controls(0).Caption
    If Err <> 0 Then
        getLabelCaption = ""
    End If
End Function

'本函数设定关联标签控件内显示的文本
Public Function setLableCaption(aCtl As Control, CaptionText As Variant)
On Error Resume Next
    aCtl.Controls(0).Caption = Nz(CaptionText, "")
    If Err <> 0 Then
        setLableCaption = Err.Description
    Else
        setLableCaption = "Success"
    End If
End Function


================================================================

现在我想问两个引申的问题:

1。不知二位有没有注意到,关联标签和它的控件必须在一个Section里。也就是说两者
要么都在
   Detail section,要么都在 Header section里。如果分别在两个Section里,那么
两者不会自
   动关联。

2。在TextBox的Controls属性里没有Append(或者Add)方法,所以我们没法通过这个途
径将两者
   相关联。
   另外,Lable的Parent属性是只读的,我们也不可能通过设置它来将两者相关联。
   总之,我没有找到一种程序的方法来将两者关联起来。

其实我想这样做的目的是:

    我的有些窗体是连续窗体,在 Detail Section 里的 TextBox 的 Lable 都是放在
Header
    Section 里的。如果两者不相关联,那么前面我做的那两个函数是没用的。

手动像某控件附加关联标签的方法在帮助中有叙述:
为控件附加标签   

在“设计”视图 中打开窗体、报表或数据访问页。 
单击要附加到控件上的标签。 
单击工具栏上的“剪切”。 
单击需要附加标签的控件。 
单击工具栏上的“粘贴”。  


 

本站文章旨在为该问题提供解决思路及关键性代码,并不能完成应该由网友自己完成的所有工作,请网友在仔细看文章并理解思路的基础上举一反三、灵活运用。

access911.net 原创文章,作者本人对文章保留一切权利。
如需转载必须征得作者同意并注明本站链接

 

 
相关文章
     没有手动相关文章
     如何将标签绑定到一个已有的控件上?
     运行时错误:3426,该操作被关联对象取消。注意事件的先后顺序及Cancel后的后果
     如何用RFID(电子标签)设备结合ACCESS进行库存管理?(原理概述)
     两个表用Where子句关联,然后更新为何出错?(操作必须使用一个可更新的查询)
     关于自动关联工作组启动的方法
 
评论
     查看或发表更多的评论,请单击这里。
 
 
 
 
 
   
  Access911.net   |   a9BBS   |   OTaA System   |
建站日期:2000年4月2日  |  设计施工:陈格 ( access911 & cg1 )
 Copyright © 2000 - 2003 COMET, 陈格 保留所有权利