Assign Form Controls to a Group

P

PJFry

I am working with a form that has some client-specific fields. Client X has
three bound controls, a,b and c. Client Y has two bound controls, e and f.
Right now, I show or hide the controls with an OnCurrent event.

If Me.txtClient = "X" Then
Me.cboStatus.Visible = True
me.lblStatus.Visible = True
'etc.
Else
Me.cboStatus.Visible = False
me.lblStatus.Visible = False
'etc.
End If

Can I group controls a,b and c? I imagine it would looks something like this:
If Me.txtClient = "X" Then
ClientX.Visible = True
Else
ClientX.Visible = False
End If

Where ClientX represents all controls associated with that specific client.

Can this be done?
If not, any suggestions to streamline the process? I have about 10 clients
that all require specific fields. To reduce confusion, I only want fields
relevant to a client to be shown.

Thanks!
PJ
 
M

Maurice

Let me see if I get this right. You have controls designated to clients?
(textfields). In that case I assume that controls 1 and 2 and 3 belong to the
first client etc. If so you might think of using the tag as a place to put
the clients name and then refer to that via code. Something like:

dim ctl as control
for each ctl in me
if ctl.tag ="ClientX" then
ctl.visible=true
else
ctl.visible=false
end if
next

Or do you mean something else?

hth
 
U

UpRider

PJ, I don't know of a way to 'group' controls like that.

The closest I can figure would be to create one function and then use
a straightforward and easy to understand 'select case' like this in the
form_current event:

select case txtClient
case "X"
call fcnHideControls
controlX.visible = true
lblxxx.visible = true
case "Y"
call fcnHideControls
controlY.visible = true
lblyyy.visible = true
etc
case else
msgbox "Unknown Client"
end select

Function fcnHideControls()
'code here to set ALL client controls.visible = false
end function

UpRider
 
P

PJFry

I think you have it, though I am not familiar with tags.

A more through description would be this:
Create a 'group' controls named ClientX
Members of ClientX are:
Me.cboStatus
Me.lblStatus
Me.cboProgress
Me.lblProgress
Me.txtAddress
Me.lblAddress

Then, if I change the properties of ClientX, it would affect all six
controls. I.e.

ClientX.Visible = False
would be the same thing as
Me.cboStatus.Visible = False
Me.lblStatus.Visible = False
Me.cboProgress.Visible = False
Me.lblProgress.Visible = False
Me.txtAddress.Visible = False
Me.lblAddress.Visible = False

This is a like a With...End, except I am doing one thing to multiple
controls as opposed to multiple things to one control.

I hope that makes sense...

So if all of the above is what you mean, then yes, you have it right!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top