ЛАБОРАТОРНАЯ РАБОТА №8"Создание меню"
Цели: 1) Получить представление о создании меню.
2) Получить навык создания меню.
3) Изучить методы элемента Clipboard.
4) изучить методы элемента Screen.
Создавать меню лучше всего на большом развернутом примере.
Допустим, что мы хотим создать небольшой текстовый редакт-
ор, в котором есть возможность работы с буфером: копирова-
ть, удалять и вставлять текст в/из буфер(а). Никаких слож-
ностей, типа открыть файл (закрыть, сохранить и пр.) расс-
матривать мы не будем. Должно получится приложение вида:
Скажу сразу, что приложение "Маленький редактор" находится
у вас в каталоге progs\mininotepad. Оно набрано, проверено
и полностью соответствует заданию - работает с буфером об-
мена. Таким образом, вы можете проверять его двумя способ-
ами:
1 способ
~~~~~~~~
Войти в каталог mininotepad, запустить файл Project1.vbp и
полазить по коду программы, запустить ее на исполнение,
копировать любую ее часть для своих нужд и т.п.
2 способ
~~~~~~~~
Закусись губу и самостоятельно разобратся в том, как дела-
ется меню, как набивается его структура и как пошагово сд-
елать программу "Маленький редактор".
Никакой из двух приведенных способов не является более пр-
едпочтительным. Вы выбираете то, что вам ближе. Учтите од-
но - скоро вы получите большое задание по курсу, а в нем
обязательно надо будет создать меню. Выбирайте...
Продолжаем разговор.
Итак, для начала несколько жизненно важных сведений:
1. Буфер обмена.
~~~~~~~~~~~~~~~~
Буфер обмена (clipboard )- это системный объект Windows.
Он позволяет хранить различную информацию (текст, графика,
список файлов и пр.) Некоторые авторы предлагают сравнение
буфера обмена с карманом, в который можно "спрятать" данн-
ые, а потом "достать" их оттуда.
Мне такое сравнение кажется не очень удачным, т. к. с
его помощью нельзя интерпретировать копирование элемента в
буфер... Как это: на столе лежит яблоко, а мы взяли и пол-
ожили в карман точную копию этого яблока, а само оно оста-
лось лежать на столе. Не понимаю...
В любом случае, это всего лишь аналогия, а в жизни мы имеем
объект, который называется Clipboard (буфер) и имеет следу-
ющие методы:
1. Clear - очистка содержимого.
2. SetText - помещает выделенную строку в буфер.
3. SetData - помещает выделенное изображение в буфер.
4. GetText - извлекает строку из буфера.
5. GetData - извлекает изображение из буфера.
6. GetFormat - возвращает число, указывающее на то, что
находится в буфере (1 - текст; 2,3,8 - изо-
бражение). Вообще-то, функция возвращает не
число, а логическое значение (True, False),
которое зависит от параметра, переданного
ей. Не плачьте, сейчас объясню...
Значит так, если мы хотим узнать какие данные хранятся у
нас в буфере, то нам надо вызвать функцию GetFormat() и
посмотреть на то, что она вернет. Например:
If GetFormat(1)=True Then Print "В буфере текст" Else Print "В буфере изображение"
2. Объект Screen.
~~~~~~~~~~~~~~~~~
Screen - это системный объект Windows, который (как бы)
находится на рабочем столе Windows и отслеживает положение
и размер форм на экране, расположение указателя мыши и так
далее...
Этот элемент имеет очень много свойств и методов, среди
которых нас интересует одно свойство - ActiveControl (акт-
ивный элемент управления). Это свойство хранит название
того элемента управления, который имеет на форме фокус.
А у активного элемента управления есть свойство SelText
(выделенный текст). Это свойство хранит строку выделенного
текста у активного элемента управления.
Теперь поговорим о том, как делать меню. Для этого в Visu-
al Basic предусмотрен специальный мини-редактор, который
называется Menu Editor. Чтобы начать создание меню надо
кликнуть на пиктограмме:
Вот она, третья слева...
Попав в редактор меню, мы должны набить его будущую струк-
туру. Структура нашего меню будет такова:
Буфер mnuClipboard
Копировать mnuCopy
Удалить mnuDelete
Вставить mnuPaste
- Line
Выход mnuExit
Слева приведены названия пунктов меню, т. е. тех строк,
которые будут видны в качестве пунктов меню в рабочем при-
ложении. Справа даны имена этих пунктов меню, которые буд-
ут фигурировать в коде программы. Смотрите на рисунки, пр-
иведенные ниже:
Обратите внимание на несколько сложных моментов:
1. Пункт меню "Буфер" (mnuClipboard) находится левее всех
остальных пунктов. Это говорит о том, что остальные пу-
нкты являются его подпунктами.
2. Пункт меню "-" (Line) на самом деле является линией,
разделяющей пункты меню. Чтобы она появилась необходимо
в свойстве Caption написать "-", а в свойстве Name что-
нибудь. (Line было написано для понятности...)
Если вы наберете все верно и вставите на форму текстовое
окно, то у вас получится приложение вида:
Теперь давайте разбираться с процедурами. Да-да... Дело
в том, что выбор каждого пункта меню пользователем - это
запуск процедуры, которая с ним связана. Создавать такие
процедуры очень просто: после того как вы выйдете из реда-
ктора меню (кнопка "Ок"), в самом верху вашей формы появи-
тся полуготовое меню. Если вы выберете пункты меню, то
Visual Basic сам сгенерит соответствующую процедуру.
Процедур у нас четыре:
1. Копировать;
2. Удалить;
3. Вставить;
4. Выход.
Разберем каждую:
Rem Копировать в буфер
Private Sub mnuCopy_Click()
Clipboard.Clear
Clipboard.SetText Screen.ActiveControl.SelText
End Sub
В процедуре mnuCopy_Click() выполняются два действия. Сна-
чала (на всякий случай) вызывается метод элемента Clipboa-
rd Clear (очистка содержимого), а потом (следите за текст-
ом) в "буфер" заносится текст, равный выделенному тексту
активного элемента управления.
Rem Удалить в буфер
Private Sub mnuDelele_Click()
Clipboard.Clear
Clipboard.SetText Screen.ActiveControl.SelText
Screen.ActiveControl.SelText = ""
End Sub
В процедуре mnuDelete_Click() выполняются три действия.
Сначала (на всякий случай) вызывается метод Clear (очистка
буфера), потом в буфер заносится текст, равный выделенному
тексту активного элемента управления. Последнее действие -
удаление выделенного текста автивного элемента управления,
т.е. приравнивание его к "".
Rem Вставить из буфера
Private Sub mnuInsert_Click()
Screen.ActiveControl.SelText = Clipboard.GetText()
End Sub
Процедура вставки текста из буфера - самая простая. Мы пр-
осто вставляем в текущее место активного элемента управле-
ния текст, хранящийся в буфере.
Задания к лабораторной работе №8
1. Прочитать, законспектировать работу.
2. Проверить пример.
3. Морально готовится к получению большого задания по курсу.