Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Создание циклической программы с командным управлением

Департамент образования города Москвы

Педагогический колледж № 1 имени К.Д. Ушинского

 

 

А. М. ЗЕЙБЕРТ

 

 

Программирование

На VBA в среде MS Excel

Часть 2. Создание интерактивных программ

 

 

Пособие для преподавателей и студентов

 

Москва

2007–2009

Программирование пользовательской формы

Подход к уроку:

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

Общие принципы программирования пользовательской формы

Пользовательская форма представляет собой окно (контейнер), на котором могут быть размещены элементы управления. Элементы управления выполняют следующие функции:

· выводят информацию на экран;

· позволяют пользователю ввести информацию;

· позволяют пользователю запустить какое-либо действие.

(см. «Обзор элементов управления» и справку «Элементов управления. Свойства»)

Обычно программирование пользовательской формы описывается тремя принципами:

1. Объектно-ориентированное программирование

2. Визуальный стиль разработки программ

3. Объектно-событийная организация программы.

Объектно-ориентированное программирование

Каждый элемент управления является объектом. Следовательно, он имеет имя, свойства, методы.

Свойства

можно узнавать для того, чтобы получать информацию от пользователя
можно устанавливать для того, чтобы

выводить информацию и изменять внешний вид формы

Методы можно выполнять для того, чтобы

Форматы обращения к свойствам и методам известны из предыдущих тем:

Действие Формат
Узнать свойство (положить его значение в переменную) <переменная> = <Объект>.<Свойство>
Установить свойство <Объект>.<Свойство> = <значение>
Выполнить метод <Объект>.<Метод> <аргумент1>, <аргумент2> …

Визуальный стиль разработки программ

Визуальный стиль приводит к новой технологии программирования, которая отличается от традиционной. Ее принятое название – WYSIWYG (What You See Is What You Get – то, что вы видите, это именно то, что вы получите). Общая идея WYSIWYG: значительную часть работы по созданию программы можно сделать редакторскими средствами.

В Excel Basic есть два уровня данной технологии:

Уровень 1. Существует конструктор формы, в нем можно «вручную» создавать элементы управления и устанавливать их начальные свойства.

Уровень 2. Существует окно свойств: название значение
     

В нем можно задавать или выбирать из списка начальные значения свойств.

Объектно-событийная организация программы

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

В результате меняется облик программы:

· управление передается объектам, т.е. в значительной мере пользователю;

· вместо большой программы есть несколько маленьких программ для каждого объекта;

· существуют моменты, когда никакая программа не работает.

Средством реализации данного принципа являются событийные процедуры (см. далее).

Редакторская работа с формой

Создать пустую пользовательскую форму:

1. Редактор Visual Basic

2. Меню–Insert–UserForm

Должна появиться форма и панель элементов. Если панели нет, то:

Меню–View–ToolBox.

Создать элемент управления:

1. Выбрать элемент на панели элементов.

2. «Нарисовать» его в нужном месте формы.

Элемент можно редактировать:

· непосредственно в форме (перетаскивание границ, надписи и т.п.);

· с помощью окна свойств.

 

Каждая форма имеет свой модуль программ.

Создать модуль программ для формы:

Меню– View–Code либо двойной щелчок по любому элементу управления или по форме (см. Событийные процедуры).

Переключение между формой и модулем программ:

Меню–Window–…

Запуск формы на выполнение

1. Выделить форму (щелчок по заголовку)

2. Меню–Run–Run Sub/UserForm

Обзор элементов управления

 

Функции элементов управления

Элемент управления Вывод информации на форму Ввод информации от пользователя Запуск действий
Кнопка     ü
Надпись ü    
Список   ü  
Поле со списком   ü  
Радиокнопка   ü  
Флажок   ü  
Поле ü ü  

См. также распечатку «Элементы управления. Свойства».

Событийные процедуры

Каждая событийная процедура выполняются как реакция определенного объекта на определенное событие. Для того, чтобы система знала, когда запускать процедуру (для какого объекта и в ответ на какое событием), процедуру надо правильно назвать:

· каждый объект имеет имя;

· каждое событие имеет в VBA определенное название;

· формат имени событийной процедуры:

Sub <Объект>_<Событие>

· пример (щелчок по кнопке):

Sub CommandButton1_Click

Текст событийной процедуры пишется по обычным правилам.

В редакторе Visual Basic есть возможность не писать заголовок вручную, а получить его в готовом виде.

Автоматическое создание заготовки событийной процедуры.

Вариант-1:

У каждого элемента управления есть так называемое «событие по умолчанию». Чтобы создать процедуру для такого события, надо дважды щелкнуть по элементу управления в конструкторе формы.

Вариант 2:

В модуле программ из раскрывающихся списков (вверху, над текстом процедур) выбрать:

1) объект;

2) событие.

Если при этом появится «лишняя» заготовка, ее можно удалить.

 

На первых порах мы будем использовать два события:

· щелчок по кнопке.

· инициализация формы (событие возникает при запуске формы на выполнение)

Пример первой программы

Техническое задание:

Внешний вид формы

  «Сюжет программы»
            1. Пользователь вводит свое имя
Кто вы?  

Надпись

  (например, Наташа)
            и щелкает OK
    Поле     2. Программа:
            – заменяет надпись «Кто вы?» на
Кнопка   OK     «Здравствуйте, Наташа»
            – убирает поле с экрана

Редакторская работа

1. Создайте форму.

2. Разместите на ней элементы управления.

3. В редакторе формы:

3.1 уточните их место и размеры;

3.2 измените текст надписи и кнопки.

4. С помощью окна свойств подберите шрифт надписи (поля, кнопки). Для этого:

4.1 убедитесь, что надпись выделена;

4.2 в окне свойств найдите свойство Font (шрифт);

4.3 «вщелкнитесь» мышкой в ячейку со значением свойства – в правой части ячейки должна появиться кнопка с многоточием;

4.4 щелкните по этой кнопке – должно появиться диалоговое окно «Выбор шрифта»;

4.5 установите характеристики шрифта.

5. Осуществите двойной щелчок по кнопке, чтобы получить модуль программ и автоматически создать заготовку для процедуры CommandButton1_Click.

Программирование

Для решения задачи нам будет достаточно событийной процедуры CommandButton1_Click.

Скорректируем (применительно к пользовательской форме) общий подход к решению задач, в которых есть обмен информацией между программой и другими объектами:

0) Планируем внутренние переменные.

1) Значения свойств элементов управления переносим в переменные.

2) Решаем задачу в обычных переменных.

3) Итоговые значение переносим из переменных на свойства элементов управления.

Схематически изобразим план решения задачи:

Переменные

         
  3  

Здравствуйте, Наташа!

             
hello     Наташа      
  2 1          
            OK  
  kto            

По справочнику «Элементы управления. Свойства» найдем нужные свойства элементов: Caption для надписи и Text для поля. «Четвертым» действием спрячем поле; для этого нам пригодится свойство Visible. Имена элементов управления видны в окне свойств (свойство Name), также они указаны и в справочнике.

Sub CommandButton1_Click()  
Dim kto As String

Объявляем переменные

Dim hello As String
kto = TextBox1.Text стрелка-1
hello = ”Здравствуйте, ” & kto & ”!” стрелка-2 (см. «Работа с текстом»)
Label1.Caption = hello стрелка-3
TextBox1.Visible = False прячем поле
End Sub  

Создание циклической программы с командным управлением

Подход к уроку:

Первым образцом подобной программы будет тест с выбором ответа из нескольких предложенных. В тесте будет несколько вопросов, с которыми мы будем выполнять одинаковые действия, – это безусловный признак цикла. Пользователь будет выбирать ответ и щелкать по кнопке, тем самым давая программе команду двигаться дальше – это называется командным управлением. «Хитрость» заключается в том, что циклическая по сути программа будет организована без использования обычных циклов (For i или While). Это является следствием объектно-событийной организации программы для пользовательской формы.

Материал в данном разделе организован по «концентрическому» принципу: мы постараемся как можно быстрее сделать пусть примитивный, но зато работающий вариант программы, а затем будем совершенствовать его, постепенно осваивая новые возможности. Для начала возьмем простой вариант теста – с одинаковым количеством ответов на все вопросы.

Организация данных

Исходные данные теста мы размещаем на листе электронной таблицы.

  A B  
1 Вопрос 1    
2 Ответ 1.1    
3 Ответ 1.2    
4 Ответ 1.3    
5     – пустая строка рекомендуется
6 Вопрос 2   для большей наглядности
7 Ответ 2.1    
8 Ответ 2.2    
9 Ответ 2.3    
  и т.д.    

Для адресации заведем глобальную объектную переменную с именем mesto1. Рекомендуется завести глобальную переменную для хранения количества ответов на один вопрос (Kol).

Результаты теста также будем запоминать в таблице, но на другом листе. Для адресации будем использовать глобальную объектную переменную с именем mesto2. Рекомендуются осмысленные имена листов («Данные», «Результаты»).

Глобальными называются переменные, значения которых доступны из любой процедуры. Глобальные переменные объявляются обычным способом, но в самом начале модуля, до описания процедур. Начальные значения глобальных переменных надо задать:

· в стартовой процедуре (Форма_Инициализация)

· с подробным адресом, например:

Set mesto1 = Worksheets(“Данные”).Range(“A1”)

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...