Как определить по имени наличие контрола на форме

Программирование на Visual Basic for Applications
X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Как определить по имени наличие контрола на форме

Сообщение X-BOND » 21.10.2003 (Вт) 18:51

Вот такой простой вопрос

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 21.10.2003 (Вт) 19:54

Может подмогнёт
Код: Выделить всё
Option Explicit

Private Sub Form_Load()
   
    Dim ctrl As Control
    Dim s As String
   
    For Each ctrl In Me.Controls
        With ctrl
            s = s & .Name
            On Error GoTo index_error
            s = s & " (" & .Index & ")"
            GoTo index_ok
index_error:
            Resume index_ok
index_ok:
            On Error GoTo 0
            s = s & vbCrLf
        End With
    Next
   
    MsgBox s
   
End Sub

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 22.10.2003 (Ср) 11:32

skiperski, я что то наверное с утра туплю... но мне что то не понятно как твой код коррелирует с вопросом-то? :)

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 22.10.2003 (Ср) 11:57

Пример выводит имена и индексы всех контролов на форме. Если поставить проверку на конкретное имя, что автор топика наверняка в состоянии сделать самостоятельно, то получится ответ на заданный вопрос.

А чтобы не тупить с утра похмеляться надо :D Хотя мне, например, это не помогает. Я употребляю пару таблеток против головной боли, литр сока с витаминами, литр горячего чая для промывки организьма. Потом за контупер и типа работаю, оттого типа и глаза красные. А перегар он типа сам по себе. :D

Всё выше написанное прошу воспринимать как шутку. Контрольные смайлы проставлены.

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 22.10.2003 (Ср) 12:16

По-моему это слишком сложый код для проверки наличия контрола.

В принципе я мог бы обойтись простой функцией:
Код: Выделить всё
Private Function CheckControl (ByVal cName As String) As Boolean
Dim Con As Control
On Error GoTo ErrCheck
Set Con = Me.Controls(cName)
CheckControl = -1
ErrCheck:
End Sub


Но я стараюсь не использовать обработчики ошибок, поскольку они у меня не работают в режиме отладки.

Я просто думал, что есть стандартный способ проверки.
(Когда-то тоже извращался над проверкой объекта Nothing, а там все решается двумя словами)

Вообщем если нет другого способа, буду извращаться... :)

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 22.10.2003 (Ср) 13:19

X-BOND писал(а):По-моему это слишком сложый код для проверки наличия контрола.

Простые пути пусть выбирают инвалиды! :D

X-BOND писал(а):Но я стараюсь не использовать обработчики ошибок, поскольку они у меня не работают в режиме отладки.

А вот это интересно. Почему не работает? У меня нормально работает.

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 22.10.2003 (Ср) 13:40

skiperski писал(а):А вот это интересно. Почему не работает? У меня нормально работает.


Сам не знаю. Проект в CorelDRAW, запаролен. Если просто запустить, все ОК, но если зайти в редактор, ввести пароль, то при ошибке появляется "окошко с четырмя кнопочками". Хотя везде в коде стоят обработчики ошибок. Вот такая фигня.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

    TopList