Finding a control's label - was RE: [AccessD] need ideas

John W. Colby jcolby at colbyconsulting.com
Tue Feb 18 11:54:00 CST 2003


Actually you can find the label for any given control by iterating that
control's Control collection.  Every control has a controls collection, and
for many of the controls from Access, the label is the only control in that
collection.  Other controls like option groups can have many controls in
it's controls collection.

The following demonstrates:

'.Comments  :
'.Parameters:
'.Sets      :
'.Returns   :
'.Created by: John W. Colby
'.Created   : 6/17/02 11:22:19 AM
'
'Finds the label that "belongs to" any given control.
'
Function CtlLbl(ctlFindLbl As Control) As Label
On Error GoTo Err_CtlLbl
Dim ctl As Control
    For Each ctl In ctlFindLbl.Controls
        If ctl.ControlType = acLabel Then
            Set CtlLbl = ctl
        End If
    Next ctl
Exit_CtlLbl:
Exit Function
Err_CtlLbl:
    Select Case err
    Case 0      '.insert Errors you wish to ignore here
        Resume Next
    Case Else   '.All other errors will trap
        Beep
        MsgBox err.Description, , "Error in Function Utils.CtlLbl"
        Resume Exit_CtlLbl
    End Select
    Resume 0    '.FOR TROUBLESHOOTING
End Function

Of course it returns a null if the control has no label.

I use this code in my control classes to just routinely find and set a
pointer to the label associated with a control.  This allows me to do things
like change the label background color as the control gets the focus etc.

John W. Colby
Colby Consulting
www.ColbyConsulting.com

-----Original Message-----
From: accessd-admin at databaseadvisors.com
[mailto:accessd-admin at databaseadvisors.com]On Behalf Of Heenan, Lambert
Sent: Tuesday, February 18, 2003 12:23 PM
To: 'accessd at databaseadvisors.com'
Subject: RE: [AccessD] need ideas


Whether you use a class with WithEvents, or just a simple Sub that you call
in the option group's On_Click event, here's an example of the basic logic
that you could use to do the color changing...

Sub formatOpGroup(opGrp As OptionGroup, sCaption As String)
Dim c As Control
    
    For Each c In opGrp.Controls
        If TypeOf c Is Label Then
            If c.Caption = sCaption Then
                c.ForeColor = IIf(sCaption = "Yes", RGB(0, 255, 0), RGB(255,
0, 0))
            Else
                c.ForeColor = RGB(0, 0, 0)
            End If
        End If
    Next c
End Sub

Lambert


----------------------------------------------------
Is email taking over your day?  Manage your time with eMailBoss.  
Try it free!  http://www.eMailBoss.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: winmail.dat
Type: application/ms-tnef
Size: 2888 bytes
Desc: not available
URL: <http://databaseadvisors.com/pipermail/accessd/attachments/20030218/6fead505/attachment-0002.bin>


More information about the AccessD mailing list