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

Как узнать, что ActiveControl имеет свойство Text?

01.06.2011, 21:15. Показов 1343. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вылетает ошибка во время выполнения программы '438:
Объект не поддерживает это свойство или метод.

Всё понятно почему.
Я в таймер вписал:

Visual Basic
1
2
3
4
5
Status_what ActiveControl.Text
 
Private Sub Status_what(ku As String)
sta1.Panels(2) = ku
End Sub
Вылетает ошибка когда нажимаю на Button или DTPicker.

Вопрос: Как узнать, что ActiveControl имеет свойство Text?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.06.2011, 21:15
Ответы с готовыми решениями:

Как заставить свойство "Text" компонента Label забиндиться на свойство TheChar из пользовательского класса
Здравствуйте, не получается заставить свойство "Text" компонента Label забиндиться на свойство TheChar из моего класса, основанного на...

Верно ли, что свойство классов не имеет параметров
Помгите плз Печатайте задания в пост, никаких картинок. Предупреждение

Как взять свойство text у списка?
У меня на форме есть объект типа СПИСОК, такого типа: <SELECT name='seler'> <option value='' SELECTED></option> ...

7
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
02.06.2011, 01:44
гы... самый простой способ - через On Error Resume next. Т.е. вот так:
Visual Basic
1
2
3
4
on error resume next
Status_what ActiveControl.Text
if err.number<> 0 then msgbox "нет свойства Text"
on error goto 0
0
1 / 1 / 0
Регистрация: 17.02.2010
Сообщений: 131
03.06.2011, 11:18  [ТС]
Девушк! Вы наверное самый умный.
Сначала у себя это проверь,а потом отвечай...
On Error goto err любому придёт первое в голову...
0
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
03.06.2011, 13:27
Парень, ты или дибил, или претворяешься, не знаю, но больше к первому склоняюсь.
Code
1
2
3
4
5
6
7
8
9
10
11
Private Sub Command1_Click()
   MsgBox ActiveControl.Name
   On Error Resume Next
   statUs_what ActiveControl.Text
   If Err.Number <> 0 Then MsgBox 'нет свойства Text'
   On Error GoTo 0
End Sub
 
Sub statUs_what(txt As String)
   MsgBox txt
End Sub
А вообще, умник, с таким отношением ты никогда не будешь получать ответов.
0
Comanche
03.06.2011, 16:25
Ну... если wosh считает, что перехват ошибки - это банально, то флаг ему в руки. Интересно, по его мнению перебор свойств контрола через метод InterfaceInfoFromObject класса TLIApplication библиотеки TLBINF32.DLL - это проще?! :-)))

Сравните этот код с кодом Алексея - и поймёте, что вариант Алексея проще:
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
' КОД ФОРМЫ (имеющей минимум один контрол, способный принять фокус):
Option Explicit
'
Private Sub Form_Activate()
    Dim rez As Boolean
    
    rez = ControlHasProperty(Me.ActiveControl, 'Text')
    If rez Then
        MsgBox 'Контрол ' & Me.ActiveControl & ' имеет свойство Text.'
    Else
        MsgBox 'Контрол ' & Me.ActiveControl & ' не имеет свойства Text.'
    End If
End Sub
'
Private Function ControlHasProperty(ByVal YourControl As Control, ByVal PropertyName As String) As Boolean
    Dim propList As Collection
    Dim propMember As clsMember
    
    ControlHasProperty = False
    
    Set propList = CollectProperties(YourControl)
 
    For Each propMember In propList
        If propMember.MemberName = PropertyName Then
            ControlHasProperty = True
            Set propList = Nothing
            Exit Function
        End If
    Next
 
    Set propList = Nothing
End Function
'
Private Function CollectProperties(Target As Object) As Collection
   Dim oTLB As InterfaceInfo
   Dim sMemberName As String
   Dim sInvokeKind As String
   Dim i As Integer
   Dim kFuncReturn As Collection
   Dim o As clsMember
   
   Set kFuncReturn = New Collection
   
   Set oTLB = TLI.InterfaceInfoFromObject(Target)
   For i = 1 To oTLB.Members.Count
      sInvokeKind = ReturnInvokeKind(oTLB.Members(i).InvokeKind)
      If InStr(1, sInvokeKind, 'INVOKE_PROPERTYGET') > 0 Then
         sMemberName = oTLB.Members(i)
         If Left$(sMemberName, 1) <> '_' Then
            Set o = New clsMember
            o.MemberName = sMemberName
            o.MemberType = sInvokeKind
            kFuncReturn.Add o
         End If
      End If
   Next
   
   Set CollectProperties = kFuncReturn
End Function
'
Private Function ReturnInvokeKind(Value As Long) As String
   Dim sFuncReturn As String
   Select Case Value
      Case INVOKE_UNKNOWN
         sFuncReturn = 'INVOKE_UNKNOWN'
      Case INVOKE_FUNC
         sFuncReturn = 'INVOKE_FUNC'
      Case INVOKE_PROPERTYGET
         sFuncReturn = 'INVOKE_PROPERTYGET'
      Case INVOKE_PROPERTYPUT
         sFuncReturn = 'INVOKE_PROPERTYPUT'
      Case INVOKE_PROPERTYPUTREF
         sFuncReturn = 'INVOKE_PROPERTYPUTREF'
      Case INVOKE_EVENTFUNC
         sFuncReturn = 'INVOKE_EVENTFUNC'
      Case INVOKE_CONST
         sFuncReturn = 'INVOKE_CONST'
   End Select
   
   ReturnInvokeKind = sFuncReturn
      
End Function
'
' КОД МОДУЛЯ КЛАССА clsMember:
Option Explicit
'
Public MemberName As String
Public MemberType As String
Этот код, конечно, тоже отвечает на поставленный вопрос, но он гораздо более громоздкий (даже если избавиться от необходимости в модуле класса). Да и придётся таскать с собой DLL-ку весом 145 килобайт.

Так что, wosh, нечего сразу огрызаться на людей, которые тебе дело говорят. Тебе действительно предложили самое простое решение.
1 / 1 / 0
Регистрация: 17.02.2010
Сообщений: 131
04.06.2011, 23:21  [ТС]
On error - Выдаёт ошибку!

Я просто написал Status_what ActiveControl
И всё работает без ошибок. Всего то...
0
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
05.06.2011, 02:49
Интересно)
У меня ошибка генерируется, но On Error ее перехватывает)
А как он у тебя может НЕ перехватывать я пока не понимаю)
0
1 / 1 / 0
Регистрация: 17.02.2010
Сообщений: 131
07.06.2011, 07:29  [ТС]
Может версия Visual Basic у меня старее...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.06.2011, 07:29
Помогаю со студенческими работами здесь

Как очистить свойство Text в Edit?
Как по событию ButtonClick кнопки очистить Text в нескольких Edit. К примеру у меня их 95?.

Как поменять свойство Text в кнопке Button с его сохранением
Доброго всем дня! Такой вот вопрос есть две формы на первой форме расположена кнопка Batton1 на второй форме есть Batton5(сохранить ) и...

Как сохранить свойство Text элемента TextBox после закрытия программы?
Собственно. Ну то ест программа работает, текст правится вручную. Программу закрываем, текст сохраняется. Потом при запуске программы...

Как присвоить переменной главной форми, свойство Richtextbox.Text из дочернего
Ест MDI приложение, наподобии блокнота. Ест главная форма Main и child Blank. Как присвоить переменной главнои форми, своиство...

Как можно изменить свойство Text у ComboBox, обходя событие TextChanged?
Всем привет. Подскажите, пожалуйста, как можно изменить свойство Text у ComboBox, обходя событие TextChanged? Пытался отключить...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru