⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmmain.frm

📁 opc 通讯 册测试通讯OPC使用 客户端/服务端
💻 FRM
📖 第 1 页 / 共 3 页
字号:
         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 + -