Получение названий констант в рантайме - VB
Формулировка задачи:
Есть некий Public Enum состоящий из множества констант.
Есть ли возможность получить их названия в рантайме, чтобы вывести в списке на форме?
Смысл следующий. Все видели настройку тулбаров в Тотал Коммандере. Там есть некий список действий, которые может выпонять каждая кнопка.
Дык я хочу сделать то же самое в своей программе.
Решение задачи: «Получение названий констант в рантайме»
textual
Листинг программы
Option Explicit
'Help file for Type info library:
'C:Program FilesMicrosoft Visual StudioVB98VBWebSamplesTlbInf32TlbInf32.chm
'http://download.microsoft.com/download/vb60pro/update/6.0/w9x2k/en-us/tlbinfht.exe
Private Enum eTYPEKIND
TKIND_ENUM
TKIND_RECORD
TKIND_MODULE
TKIND_INTERFACE
TKIND_DISPATCH
TKIND_COCLASS
TKIND_ALIAS
TKIND_UNION
TKIND_MAX
End Enum
Private Sub Command1_Click()
MsgBox GetEnumMemberName("DataTypeEnum", _
128, _
"C:Program FilesCommon FilesSystemADOmsador15.dll", _
eTYPEKIND.TKIND_ENUM)
End Sub
Public Function GetEnumMemberName(ByVal pstrEnumName As String, _
ByVal plngEnumValue As Long, _
ByVal pstrFileName As String, _
ByVal pintTypeKind As Integer) As String
Dim objTLIApp As TLIApplication
Dim objCnstnt As ConstantInfo
Dim objMemberInfo As MemberInfo
Dim objTypeLibInfo As TypeLibInfo
Set objTLIApp = New TLIApplication
Set objTypeLibInfo = TLI.TypeLibInfoFromFile(pstrFileName)
For Each objCnstnt In objTypeLibInfo.Constants
Debug.Print objCnstnt.Name
If objCnstnt.TypeKind = pintTypeKind And objCnstnt.Name = pstrEnumName Then
For Each objMemberInfo In objCnstnt.Members
If objMemberInfo.Value = plngEnumValue Then
GetEnumMemberName = objMemberInfo.Name
End If
Next objMemberInfo
End If
Next objCnstnt
Set objTLIApp = Nothing
Set objCnstnt = Nothing
Set objMemberInfo = Nothing
Set objTypeLibInfo = Nothing
End Function