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

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
lomaster
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 02.11.2004 (Вт) 13:36

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

Сообщение lomaster » 07.12.2004 (Вт) 11:10

Перерисовывается форма с динамическими кнопками.
Нужные гружу:
Код: Выделить всё
If Not fExistControl(i) Then Load cmdBtn(i)

Ненужные выгружаю:
Код: Выделить всё
If fExistControl(j) Then Unload cmdBtn(j)

Для проверки наличия/отсутствия написал такую функцию:
Код: Выделить всё
Function fExistControl(iNum As Integer) As Boolean
    fExistControl = False
    For Each objControl In Me.Controls
        If objControl.Index = iNum Then
            fExistControl = True
            Exit Function
        End If
    Next
End Function

Все работает... НО никак не пойму - неужели нельзя проще ??? Приходится ведь каждый раз перебирать все контролы :(
Почему не срабатывает конструкция вида???:
Код: Выделить всё
If cmdBtn(i) Is Nothing Then Load cmdBtn(i)

Или мои сомнения напрасны и это решение - оптимально?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 07.12.2004 (Вт) 12:15

Наверное, было бы проще что-то вроде
Код: Выделить всё
Function fExistControl(iNum As Integer) As Boolean
On Error Goto Miss
    cmdBtn(iNum).Tag = "anything"
    fExistControl = True
    Exit Function
Miss:
    fExistControl = False
End Function
Изображение

lomaster
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 02.11.2004 (Вт) 13:36

Сообщение lomaster » 07.12.2004 (Вт) 12:45

Я где то читал что On Error сильно тормозит программу ???
И все таки (мож кто сможет объяснить) почему не работает Is Nothing ?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 07.12.2004 (Вт) 13:06

Потому что это не массив объектных переменных, а чёрти-что. С ним Is Nothing не работает.
Что и где ты читал - не знаю, но рекомендую померять скорость, если есть сомнения. Тут вон один человек недавно прочитал где-то, что в VB5 InStr нету :shock:
Последний раз редактировалось tyomitch 07.12.2004 (Вт) 19:19, всего редактировалось 1 раз.
Изображение

lomaster
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 02.11.2004 (Вт) 13:36

Сообщение lomaster » 07.12.2004 (Вт) 13:30

СПАСИБО. Все понял. Тема закрыта :)


Вернуться в Visual Basic 1–6

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

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

    TopList  
cron