Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лек 11 VB Операторы цикла.doc
Скачиваний:
5
Добавлен:
09.11.2019
Размер:
81.92 Кб
Скачать

Перечислимые циклы

В Visual Basic предусмотрен еще один вариант цикла, начинающегося с ключевых слов For Each. Это так называемый перечислимый тип цикла, поскольку он используется для обработки каждого элемента некоторого набора объектов. Наборы объектов могут храниться в виде коллекций.

В качестве одного из примеров коллекций можно привести коллекцию Printers. Это встроенная коллекция Visual Basic, в которой в виде объектов хранятся все установленные в системе принтеры. В приведенном ниже фрагменте программы цикл типа For Each используется для вывода значения свойства DeviceName всех системных принтеров.

Dim objPrinter As Printer

For Each objPrinter In Printers

Debug.Print objPrinter.DeviceName

Next objPrinter

В данном случае объектная переменная objPrinter выполняет роль переменной цикла, по аналогии со счетчиком для циклов типа For Next. В ней содержится ссылка на текущий обрабатываемый в цикле объект.

Циклы типа For Each можно также использовать для обработки элементов управления в форме, как показано ниже на примере.

Dim ctrl As Control ‘объявление переменной типа Control

For Each ctrl In frmMain ‘для каждого элемента управления в форме frmMain

If Left ( ctrl.Name , 3 ) = "txt" Then ‘если имя элемента управления начинается с "txt"

ctrl.BackColor = frmMain.BackColor

установить цвет фона элемента управления такой же, как и у формы frmMain

ctrl.Locked = True ‘заблокировать элемент управления

End If ‘конец условного оператора

Next ctrl ‘переход к следующему элементу управления

Приведённый фрагмент кода обращается ко всем элементам управления в форме frmMain и если имя элемента управления начинается с подстроки “txt” (все текстовые поля, если вы придерживаетесь соглашения о стандартных префиксах в именах элементов управления), то цвет фона элемента управления устанавливается таким же, как и у формы frmMain. Кроме того, все текстовые поля блокируются (пользователь не сможет изменить содержимое полей).