Получение названий констант в рантайме - 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы