let and get in class module

D

Doug Glancy

With help from Bullen, Green, Bovey and Rosenberg, I've created the
following class module. It does what I want, i.e., allows me to read and
write the "face up" property of "cards", which are images on a userform.
However, I had to use 3 different variations on "face up" to get it to
work - the property, "face_up," the Let variable "fac_up" and the variable
to pass the state to the Get property, "fac3_up."

Is there a way to do it with one variable instead of two?

Option Explicit

Public WithEvents card As MSForms.Image
Private fac3_up As Boolean

Private Sub Card_Click()

Property Let face_up(fac_up As Boolean)
If fac_up = True Then
card.Picture = ConcentrationForm.birds.Controls("birds1").Picture
fac3_up = True
Else
card.Picture = ConcentrationForm.birds.Controls("birdsback").Picture
fac3_up = False
End If
End Property

Property Get face_up() As Boolean
face_up = fac3_up
End Property

End Sub

Thanks,

Doug Glancy
 
B

Bob Phillips

Doug,

That is one variable, one property and one argument.

There isn't really another way if you want to act with a Let and Get, as
opposed to just a straight read/write property which could then be

Public Property face_up As Boolean.

You have to have that variable to work with within the class, and you have
to be able to expose it to the world via the property, it just so happens
that with a straight read/write property that can all be done in one
statement.

Personally, in the argument, I always try and use a name that is different
to the property but contains it's meaning, so as to be explicit, like

Property Let face_up(birds1 As Boolean)
etc.

--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)
 
J

Jamie Collins

...
With help from Bullen, Green, Bovey and Rosenberg, I've created the
following class module. It does what I want, i.e., allows me to read and
write the "face up" property of "cards", which are images on a userform.
However, I had to use 3 different variations on "face up" to get it to
work - the property, "face_up," the Let variable "fac_up" and the variable
to pass the state to the Get property, "fac3_up."

Is there a way to do it with one variable instead of two?

Suggestion:

Option Explicit

Public WithEvents card As MSForms.Image
Private fac3_up As Boolean

Private Sub Card_Click()
Flip
End Sub

Private Sub Flip()

fac3_up = Not fac3_up

If fac3_up Then
card.Picture = ConcentrationForm.birds.Controls("birds1").Picture
Else
card.Picture = ConcentrationForm.birds.Controls("birdsback").Picture
End If

End Sub

Public Property Get face_up() As Boolean
face_up = fac3_up
End Property

Jamie.

--
 

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