ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   let and get in class module (https://www.excelbanter.com/excel-programming/302850-let-get-class-module.html)

Doug Glancy

let and get in class module
 
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").Pict ure
fac3_up = False
End If
End Property

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

End Sub

Thanks,

Doug Glancy



Bob Phillips[_6_]

let and get in class module
 
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)

"Doug Glancy" wrote in message
...
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").Pict ure
fac3_up = False
End If
End Property

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

End Sub

Thanks,

Doug Glancy





Jamie Collins

let and get in class module
 
"Doug Glancy" wrote ...

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").Pict ure
End If

End Sub

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

Jamie.

--

Doug Glancy

let and get in class module
 
Thanks, Bob and Jamie for the clarification and suggestions.

Doug


"Jamie Collins" wrote in message
om...
"Doug Glancy" wrote ...

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").Pict ure
End If

End Sub

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

Jamie.

--





All times are GMT +1. The time now is 07:27 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com