For Each для ComboBox

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

For Each для ComboBox

Сообщение Dummiel » 26.01.2007 (Пт) 14:04

Хай, други мои!

На форме имеются до 50 ComboBox'ов, по определенным признакам объединенных в 5 групп, соответственно, под своими именами в каждой группе, т.е., в каждой группе они объединены в массив.

При загрузке формы во избежание путаницы я каждому комбику присваиваю значение .ListIndex = 0.

Как "изящно" :) обойти все комбики?

Код: Выделить всё
Dim objCbo As ComboBox

For Each objCbo In [???]
    objCbo.ListIndex = 0
Next


Что нужно писать после [In]?

Пока я не придумал ничего лучше, чем:

Код: Выделить всё
Dim objCbo As Control

For Each objCbo In Controls
    With objCbo
        If .Name = "cboGroup1" Or .Name = "cboGroup2" Or .Name = "cboGroup3" Or _
           .Name = "cboGroup4" Or .Name = "cboGroup5" Then .ListIndex = 0
    End With
Next


А правильно ли это? Чувствую - нет. :(
В VB есть наборы "Controls" и "Forms", а вот "ComboBoxs" нету. Или это я уже лишку хватанул? :)

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

Сообщение alibek » 26.01.2007 (Пт) 14:13

1. If TypeOf objControl Is ComboBox Then ...
2. Добавлять (один раз, при загрузке формы) все Combo в коллекцию и обходить ее.
Lasciate ogni speranza, voi ch'entrate.

VB-constructor
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 160
Зарегистрирован: 24.07.2006 (Пн) 21:37
Откуда: Ростов-на-Дону

Сообщение VB-constructor » 26.01.2007 (Пт) 14:28

В VB есть наборы "Controls" и "Forms", а вот "ComboBoxs" нету.
тык он входит в набор "Controls" :lol:
Человек рождён для того, чтобы достичь жизни...

zHackLeX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 23.10.2003 (Чт) 21:08

Сообщение zHackLeX » 26.01.2007 (Пт) 22:59

можешь так попробовать
Код: Выделить всё
for i = 1 to 5
   CallByName(me,"cboGroup" & cstr(i),vbget).listIndex=0
next i


(эт если контролов много и обращение по имени имеет смысл в плане быстродействия)
There is no knowledge that is not power...

X,C,A,B,C,Z,X,A,B,C,Z....
Многие ли помнят? :)

Dummiel
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 11.06.2004 (Пт) 9:15
Откуда: Алтай

Сообщение Dummiel » 28.01.2007 (Вс) 19:33

VB-constructor писал(а):
В VB есть наборы "Controls" и "Forms", а вот "ComboBoxs" нету.
тык он входит в набор "Controls" :lol:


Дык енто я знаю, просто я думал, как-то отдельно можно выделить ComboBox.

Спасибо всем, будем изящничать... :)

Dummiel
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 11.06.2004 (Пт) 9:15
Откуда: Алтай

Сообщение Dummiel » 31.01.2007 (Ср) 5:30

alibek писал(а):1. If TypeOf objControl Is ComboBox Then ...
2. Добавлять (один раз, при загрузке формы) все Combo в коллекцию и обходить ее.


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

Спасибо еще раз! :)

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

Сообщение alibek » 31.01.2007 (Ср) 8:53

У коллекций есть своя область применения и свои преимущества.
Lasciate ogni speranza, voi ch'entrate.


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

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

Сейчас этот форум просматривают: AhrefsBot, Google-бот, Majestic-12 [Bot] и гости: 6

    TopList