📄 frmmain.frm
字号:
Caption = "-"
End
Begin VB.Menu mnuListViewWriteValue
Caption = "&Write Value..."
End
Begin VB.Menu mnuListViewBar3
Caption = "-"
End
Begin VB.Menu mnuListViewDelete
Caption = "&Delete"
End
End
End
Attribute VB_Name = "frmMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Option Base 1
Dim mbMoving As Boolean
Const sglSplitLimit = 500
Dim LastTopItem As Integer
Private Sub Form_Load()
Me.Left = GetSetting(App.Title, "Settings", "MainLeft", 1000)
Me.Top = GetSetting(App.Title, "Settings", "MainTop", 1000)
Me.Width = GetSetting(App.Title, "Settings", "MainWidth", 7500)
Me.Height = GetSetting(App.Title, "Settings", "MainHeight", 6500)
lvListView.ColumnHeaders.Add , , "ItemID", lvListView.Width / 3
lvListView.ColumnHeaders.Add , , "Value", lvListView.Width / 3
lvListView.ColumnHeaders.Add , , "Status", lvListView.Width / 3
lvListView.View = lvwReport ' Place list view text report mode
LastTopItem = -1
End Sub
Private Sub Form_Unload(Cancel As Integer)
Dim I As Integer
If OPCServers.Count <> 0 Then
Dim a As Integer
a = OPCServers.Count
For I = 1 To OPCServers.Count
With OPCServers
Set Module1.SelectedOPCServer = .Item(a)
Module1.SelectedOPCServer.DisconnectOPCServer
.Remove (a)
a = a - 1
End With
Next I
End If
For I = Forms.Count - 1 To 1 Step -1
Unload Forms(I)
Next
If Me.WindowState <> vbMinimized Then
SaveSetting App.Title, "Settings", "MainLeft", Me.Left
SaveSetting App.Title, "Settings", "MainTop", Me.Top
SaveSetting App.Title, "Settings", "MainWidth", Me.Width
SaveSetting App.Title, "Settings", "MainHeight", Me.Height
End If
End Sub
Private Sub tvTreeView_Collapse(ByVal Node As ComctlLib.Node)
Set Module1.SelectedOPCGroup = Nothing
lvListView.ListItems.Clear
End Sub
Private Sub tvTreeView_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim SelectedNode As Node
Dim NodParent As Node
Dim NewGroupSelection As OPCGroupClass
Dim OPCServerGroupsCls As Collection
Set SelectedNode = tvTreeView.HitTest(X, Y)
If (Button = vbRightButton) Then
mnuTreeViewNewServer.Visible = True
mnuTreeViewNewServer.Enabled = True
If Not SelectedNode Is Nothing Then
If InStr(SelectedNode.Key, "Server") Then
With OPCServers
Set Module1.SelectedOPCServer = .Item(SelectedNode.Key)
End With
Set Module1.SelectedOPCGroup = Nothing
lvListView.ListItems.Clear
mnuTreeViewNewGroup.Visible = True ' Add group allowed
mnuTreeViewNewGroup.Enabled = True
mnuTreeViewDelete.Visible = True ' Deleted the Server
mnuTreeViewDelete.Enabled = True
mnuTreeViewProperties.Visible = True 'Display Server Properties
mnuTreeViewProperties.Enabled = True
mnuTreeViewNewItem.Visible = False ' New Items can't be added at this time
mnuTreeViewNewItem.Enabled = False
ElseIf InStr(SelectedNode.Key, "Group") Then
Set NodParent = SelectedNode.Parent
With OPCServers
Set Module1.SelectedOPCServer = .Item(NodParent.Key)
End With
Set OPCServerGroupsCls = Module1.SelectedOPCServer.GetOPCServerGroupCollection
Set NewGroupSelection = OPCServerGroupsCls.Item(SelectedNode.Key)
If (Not NewGroupSelection Is Module1.SelectedOPCGroup) Then
Set Module1.SelectedOPCGroup = NewGroupSelection
GetNewItemList
End If
mnuTreeViewNewServer.Visible = False ' Disable New Server
mnuTreeViewNewServer.Enabled = False
mnuTreeViewNewGroup.Visible = False 'Disable New Group
mnuTreeViewNewGroup.Enabled = False
mnuTreeViewDelete.Visible = True ' Enable delete of group
mnuTreeViewDelete.Enabled = True
mnuTreeViewProperties.Visible = True ' Enable view of group properties
mnuTreeViewProperties.Enabled = True
mnuTreeViewNewItem.Visible = True ' Enable add item.
mnuTreeViewNewItem.Enabled = True
End If
Else ' If no node was selected but the user right clicked then
mnuTreeViewNewGroup.Visible = False
mnuTreeViewNewGroup.Enabled = False
mnuTreeViewDelete.Visible = False
mnuTreeViewDelete.Enabled = False
mnuTreeViewProperties.Visible = False
mnuTreeViewProperties.Enabled = False
mnuTreeViewNewItem.Visible = False
mnuTreeViewNewItem.Enabled = False
End If
frmMain.PopupMenu mnuTreeView
ElseIf (Button = vbLeftButton) Then
If Not SelectedNode Is Nothing Then
If InStr(SelectedNode.Key, "Server") Then
With OPCServers
Set Module1.SelectedOPCServer = .Item(SelectedNode.Key)
End With
Set Module1.SelectedOPCGroup = Nothing
lvListView.ListItems.Clear
ElseIf InStr(SelectedNode.Key, "Group") Then
Set NodParent = SelectedNode.Parent
With OPCServers
Set Module1.SelectedOPCServer = .Item(NodParent.Key)
End With
Set OPCServerGroupsCls = Module1.SelectedOPCServer.GetOPCServerGroupCollection
Set NewGroupSelection = OPCServerGroupsCls.Item(SelectedNode.Key)
If (Not NewGroupSelection Is Module1.SelectedOPCGroup) Then
Set Module1.SelectedOPCGroup = NewGroupSelection
GetNewItemList
End If
End If
End If
End If
End Sub
Private Sub mnuTreeViewNewServer_Click()
Load frmSelectOPCServer
frmSelectOPCServer.Show
tvTreeView.Enabled = False
End Sub
Private Sub mnuTreeViewNewGroup_Click()
Load frmAddGroup
frmAddGroup.Show
tvTreeView.Enabled = False
End Sub
Private Sub mnuTreeViewNewItem_Click()
mnuListViewNewItem_Click
End Sub
Private Sub mnuTreeViewProperties_Click()
If InStr(tvTreeView.SelectedItem.Key, "Server") Then
Load frmOPCServerProperties
frmOPCServerProperties.Show
ElseIf InStr(tvTreeView.SelectedItem.Key, "Group") Then
Load frmOPCGroupProperties
frmOPCGroupProperties.Show
End If
tvTreeView.Enabled = False
End Sub
Private Sub mnuTreeViewDelete_Click()
On Error GoTo SkipDelete
If InStr(tvTreeView.SelectedItem.Key, "Server") Then
Dim OPCServerGroupCls As Collection
Set OPCServerGroupCls = Module1.SelectedOPCServer.GetOPCServerGroupCollection
If OPCServerGroupCls.Count <> 0 Then
Dim I As Integer
Dim a As Integer
Dim GroupKeyToRemove As String
a = OPCServerGroupCls.Count ' intialize the count used when removing the objects in reverse order.
For I = 1 To OPCServerGroupCls.Count
Set Module1.SelectedOPCGroup = OPCServerGroupCls.Item(a)
GroupKeyToRemove = Module1.SelectedOPCGroup.GetGroupKey
Module1.SelectedOPCServer.RemoveOPCGroup (GroupKeyToRemove)
tvTreeView.Nodes.Remove (GroupKeyToRemove)
Set Module1.SelectedOPCGroup = Nothing
a = a - 1
Next I
End If
lvListView.ListItems.Clear
Module1.SelectedOPCServer.DisconnectOPCServer
With OPCServers
.Remove (tvTreeView.SelectedItem.Key)
End With
tvTreeView.Nodes.Remove (tvTreeView.SelectedItem.Key)
Set Module1.SelectedOPCServer = Nothing
ElseIf InStr(tvTreeView.SelectedItem.Key, "Group") Then
Dim Result As Boolean
Result = Module1.SelectedOPCServer.RemoveOPCGroup(tvTreeView.SelectedItem.Key)
If Result = True Then
Set Module1.SelectedOPCGroup = Nothing
tvTreeView.Nodes.Remove (tvTreeView.SelectedItem.Key)
lvListView.ListItems.Clear
End If
End If
SkipDelete:
End Sub
Private Sub GetNewItemList()
On Error Resume Next
lvListView.ListItems.Clear
LastTopItem = -1
Dim OPCItemData As OPCItemClass
Dim OPCGroupItemsCls As Collection
Set OPCGroupItemsCls = Module1.SelectedOPCGroup.GetOPCGroupItemsCollection
If OPCGroupItemsCls.Count = 0 Then
GoTo SkipListUpdate
End If
Dim I As Integer
For I = 1 To OPCGroupItemsCls.Count
Set OPCItemData = OPCGroupItemsCls.Item(I)
Dim ItemKey As String
Dim itmX As ListItem
Dim Quality As Long
Dim ItemValue As Variant
ItemKey = "Item" + Str(OPCItemData.GetItemIndex)
Set itmX = lvListView.ListItems.Add(, ItemKey, OPCItemData.GetItemID)
ItemValue = OPCItemData.GetItemValue(OPCItemDirect)
If Not IsArray(ItemValue) Then
itmX.SubItems(1) = ItemValue
Else
Dim b As Integer
itmX.SubItems(1) = ""
For b = 0 To UBound(ItemValue)
itmX.SubItems(1) = itmX.SubItems(1) + Str(ItemValue(b)) + ", "
Next b
End If
Quality = OPCItemData.GetItemQuality(OPCItemDirect)
If Quality And &HC0 Then
itmX.SubItems(2) = "Good" ' if quailty is 192 then OK
Else
itmX.SubItems(2) = "Bad " + Str(Quality) ' If the not 192 show Bad and value.
End If
Next I
SkipListUpdate:
End Sub
Private Sub lvListView_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If tvTreeView.Enabled = True Then
If Not tvTreeView.SelectedItem Is Nothing Then
If InStr(tvTreeView.SelectedItem.Key, "Group") Then
If (Button = vbRightButton) Then
mnuListViewNewItem.Visible = True
mnuListViewNewItem.Enabled = True
If Not lvListView.SelectedItem Is Nothing Then
Dim SelectedItem As ListItem
Set SelectedItem = lvListView.HitTest(X, Y)
If Not SelectedItem Is Nothing Then
Dim OPCGroupItemsCls As Collection
Set OPCGroupItemsCls = Module1.SelectedOPCGroup.GetOPCGroupItemsCollection
Set Module1.SelectedOPCItem = OPCGroupItemsCls.Item(Mid(SelectedItem.Key, InStr(SelectedItem.Key, " ")))
mnuListViewSetActive.Visible = True
mnuListViewSetActive.Enabled = True
mnuListViewSetInactive.Visible = True
mnuListViewSetInactive.Enabled = True
mnuListViewWriteValue.Visible = True
mnuListViewWriteValue.Enabled = True
mnuListViewDelete.Visible = True
mnuListViewDelete.Enabled = True
Else
mnuListViewSetActive.Visible = False
mnuListViewSetActive.Enabled = False
mnuListViewSetInactive.Visible = False
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -