Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/29: Рейтинг темы: голосов - 29, средняя оценка - 4.97
0 / 0 / 0
Регистрация: 16.08.2007
Сообщений: 145
1

Как перебрать свойства объекта?

20.12.2007, 12:36. Показов 5358. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Возможно ли это в принципе и если да , то как?
В Visual Basic 6 Desktop эта возможность объявляется, но не описывается - сказано только что должна использоваться конструкция for each ... loop
но как??
Спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2007, 12:36
Ответы с готовыми решениями:

Как изменить значение дефолтного свойства объекта?
Требуется помощь. Суть такова: имеется код на Visual Basic 6.0, динамически добавляющий на форму...

Получить свойства и методы объекта типа Object. Как?
Имеется код вида: ... Dim Tmp As Object For Each Tmp In UserControl.Controls ... Next...

Свойства объекта в VBScript
Возникла проблема: при считывании в VBScript свойств тэга div невозможно считать параметры,...

Свойства и методы объекта UserForm
Пишу курсовую и нигде не могу найти информацию о своствах и методах объекта 'Пользовательская...

3
2 / 2 / 1
Регистрация: 19.07.2007
Сообщений: 737
20.12.2007, 12:44 2
Уточни, пожалуйста, о каких свойствах идет речь и для какого объекта.
У многих контролов, например, есть коллекция Properties, которая содержит объект типа свойство (Property). К этой коллекции можно применить цикл, что ты написал:
Visual Basic
1
2
3
4
5
dim prp as Property 'object of SomeObject Library
for each prp in SomeObject.Properties
  prp.
  ...
next prp
0
1 / 4 / 0
Регистрация: 19.06.2017
Сообщений: 73
05.09.2021, 09:04 3
а если мы пишем пользовательский класс и перебираем его свойства?
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,641
Записей в блоге: 13
07.09.2021, 18:40 4
Да, возможно. Для этого есть стандартный интерфейс.

Вот пример минибраузера любых COM-объектов:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
Private Sub Command1_Click()
Dim obj As Object
Dim appTLI As TLI.TLIApplication
Dim inte As InterfaceInfo
 
    Me.List1.Clear
 
    Set appTLI = New TLIApplication
 
    Set obj = CreateObject(Me.Text1.Text)
 
    Set inte = appTLI.InterfaceInfoFromObject(obj)
 
    n% = inte.Members.Count
    
    For i% = 1 To n%
    
        StrOut$ = inte.Members(i%).Name
        
        '::: Тип вызова
        
        kk% = inte.Members(i%).InvokeKind
        
        Select Case kk%
               Case 1
                    StrOut$ = StrOut$ + " Метод "
               Case 2
                    StrOut$ = StrOut$ + " Свойство (GET) "
               Case 4
                    StrOut$ = StrOut$ + " Свойство (LET) "
               Case Else
                    StrOut$ = StrOut$ + " ? " + CStr(kk%) + " # "
        End Select
        
        '::: Возвращаемое значение
        
        vv& = inte.Members(i%).ReturnType.VarType
        
        StrOut$ = StrOut$ + " Возвр: " + getType(vv&)
        
        Me.List1.AddItem StrOut$
        
        '::: Получение информации о параметрах
        
        k% = inte.Members(i%).Parameters.Count ' число парамеров
 
        For j% = 1 To k%
        
            'Debug.Print ">>>> "; inte.Members(i%).Parameters(j%).Name; " ";
        
            StrOut$ = " Пар. " + CStr(j%) + " " + inte.Members(i%).Parameters(j%).Name + " "
        
            vv& = inte.Members(i%).Parameters(j%).VarTypeInfo.VarType
        
            StrOut$ = StrOut$ + getType(vv&)
            
            Me.List1.AddItem StrOut$
        
        Next j%
 
        Me.List1.AddItem ""
        Me.List1.AddItem "--------------------------------"
        Me.List1.AddItem ""
 
    Next i%
 
End Sub
 
Private Function getType(v As Long) As String
 
        Select Case v&
        
               Case 0
        
                    getType = " ????"
                   
               Case 1
        
                    getType = " NULL"
        
               Case 2
               
                    getType = " INTEGER"
               
               Case 3
               
                    getType = " LONG"
               
               Case 4
               
                    getType = " REAL"
                    
               Case 5
               
                    getType = " DOUBLE"
               
               Case 8
               
                    getType = " STRING"
                 
               Case 11
               
                    getType = " BOOL"
                    
               Case 12
               
                    getType = " VARIANT"
                 
               Case 19
               
                    getType = " OLECOLOR"
                    
               Case 24
               
                    getType = " VOID"
                 
               Case Else
               
                    getType = " неизвестный тип " + CStr(vv&)
        
        End Select
 
End Function
 
Private Sub Command2_Click()
        
        End
 
End Sub
 
Private Sub Command3_Click()
 
        Me.List1.Clear
 
End Sub
End Sub
 
Private Sub Command3_Click()
 
        Me.List1.Clear
 
End Sub
Подробнее - здесь (Две статьи с примерами "COM в действии")
Вложения
Тип файла: zip Minibrowser.zip (2.2 Кб, 17 просмотров)
2
07.09.2021, 18:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.09.2021, 18:40
Помогаю со студенческими работами здесь

Узнать свойства и методы объекта в объектной переменной
Как программе (подчернкиваю не мне а программе), узнать, какие свойства и методы есть у класса,...

Как перебрать в цикле свойства определенного класса?
Подскажите какой-нибудь 'дешевый' способ как перебрать в цикле свойства определенного класса

Как через цикл foreach перебрать все свойства LineCap для пера?
Pen myPen = new Pen(Color.Blue,10); int i ; foreach (LineCap ff in...

Перебрать свойства Checkbox
Как сделать также как и с RadioButton То есть выбор между двумя Можно сделать только для двух ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru