คุณสมบัติ
คุณสมบัติที่ส่งออกอ๊อบเจค
อ๊อบเจคของ Visual Basic จะมีคุณสมบัติที่ส่งออกค่า เช่น ฟอร์มและตัว control ที่มองเห็นมีคุณสมบัติ Font ที่ส่งออกอ๊อบเจคของฟอนต์ ซึ่งเป็นกรณีเฉพาะที่ เพราะสามารถต่อท้ายด้วยจุดและชื่อคุณสมบัติ เป็น IntelliSense บอกชื่อของคุณสมบัติของอ๊อบเจค
Form1.Font.Bold = True
โปรแกรมประยุกต์ Visual Basic สามารถออกแบบให้แต่ละ class ทำงานกับสารสนเทศที่แตกต่างกันและเขียนคำสั่งเรียก procedure มาประมวลผล ตัวอย่าง เช่น clsSupplier ไม่มีรายละเอียดเกี่ยวกับที่อยู่ ซึ่งสามารถสร้างเป็น class ใหม่ ชื่อ clsAddress แทนที่การเพิ่มคุณสมบัติ
' clsAddress Module
' ประกาศคุณสมบัติ Public members
Public Street As String
Public City As String
Public Province As String
Public Zip As String
Public Country As String
Public Phone As String
' กำหนดค่าเริ่มต้นที่เหมาะสมให้คุณสมบัติ Country
Const Country_DEF = "ไทย"
Private Sub Class_Initialize()
Country = Country_DEF
End Sub
' เมธอด constructor
Friend Sub Init(Street As String, City As String, Province As String, _
Zip As String, Optional Country As Variant, Optional Phone As Variant)
Me.Street = Street
Me.City = City
Me.Province = Province
Me.Zip = Zip
If Not IsMissing(Country) Then Me.Country = Country
If Not IsMissing(Phone) Then Me.Phone = Phone
End Sub
' ส่งออกที่อยู่ที่สมบูรณ์ (คุณสมบัติอ่านอย่างเดียว)
Property Get CompleteAddress() As String
CompleteAddress = Street & vbCrLf & City & ", " _
& Province & " " & Zip _
& IIf(Country <> Country_DEF, Country, "")
End Property
เมื่อ clsSupplier ต้องการใช้ clsAddress ทำได้โดยกำหนดคุณสมบัติ OfficeAddress
เป็น public ในส่วนการประกาศ
' clsSupplier class module
Public OfficeAddress As clsAddress
ในการกำหนดค่าให้คุณสมบัติ OfficeAddress สามารถทำได้โดยตรง
Set Supplier.OfficeAddress = New clsAddress
supplier.OfficeAddress.Init "1234 ถนนพระราม 1", "พระนคร",
"กรุงเทพฯ", "10200"
การทำงานกับคุณสมบัติอ๊อบเจคแบบ Nested สามารถใช้ With
End With
With Supplier.OfficeAddress
.Street = "1234 ถนนพระราม 1"
.City = "พระนคร"
.Province = "กรุงเทพฯ"
.Zip = "10200"
End With
คุณสมบัติ Set Procedure
การกำหนดค่าให้กับคุณสมบัติ OfficeAddress ซึ่งเป็นอ๊อบเจคของ clsAddress สามารถทำได้โดยการใช้ Property Get และ Property Set
Private m_OfficeAddress As clsAddress
Property Get OfficeAddress() As clsAddress
Set OfficeAddress = m_OfficeAddress
End Property
Property Set OfficeAddress(ByVal newValue As clsAddress)
Set m_OfficeAddress = newValue
End Property
คุณสมบัติ Variant
คุณสมบัติที่ส่งออกเป็นประเภทข้อมูล Variant ใช้ประกาศค่าเป็น Public Variant
Private m_CurrentAddress As Variant
' คุณสมบัติ CurrentAddress
' (ตัวอย่างคุณสมบัติ Variant ที่สามารถเก็บอ๊อบเจค)
Property Get CurrentAddress() As Variant
If IsObject(m_CurrentAddress) Then
Set CurrentAddress = m_CurrentAddress
Else
CurrentAddress = m_CurrentAddress
End If
End Property
Property Let CurrentAddress(ByVal newValue As Variant)
If VarType(newValue) <> vbString Then Err.Raise 5
m_CurrentAddress = newValue
End Property
Property Set CurrentAddress(ByVal newValue As clsAddress)
' บรรทัดต่อไม่มีประโยชน์ ถ้าอีอบเจคมีการทดสอบโดยอัตโนมัติจาก VB compiler
' If TypeName(newValue) <> "clsAddress" Then Err.Raise 5
Set m_CurrentAddress = newValue
End Property
คุณสมบัติในโมดูล BAS
คุณสมบัติสามารถประกาศในโมดูล BAS โดยประกาศเป็น public ซึ่งเป็นการประยุกต์ในขอบเขต Global แต่การควบคุมตัวแปรสามารถใช้ Property procedure วิธีการกำหนดคุณสมบัติในโมดูล BAS เช่น การกำหนด Percent เป็นตัวแปร global
Public Percent As Integer
แต่การเขียนคำสั่งให้สามารถควบคุมค่านำเข้าให้อยู่ภายในช่วง 0 ถึง 100 สามารถปรับปรุงคำสั่งเป็น
Dim m_Percent As Integer
Property Get Percent() As Integer
Percent = m_Percent
End Property
Property Let Percent(newValue As Integer) As Integer
If newValue < 0 Or newValue > 0 Then Err.Raise 5
m_Percent = newValue
End Property
|