📄 testbas.bas
字号:
Attribute VB_Name = "TestBas"
Type ObjProperty
strName As String
iType As Long
iMode As Long
iValue As Variant
strNote As String
End Type
Type EnumProperty
strName() As String
iValue() As Long
End Type
Public ObjPro() As ObjProperty
Public EnumPro() As EnumProperty
Sub GetDevObjProperty(DatObj As Object, DDevObj As Object)
Dim SvrDevQuery As Object, i As Long
Set SvrDevQuery = DatObj.SvrDevQuery
For i = 1 To UBound(ObjPro)
ObjPro(i).iValue = SvrDevQuery.GetProperty(DDevObj, ObjPro(i).strName)
Next i
End Sub
Sub SetDevObjProperty(DatObj As Object, DDevObj As Object)
On Error Resume Next
Dim SvrDevQuery As Object, i As Long
Set SvrDevQuery = DatObj.SvrDevQuery
For i = 1 To UBound(ObjPro)
If ObjPro(i).iMode <> 2 Then
SvrDevQuery.SetProperty DDevObj, ObjPro(i).strName, ObjPro(i).iValue
End If
Next i
End Sub
Sub QueryDevObj(DatObj As Object, DDevObj As Object)
On Error Resume Next
Dim i As Long, j As Long, n As Long
Dim iIndex As Long, iSubIndex As Long, iType As Long, iMode As Long
Dim strName As String, strNote As String, SvrDevQuery As Object, iValue As Long
ReDim ObjPro(0) As ObjProperty
ReDim EnumPro(0) As EnumProperty
Set SvrDevQuery = DatObj.SvrDevQuery
SvrDevQuery.SetDevObject DDevObj
For iIndex = 0 To 100
If (0 <> SvrDevQuery.QueryProperty(iIndex, strName, strNote, iType, iMode)) Then Exit For
If iMode <> 2 Then
i = UBound(ObjPro) + 1
ReDim Preserve ObjPro(i)
ObjPro(i).strName = strName
ObjPro(i).strNote = strNote
ObjPro(i).iType = iType
ObjPro(i).iMode = iMode
End If
Next iIndex
For iIndex = 1 To 100
If (SvrDevQuery.QueryEnumName(-iIndex, strName) <> 0) Then Exit For
i = UBound(EnumPro) + 1
ReDim Preserve EnumPro(i)
ReDim msg(0) As String, vv(0) As Long
For iSubIndex = 0 To 100
If (SvrDevQuery.QueryEnumItem(-iIndex, iSubIndex, strName, iValue) = 0) Then
j = UBound(msg) + 1
ReDim Preserve vv(j)
ReDim Preserve msg(j)
strName = Mid(strName, 2)
n = InStr(strName, "__")
If n > 1 Then
strName = Left$(strName, n - 1) + "." + Mid$(strName, n + 2)
End If
n = InStr(strName, "_")
If n > 1 Then
strName = Left$(strName, n - 1) + "~" + Mid$(strName, n + 1)
End If
n = InStr(strName, "负")
If n > 1 Then
strName = Left$(strName, n - 1) + "_" + Mid$(strName, n + 1)
End If
n = InStr(strName, "到")
If n > 1 Then
strName = Left$(strName, n - 1) + "~" + Mid$(strName, n + 1)
End If
n = InStr(strName, "点")
If n > 1 Then
strName = Left$(strName, n - 1) + "." + Mid$(strName, n + 1)
End If
vv(j) = iValue
msg(j) = strName
Else
Exit For
End If
Next iSubIndex
j = UBound(msg)
ReDim EnumPro(i).iValue(j)
ReDim EnumPro(i).strName(j)
For n = 1 To j
EnumPro(i).iValue(n) = vv(n)
EnumPro(i).strName(n) = msg(n)
Next n
Next iIndex
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -