[リストへもどる]
一括表示

投稿時間:2003/05/20(Tue) 17:05
投稿者名:よっし
URL :
タイトル:
Property Let & Getと普通の変数の違いについて
教えてください。

Property LetとProperty Getの説明を見ると、結局は普通の変数と
変わらないのではないかと思うのですが、Property Let等を使った
方がこういう事が出来ますよ! みたいなのがあれば、教えてください。
出来れば、サンプルが見たいです。お願いします。

投稿時間:2003/05/20(Tue) 18:40
投稿者名:nanashi
Eメール:
URL :
タイトル:
Re: Property Let & Getと普通の変数の違いについて
普通の変数だと自由に内容を更新されてしまいますが
Property Let や Property Get を使えば入力に制限を掛ける事が出来ます。
(もちろん使い方はそれだけではありませんが……)

例えば、変数Aには 0 〜 255 までの数字しか入れられないとすれば

Private lngA As Long

Public Property Let A(Byval Value As Long)

  If Value < 0 Then
    lngA = 0
  ElseIf Value > 255 Then
    lngA = 255
  Else
    lngA = Value
  End If
End Property

Public Property Get A() As Long

  A = lngA
End Property


また、LetかGetのどちらかしか用意しなかった場合、読取専用もしくは書込専用のプロパティを作ることも出来ます。
クラスモジュールを作る上でPropertyは非常に重要なので使い方を覚えておくと色々便利ですよ。

↓このHPとか結構参考になります。
http://homepage1.nifty.com/CavalierLab/lab/vb/clsmdl/

投稿時間:2003/05/21(Wed) 17:12
投稿者名:よっし
URL :
タイトル:
Re^2: Property Let & Getと普通の変数の違いについて
すっごく勉強になります。

細かい回答、本当にありがとうございました。
理解できた気がします。

投稿時間:2003/05/21(Wed) 18:49
投稿者名:イトウ
Eメール:
URL :
タイトル:
Re^3: Property Let & Getと普通の変数の違いについて
あとは、こんなんも

'***** Class1 *****
Dim x(0 To 256) As Byte

Public Property Get Property1(ByVal iIndex As Long) As Long
Property1 = x(iIndex)
End Property

Public Property Let Property1(ByVal iIndex As Long, ByVal NewValue As Long)
x(iIndex) = Abs(NewValue Mod 256)
End Property
'******************

'***** Module1 *****
Public Sub Main()
Dim p As New Class1
p.Property1(10) = 150
Debug.Print p.Property1(10)
End Sub
'*******************