VB6です。
コントロールのプロパティの一覧を取得したいのですが可能でしょうか?
CallByNameなどを使用すればできそうな感じはするのですがわかりません。
理想としては、ローカルウィンドウみたいに深いとこまで取得できたらなおいいです。
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
ツイート | ![]() |