Проверка наличия свойства у элементов управления

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
t116
Бывалый
Бывалый
 
Сообщения: 209
Зарегистрирован: 12.01.2007 (Пт) 12:11

Проверка наличия свойства у элементов управления

Сообщение t116 » 11.03.2008 (Вт) 10:45

Предположим на форме есть несколько ЭУ. Некоторые из них имеют свойство "Caption". Мне нужно обработать все элементы, содержащие это свойство.

Поясните как можно определить, есть ли у элемента определенное свойство?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 11.03.2008 (Вт) 11:40

Просто обращайся к нему. Если произойдет ошибка, значит такого свойства нет.
Lasciate ogni speranza, voi ch'entrate.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 11.03.2008 (Вт) 12:08

t116
ЭУ стандартные, или из ActiveX?

Можно так, как сказал Алибек. Если нужна скорость, есть и иной путь.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

t116
Бывалый
Бывалый
 
Сообщения: 209
Зарегистрирован: 12.01.2007 (Пт) 12:11

Сообщение t116 » 11.03.2008 (Вт) 14:49

alibek писал(а):Просто обращайся к нему. Если произойдет ошибка, значит такого свойства нет.


Я пока так и делаю, но мне не очень нравится такой метод.

Хакер писал(а):t116
ЭУ стандартные, или из ActiveX?


ЭУ стандартные.

Хакер писал(а):Если нужна скорость, есть и иной путь.


Какой?


Мне это нужно для того чтобы перегнать все надписи на форме через функцию, переводящую с одного языка на другой.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 11.03.2008 (Вт) 15:08

t116, так тебе надо перебрать все Label'ы на форме что-ли? Действительно, можно проще! TypeName, например использовать.
Весь мир матрица, а мы в нем потоки байтов!

t116
Бывалый
Бывалый
 
Сообщения: 209
Зарегистрирован: 12.01.2007 (Пт) 12:11

Сообщение t116 » 11.03.2008 (Вт) 17:15

Viper писал(а):t116, так тебе надо перебрать все Label'ы на форме что-ли? Действительно, можно проще! TypeName, например использовать.


label'ы, checkbox'ы, optionbox'ы, фреймы, текст боксы и т.д.

Atoman
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 109
Зарегистрирован: 01.02.2008 (Пт) 6:36

Сообщение Atoman » 12.03.2008 (Ср) 4:10

Может тебе такое решение подойдёт.
Код: Выделить всё
Private Sub Command1_Click()
Dim Cont As Control
    For Each Cont In Me.Controls
        If TypeOf Cont Is CommandButton _
        Or TypeOf Cont Is Frame _
        Or TypeOf Cont Is Label _
        Or TypeOf Cont Is OptionButton _
        Or TypeOf Cont Is CheckBox Then
            Cont.Caption = MonthName(3)
        End If
    Next Cont
End Sub

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 12.03.2008 (Ср) 9:01

Хоть я тоже предпочитаю TypeOf, но для полноты добавлю, что есть и TypeName.
Lasciate ogni speranza, voi ch'entrate.

t116
Бывалый
Бывалый
 
Сообщения: 209
Зарегистрирован: 12.01.2007 (Пт) 12:11

Сообщение t116 » 12.03.2008 (Ср) 23:16

Atoman
Твое решение мне подходит.


Спасибо всем!


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

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

Сейчас этот форум просматривают: Google-бот, SemrushBot и гости: 26

    TopList