ZsUI - Option对象2012-06-08 10:57
Option对象最重要的特性就是同组之间多个对象之间的"互斥".
一开始我犹豫是不是要把这一特**给Zs_UI_Container来实现.
不过越想越觉得复杂,所以在Zs_UI_Option内部自己写了个接口来处理.
以下是"队长"和"队员"的关系.
Public Property Let TsMutexObject(ByVal objX As Object)
Set m_TsMutexObject = objX '每个Option对象里都保存着一个"队长",它负责处理互斥.
End Property
Public Sub TsMutex(ByVal objX As Object) '处理互斥的接口,担任"队长"时使用.
m_NowObject.Value = False
Set m_NowObject = objX
End Sub
Public Sub Link(ParamArray objX() As Variant) '""队长"专用,用来链接一组Option对象.
Dim i As Long
Set m_NowObject = Me
Me.Value = True '"队长"的Value默认为True.
Me.TsMutexObject = Me '"队长"是自己.
For i = 0 To UBound(objX) '遍历这个"队伍".
If TypeName(objX(i)) = TypeName(Me) Then '如果是跟自己一个类型的对象.
objX(i).TsMutexObject = Me '告诉它,我是"队长".
objX(i).Value = False '"队员"的Value默认是False.
End If
Next i
End Sub

本期源码下载地址(修复了前期多个Bug):http://pan.baidu.com/netdisk/singlepublic?fid=295000_3631883641
Option对象最重要的特性就是同组之间多个对象之间的"互斥".
一开始我犹豫是不是要把这一特**给Zs_UI_Container来实现.
不过越想越觉得复杂,所以在Zs_UI_Option内部自己写了个接口来处理.
以下是"队长"和"队员"的关系.
Public Property Let TsMutexObject(ByVal objX As Object)
Set m_TsMutexObject = objX '每个Option对象里都保存着一个"队长",它负责处理互斥.
End Property
Public Sub TsMutex(ByVal objX As Object) '处理互斥的接口,担任"队长"时使用.
m_NowObject.Value = False
Set m_NowObject = objX
End Sub
Public Sub Link(ParamArray objX() As Variant) '""队长"专用,用来链接一组Option对象.
Dim i As Long
Set m_NowObject = Me
Me.Value = True '"队长"的Value默认为True.
Me.TsMutexObject = Me '"队长"是自己.
For i = 0 To UBound(objX) '遍历这个"队伍".
If TypeName(objX(i)) = TypeName(Me) Then '如果是跟自己一个类型的对象.
objX(i).TsMutexObject = Me '告诉它,我是"队长".
objX(i).Value = False '"队员"的Value默认是False.
End If
Next i
End Sub

本期源码下载地址(修复了前期多个Bug):http://pan.baidu.com/netdisk/singlepublic?fid=295000_3631883641