Реферат: Индексированные элементы управления
Теперь другой вопрос. В предыдущем примере я показал два варианта реализации задачи: без использования массива объектов и с использованием его. А можно ли реализовать как-то по-другому решение данной игры, но всё-таки тоже используя массив объектов.
Да, можно.
Рассматриваем ту же задачу, те же коробки, с использованием тех же массивов элементов ( ... но "как-то по-другому ..." ). Всё таже форма, всё тот же Label 1(0) , всё таже клавиатура ... На метке выполняем комбинацию клавиш Ctrl + C , затем Ctrl + V (отвечая положительно на появившийся вопрос диалогового окна среды разработки). Разместите появившуюся метку правее от имевшейся метки. Повторите ещё: Ctrl + V и разместите правее второй. Продолжайте повторение до тех пор пока не разместите метку Label 1(9) правее метки Label 1(8) . Теперь выделите имеющиеся метки с индексами больше единицы. И измените свойства этих меток на противоположное - False. Label1(1) и Label1(0) поменяйте местами.
Объявленную переменную оставьте такую же. Оставлять же процедуры такими какими они есть бессмысленно, потому что уже в "первой" процедуре - процедуре загрузки приложения в память - появится ошибка о невозможности добавить элемент Label 1(1) , так как он уже существует ... Поэтому удалите все процедуры и посмотрите, какими они могут быть заменены:
Private Sub Form_Load()
Me.WindowState = 2
skolko = 1
End Sub
Private Sub Label1_Click(Index As Integer)
If Fix(skolko * Rnd) + 1 = Index Then
' если "угадали" - одна убирается
Label1(skolko).Visible = False
skolko = skolko - 1
Else
' если не "угадали - выставляется ещё одна"
skolko = skolko + 1
If skolko <> 10 Then Label1(skolko).Visible = True
End If
Select Case skolko ' проверка на выигрыш и проигрыш
Case 0
MsgBox "Вы выиграли!": End
Case 10
MsgBox "Вы проиграли.": End
End Select
End Sub
Завершим рассмотрение данного примера сравнением. Проект в первом случае имеет размер 2,46 Кб, в последнем - 8,57 Кб. Однако откомпилированные, исполняемые модули по размеру одинаковы ...
Другой вопрос: а какова разница затраченного времени в обоих случаях, если второй писать "с нуля"? Ответ, понятно, субъективен и зависит во многом от того насколько хорошо вы знакомы со средой разработки, "видите" реализацию кода и насколько быстро набираете его.
Пример последний
или
почему "индексированные элементы управления"?
Чтобы понять, почему корректнее в некоторых случаях говорить "индексированные элементы управления c общим именем", а не "массив элементов управления" рассмотрим следующий небольшой пример.