cListMove.cls
上传用户:davilee3
上传日期:2015-04-22
资源大小:986k
文件大小:5k
源码类别:

浏览器

开发平台:

Visual Basic

  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 = "cListMove"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = True
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = False
  14. '---------------------------------------------------------------------------------------
  15. ' Module    : cListMove
  16. ' DateTime  : 2005-3-14 20:54
  17. ' Author    : Lingll
  18. ' Purpose   :
  19. ' 2005-5-29 : fix ListCheck
  20. '---------------------------------------------------------------------------------------
  21. Option Explicit
  22. Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
  23. Private WithEvents m_List As ListBox
  24. Attribute m_List.VB_VarHelpID = -1
  25. Private WithEvents m_CmdUp As CommandButton
  26. Attribute m_CmdUp.VB_VarHelpID = -1
  27. Private WithEvents m_CmdDown As CommandButton
  28. Attribute m_CmdDown.VB_VarHelpID = -1
  29. Private WithEvents m_CmdAdd As CommandButton
  30. Attribute m_CmdAdd.VB_VarHelpID = -1
  31. Private WithEvents m_CmdDel As CommandButton
  32. Attribute m_CmdDel.VB_VarHelpID = -1
  33. Public Event ListClick(index&)
  34. Public Event ListCheck(ByVal index&, vChecked As Boolean)
  35. Public Event MoveUp(iUp&, iDown&, ByRef ptUp&, ByRef ptDown&, ByRef lenData&)
  36. Public Event MoveDown(iUp&, iDown&, ByRef ptUp&, ByRef ptDown&, ByRef lenData&)
  37. Public Event AddItem(ByRef Cancel As Boolean, ByRef newData$)
  38. Public Event AddItemAfter()
  39. Public Event DelItem(ByRef Cancel As Boolean, vIndex&)
  40. Public Event DelItemAfter()
  41. Public Sub IniMe(vList As ListBox, _
  42.     vUp As CommandButton, vDown As CommandButton, _
  43.     vAdd As CommandButton, vDel As CommandButton)
  44. Set m_List = vList
  45. Set m_CmdUp = vUp
  46. Set m_CmdDown = vDown
  47. Set m_CmdAdd = vAdd
  48. Set m_CmdDel = vDel
  49. End Sub
  50. Public Function GetListIndex() As Long
  51. If m_List.ListIndex > 0 Then
  52.     GetListIndex = m_List.ListIndex
  53. Else
  54.     GetListIndex = -1
  55. End If
  56. End Function
  57. Private Sub m_CmdAdd_Click()
  58. Dim tCancel As Boolean, tNewData$
  59. tCancel = False
  60. tNewData = "New Item"
  61. RaiseEvent AddItem(tCancel, tNewData)
  62. If tCancel Then
  63. Else
  64.     m_List.AddItem tNewData
  65.     m_List.ListIndex = m_List.ListCount - 1
  66.     If m_List.Style = 1 Then
  67.         RaiseEvent ListClick(m_List.ListIndex)
  68.     End If
  69.     RaiseEvent AddItemAfter
  70. End If
  71. End Sub
  72. Private Sub SwapData(vPt1&, vPt2&, vLen&)
  73. Dim tArr() As Byte
  74. If vPt1 <> 0 And vPt2 <> 0 And vLen <> 0 Then
  75.     ReDim tArr(0 To vLen - 1)
  76.     CopyMemory ByVal VarPtr(tArr(0)), ByVal vPt1, vLen
  77.     CopyMemory ByVal vPt1, ByVal vPt2, vLen
  78.     CopyMemory ByVal vPt2, ByVal VarPtr(tArr(0)), vLen
  79. End If
  80. End Sub
  81. Private Sub m_CmdDel_Click()
  82. Dim tIndex&, tCancel As Boolean
  83. tIndex = m_List.ListIndex
  84. If tIndex >= 0 Then
  85.     tCancel = False
  86.     RaiseEvent DelItem(tCancel, tIndex)
  87.     If tCancel Then
  88.     Else
  89.         m_List.RemoveItem (tIndex)
  90.         If tIndex > m_List.ListCount - 1 Then
  91.             tIndex = tIndex - 1
  92.         End If
  93.         m_List.ListIndex = tIndex
  94.         If m_List.Style = 1 Then
  95.             RaiseEvent ListClick(tIndex)
  96.         End If
  97.         RaiseEvent DelItemAfter
  98.     End If
  99. End If
  100. End Sub
  101. Private Sub m_CmdDown_Click()
  102. Dim tIndex&, tstr$
  103. Dim tPtUp&, tPtDown&, tLen&
  104. tIndex = m_List.ListIndex
  105. If tIndex < m_List.ListCount - 1 And tIndex >= 0 Then
  106.     tstr = m_List.List(tIndex)
  107.     m_List.List(tIndex) = m_List.List(tIndex + 1)
  108.     m_List.List(tIndex + 1) = tstr
  109.     
  110.     RaiseEvent MoveDown(tIndex, tIndex + 1, tPtUp, tPtDown, tLen)
  111.     Debug.Print tPtUp, tPtDown, tLen
  112.     If tPtUp <> 0 And tPtDown <> 0 And tLen <> 0 Then
  113.         Call SwapData(tPtUp, tPtDown, tLen)
  114.     End If
  115.     
  116.     m_List.ListIndex = tIndex + 1
  117. End If
  118. End Sub
  119. Private Sub m_CmdUp_Click()
  120. Dim tIndex&, tstr$
  121. Dim tPtUp&, tPtDown&, tLen&
  122. tIndex = m_List.ListIndex
  123. If tIndex > 0 Then
  124.     tstr = m_List.List(tIndex)
  125.     m_List.List(tIndex) = m_List.List(tIndex - 1)
  126.     m_List.List(tIndex - 1) = tstr
  127.     
  128.     RaiseEvent MoveUp(tIndex - 1, tIndex, tPtUp, tPtDown, tLen)
  129.     If tPtUp <> 0 And tPtDown <> 0 And tLen <> 0 Then
  130.         Call SwapData(tPtUp, tPtDown, tLen)
  131.     End If
  132.     
  133.     m_List.ListIndex = tIndex - 1
  134. End If
  135. End Sub
  136. Private Sub m_List_Click()
  137. If m_List.ListIndex >= 0 Then
  138.     RaiseEvent ListClick(m_List.ListIndex)
  139. End If
  140. End Sub
  141. Private Sub m_List_ItemCheck(Item As Integer)
  142. If m_List.ListCount > 0 Then
  143.     RaiseEvent ListCheck(Item, m_List.Selected(Item))
  144. End If
  145. End Sub