Главная    Почта    Новости    Каталог    Одноклассники    Погода    Работа    Игры     Рефераты     Карты
  
по Казнету new!
по каталогу
в рефератах

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

и обращении  к  элементу?   Да
возможна, но ...  Но об этом чуть позже.

Теперь другой вопрос.  В предыдущем примере я показал два варианта
реализации задачи: без использования массива объектов и с использованием
его.  А можно ли реализовать как-то по-другому решение данной игры, но всё-
таки тоже используя массив объектов.

                                 Да, можно.

      Рассматриваем ту же задачу, те же коробки,  с  использованием  тех  же
массивов элементов ( ... но "как-то по-другому ..." ).  Всё таже форма,  всё
тот же Label1(0), всё таже клавиатура ...   На  метке  выполняем  комбинацию
клавиш Ctrl + C, затем Ctrl + V (отвечая положительно на появившийся  вопрос
диалогового окна среды разработки).  Разместите появившуюся метку правее  от
имевшейся метки.  Повторите ещё:  Ctrl  +  V  и  разместите  правее  второй.
Продолжайте повторение до тех пор пока не разместите метку Label1(9)  правее
метки  Label1(8).   Теперь  выделите  имеющиеся  метки  с  индексами  больше
единицы.  И  измените  свойства  этих  меток  на  противоположное  -  False.
Label1(1) и Label1(0) поменяйте местами.

                                    [pic]

Объявленную переменную оставьте такую же.   Оставлять  же  процедуры  такими
какими они  есть  бессмысленно,  потому  что  уже  в  "первой"  процедуре  -
процедуре загрузки приложения в память -  появится  ошибка  о  невозможности
добавить элемент Label1(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  общим  именем",  а   не   "массив
элементов управления" рассмотрим следующий небольшой пример.
      На форме брошены шесть кнопок, надписи которых заменены звёздочками:
                                    [pic]
      Кнопки имеют общее имя M, а индексы у всех разные: 204, 192, 209,  67,
200, 194 (в порядке расположения на форме слева направо).   Отсюда  понятно,
что позиция на экране элементов управления не имеет значения,  даже  если  у
них общее имя.

      А вот и готовый программный код:

Private Sub M_Click(Index As Integer)

  M(Index).Caption = Chr(Index) ' надпись кнопки - символ номер index
взятый из таблицы Ascii-символов

End Sub

Что же выполнит компьютер с помощью этих строчек?  Во-первых, это  процедура
обработки щелчка по одной из кнопок у которой имя M, а индекс  Index  (равен
67, 192, 194,  200,  204  или  209).   Во-вторых,  щёлкая  по  всем  кнопкам
прочитаем: "МАССИВ".

      Далее в эту же процедуру впишите:

M(68).Caption="Элемент с индексом 68 не существует"

Нажмите F5.  Щёлкните по одной любой кнопке.   Получится  ошибка:  "элемента
управления с таким индексом не существует".  То  есть,  обращаться  к  ранее
несозданным элементам управления не просто не имеет смысла, а вызывает  крах
программы.  Хотя в обыкновенном массиве M(67 to 209),  элемент  M(68)  будет
существовать вне зависимости от того придавали ли мы какое-то  значение  ему
или нет.  Как видите определения массива элементов управления  и  "обычного"
массива различны.


                         Назовём всё своими именами

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

                                    Что?

      Итак, массив элементов  управления  состоит  из  элементов  управления
(элементы  массива),  которые  создаются  при  построении  визуальной  части
интерфейса   пользователя   и/или   догружаются   программно   (могут   быть
динамическими).   Каждый  элемент  массива  имеет  уникальный  идентификатор
называемый  индексом,  который  есть   целое   неотрицательное   число,   не
превышающее  32767  (зависит  от  ОЗУ).    Индексы   массива   необязательно
чередуются.  Позиция элементов массива произвольная.

                                    Как?

      Массив элементов можно создать, бросая  один  и  тот  же  интересующий
инструмент на форму и изменяя свойство Index.  Кроме того,  если  существует
хотя бы один элемент управления с численным значением  свойства  Index,  то,
возможно,  догрузить  новые  элементы  массива,  используя,  оператор  Load.
Удаляются догруженные элементы массива с помощью оператора Unload.
      Обращение к свойствам элемента массива осуществляется аналогично тому,
как  обращаются  к  свойствам  объекта,  не  имеющего  численного   значения
свойства Index.
12
скачать работу

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

 

Отправка СМС бесплатно

На правах рекламы


ZERO.kz
 
Модератор сайта RESURS.KZ