TlsReactors.cls
上传用户:yayuwl
上传日期:2022-03-18
资源大小:8952k
文件大小:2k
源码类别:

CAD

开发平台:

VBA

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "TlsReactors"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = False
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = True
  14. Private m_oApp As AcadApplication
  15. Private m_Events As New Collection
  16. Private m_DoubleClickCount As Integer
  17. Private m_DoubleClickState As Boolean
  18. Public Property Let Application(ByVal vNewValue As AcadApplication)
  19. On Error Resume Next
  20.     Set m_oApp = vNewValue
  21.     m_oApp.LoadArx "acdblclkedit.arx"
  22.     m_oApp.UnloadArx "acdblclkedit.arx"
  23. End Property
  24. Public Property Get Item(ByVal Name As String) As TlsReactor
  25. Attribute Item.VB_UserMemId = 0
  26. On Error Resume Next
  27.     Set Item = m_Events(Name)
  28.     If Err Then
  29.         Set Item = New TlsReactor
  30.         Item.Name = Name
  31.         Item.Application = m_oApp
  32.         Item.Owner = Me
  33.         m_Events.Add Item, Name
  34.     End If
  35.     Item.InitDoc
  36. End Property
  37. Public Function DoubleClick(ByVal vNewValue As Boolean)
  38.     m_DoubleClickCount = m_DoubleClickCount + 1
  39.     m_DoubleClickState = m_DoubleClickState Or vNewValue
  40.     
  41.     If m_Events.Count = m_DoubleClickCount Then
  42.         
  43.         If m_DoubleClickState Then
  44.             m_DoubleClickState = False
  45.         Else
  46.             Dim ss As New TlsSelectionSet
  47.             ss.Application = m_oApp
  48.             ss.GetPickfirstSelectionSet
  49.             
  50.             Dim sCmdName As String
  51.             sCmdName = "'_.properties"
  52.             If ss.Count = 1 Then
  53.                 Select Case UCase(ss(0).ObjectName)
  54.                 Case "ACDBMTEXT"
  55.                     sCmdName = "_.mtedit"
  56.                 Case "ACDBTEXT"
  57.                     sCmdName = "_.ddedit" & vbCr
  58.                 Case "ACDBBLOCKREFERENCE"
  59.                     If Left(ss(0).Name, 1) <> "*" Then
  60.                         sCmdName = "_.refedit"
  61.                     End If
  62.                 End Select
  63.             End If
  64.             m_oApp.ActiveDocument.SendCommand sCmdName & vbCr
  65.         End If
  66.         m_DoubleClickCount = 0
  67.     End If
  68. End Function
  69. Private Sub Class_Initialize()
  70.     m_DoubleClickState = False
  71.     m_DoubleClickCount = 0
  72. End Sub