Индексированные элементы управления

Индексированные элементы управления

Файл : lecture.doc (размер : 2,314,752 байт)

Индексированные элементы управления

(автор: Есин И. В. email: tofriend@list.ru)

О чём ...

Рано или поздно серьёзно осваивающий программирование, изучающий первую систему программирования столкнётся с необходимостью использовать массивы. Каждый элемент массива определяется своим индексом, которое есть неотрицательное целое число. Каждый массив определяется своим именем, которое не противоречит правилу построения имён для переменных. Ещё, говоря о массивах, следует подчеркнуть, что все элементы массива обязательно однородны. В контексте сказанного в VB различают, например, массивы элементов управления. Хотя индексированные элементы управления с общим именем в соответствие с аналогией "обычных" массивов не всегда можно назвать массивом элементов управления, в статье они всё же будут называться "массивы элементов управления", что довольно распространено.

В статье на основании двух примеров рассматриваются многие преимущества использования массивов элементов управления (в надлежащих случаях), показывается каким образом можно создавать массивы и как обращаться к их элементам. Статья не претендует дать полнейшее истолкование массивов элементов управления. Знание "обычных" массивов необязательно.

Пример первый

или

"с претензией называться игрой"

Рассмотрим задачу, которая ясно выделяет многие преимущества использования массива объектов. Выводы позволят сделать два подхода к её решению ...

На форме уже имеется картинка PictureBox и девять равновеликих кнопок CommandButton. Имена объектов не изменены, а в картинку загружена фотография.

Причём автор идеи написал уже такой программный код:

Private Sub Form_Load()

' надпись кнопки - произвольная цифра

Command1.Caption = Int(9 * Rnd)

Command2.Caption = Int(9 * Rnd)

Command3.Caption = Int(9 * Rnd)

Command4.Caption = Int(9 * Rnd)

Command5.Caption = Int(9 * Rnd)

Command6.Caption = Int(9 * Rnd)

Command7.Caption = Int(9 * Rnd)

Command8.Caption = Int(9 * Rnd)

Command9.Caption = Int(9 * Rnd)

End Sub

Из которого следует, что после открытия приложения надписи кнопок - цифры полученные псевдослучайно.

Необходимо открыть картинку убирая кнопку за кнопкой. Причём начинать надо с кнопки у которой цифра наибольшая. Затем выбирается кнопка у которой тоже цифра наибольшая, но уже среди оставшихся и т. д.. Таким образом, последняя кнопка - кнопка с наименьшей цифрой.

Долго ...

Если писать обработчик щелчка по кнопке Command1, то может получится так:

Private Sub Command1_Click()

If Command1.Caption < Command2.Caption Then End

If Command1.Caption < Command3.Caption Then End

If Command1.Caption < Command4.Caption Then End

If Command1.Caption < Command5.Caption Then End

If Command1.Caption < Command6.Caption Then End

If Command1.Caption < Command7.Caption Then End

If Command1.Caption < Command8.Caption Then End

If Command1.Caption < Command9.Caption Then End

' если цифра кнопки больше или равна каждой другой, то выбрали нужную!

Command1.Visible = False

' надпись минус один - чтобы уже "невидимая" не мешала выбору нужной среди видимых!

Command1.Caption = -1

End Sub

Для "второй" кнопки:

Private Sub Command2_Click()

If Command2.Caption < Command1.Caption Then End

If Command2.Caption < Command3.Caption Then End

If Command2.Caption < Command4.Caption Then End

If Command2.Caption < Command5.Caption Then End

If Command2.Caption < Command6.Caption Then End

If Command2.Caption < Command7.Caption Then End

If Command2.Caption < Command8.Caption Then End

If Command2.Caption < Command9.Caption Then End

Command2.Visible = False

Command2.Caption = -1

End Sub

Для следующих программные коды аналогичны. Однако, для проверки приведу обработчик для "последней" кнопки:

Private Sub Command9_Click()

If Command9.Caption < Command1.Caption Then End

If Command9.Caption < Command2.Caption Then End