プロパティの一覧を取得


  2008-08-15 01:14:16  No: 101001

VB6です。

コントロールのプロパティの一覧を取得したいのですが可能でしょうか?
CallByNameなどを使用すればできそうな感じはするのですがわかりません。

理想としては、ローカルウィンドウみたいに深いとこまで取得できたらなおいいです。


魔界の仮面弁士  2008-08-15 03:22:25  No: 101002

VB6 だとこんな感じかな。
CallByName 等と併用すれば、それっぽくなるかも。

# .NET なら、リフレクションや PropertyGrid が使えるので、
# 比較的容易に実装できるのですけれどね。

Option Explicit

Private Sub Command1_Click()
    DumpMemberList Text1
End Sub

Private Sub DumpMemberList(ByVal o As Object)
    Dim mi As Object
    Debug.Print "=== [" & TypeName(o) & "] のメンバ ==="
    Dim lists As Object
    On Error Resume Next
    Set lists = CreateObject("TLI.TLIApplication").InterfaceInfoFromObject(o).Members
    If Err.Number <> 0 Then
        Debug.Print "情報を列挙できませんでした。"
    Else
        Debug.Print "種別"; Tab(20); "名前"; Tab(40); "戻型"; Tab(45); "引数"; Tab(50); "解説"
        Debug.Print "----"; Tab(20); "----"; Tab(40); "----"; Tab(45); "----"; Tab(50); "----"
        For Each mi In CreateObject("TLI.TLIApplication").InterfaceInfoFromObject(o).Members
            Debug.Print Tab(1); GetInvokeKind(mi.InvokeKind);
            Debug.Print Tab(20); mi.Name;
            Debug.Print Tab(40); mi.ReturnType.VarType;
            Debug.Print Tab(45); mi.Parameters.Count;
            Debug.Print Tab(50); "[" & mi.HelpString & "]"
        Next
    End If
    Debug.Print "=============="
End Sub

Private Function GetInvokeKind(ByVal value As InvokeKinds) As String
    Select Case value
     Case 1
        GetInvokeKind = "メソッド"
     Case 2
        GetInvokeKind = "プロパティ[Get]"
     Case 4
        GetInvokeKind = "プロパティ[Let]"
     Case 8
        GetInvokeKind = "プロパティ[Set]"
     Case 16
        GetInvokeKind = "イベント"
     Case 32
        GetInvokeKind = "定数"
     Case Else
        GetInvokeKind = "不明"
    End Select
End Function


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加