Простой текстовый редактор
На этом занятии мы создадим простой текстовый редактор (почти такой как стандартный Блокнот). Создадим новый (стандартный) проект. Ввод и редактирование текста будет производится в текстовом поле (TextBox), поэтому поместим этот компонент на форму и установим его свойства.
Если сейчас запустить проект, то мы будем иметь возможность вводить текст, перемещаться по тексту, удалять текст. Добавим возможность сохранять и открывать текстовые файлы, копировать, вырезать, вставлять часть текста. Эти действия должны выполнятся по щелчку соответствующего пункта меню. Следовательно, добавим в наше приложение меню. Создание меню в Visual Basic осуществляется с помощью специального инструмента создания меню — редактора меню. Окно редактора меню открывается одним из трех способов: путем нажатия комбинации клавиш [Ctrl+E], нажатием соответствующей кнопки на панели инструментов или после выбора команды меню Инстументы→Редактор меню... (Tools→Menu Editor...). Проще всего создавать меню при помощи встроенного редактора меню Visual Basic. Для этого сначала в поле Название (Caption) окна редактора вводится текст, который будет виден в строке меню. Для быстрого открытия меню или вызова команды используются горячие клавиши. Для определения горячих клавиш достаточно в поле Название (Caption) перед соответствующей буквой поставить амперсанд Второй шаг — назначение имени элементу меню (так же, как любому элементу управления). Учтите, что Visual Basic не задает имя по умолчанию, как для других элементов управления. При назначении имен элементам меню также нужно соблюдать правила. Имя должно состоять из следующих частей: прежде всего, префикса, указывающего, что это меню, т.е. mnu; затем следует: для пунктов главного Последняя задача при создании меню — определение уровней. Для этого воспользуйтесь кнопками со стрелками. Кнопка со стрелкой вправо смещает элемент меню на уровень ниже, а со стрелкой влево — на уровень выше. Кнопки с вертикальными стрелками изменяют позицию отдельных элементов меню, т.е. перемещают их в списке вверх или вниз. Поле Быстрая клавиша (Shortcut) позволяет определить комбинации клавиш для быстрого доступа к отдельным элементам меню. Среди наиболее часто используемых приложениями Windows комбинаций клавиш можно отметить следующие: [Ctrl+X] (Вырезать - Cut), [Ctrl+C] (Копировать - Copy), [Ctrl+V] (Вставить - Paste). В последней строке верхней половины окна редактора меню есть еще три свойства элементов меню. Свойство Видимо (visible) позволяет отображать или скрывать отдельные элементы меню. Свойство Включено (Enabled) функционирует так же, как в других элементах управления: если его значение False, то текст надписи подсвечивается серым цветом и пользователь не может выполнить эту команду меню. Свойство Отмечено (Checked) встречается в данной книге впервые. Оно позволяет пометить выбранный элемент меню галочкой. Свойства элементов меню можно изменять и во время выполнения. При этом синтаксис такой же, как и для других элементов управления. Для создания процедуры выполнения команды меню следует во время проектирования выбрать соответствующий пункт в форме. При этом создастся процедура обработки события щелчок (click). Другие элементы меню можно найти и в списке объектов окна кода. Итак создадим меню. Структура меню представлена на рисунке:
Нажимаем [Ok] и получаем готовое меню (осталось, только, добавить обработку кликов по его пунктам).
Напишем обработчики событий щелчка по пунктам меню. Для создания процедуры выполнения команды меню следует во время проектирования выбрать соответствующий пункт в форме. При этом создастся процедура обработки события click. Другие элементы меню можно найти и в списке объектов окна кода. Одно из основных достоинств Windows — средства поддержки работы в многозадачном режиме, позволяющие одновременно выполнять несколько приложений и других процессов. Для организации передачи данных и связи между программами в Windows созданы инструменты и структуры, обеспечивающие простое решение указанных задач. Буфер обмена является общим хранилищем данных для всех приложений Windows. Поэтому данными, помещенными в буфер обмена, можно воспользоваться в любом приложении Windows. Однако при этом следует учитывать формат данных. Содержимое буфера обмена можно просмотреть с помощью программы CLIPBRD.EXE, входящей в состав Windows. Доступ к буферу обмена Windows из приложения VisualBasic обеспечивает объект Clipboard. Чтобы каждый элемент управления получал данные в понятном для него формате, например, объект TextBox — символьные строки, a PictureBox — графические изображения, следует использовать соответствующие методы объекта Clipboard. Методы SetText и GetText соответствующих объектов предназначены для работы с текстом, а методы GetData и SetData — для работы с графикой. Используя различные методы, разработчик при передаче информации может обеспечить совместимость форматов данных для выбранного элемента управления. Метод SetText записывает текстовую строку в буфер обмена и заменяет текущее содержимое буфера. Скопировать содержимое выделенного текстового поля txtNotepad в буфер обмена можно следующим оператором: Метод GetText возвращает содержимое буфера обмена в виде текстовой строки. Чтобы заменить выделенный текст в текстовом поле содержимым буфера обмена, следует воспользоваться методом GetText: Если буфер обмена содержит данные, то после вызова метода SetData или SetText данные указанного формата переписываются в объект, но в буфере сохраняются данные в других форматах. Чтобы в буфере не находились одновременно данные из нескольких приложений, перед экспортом данных в Clipboard следует удалить все его содержимое. Для этого применяется метод Clear: Private Sub mnuECopy_Click() Private Sub mnuECut_Click() Private Sub mnuEDel_Click() Private Sub mnuEPaste_Click() Для реализации операций с файлами потребуется дополнительный элемент управления - диалоговое окно (CommonDialоg). Это дополнительный элемент управления. Для того чтобы он появился на панели компонентов необходимо выполнить следующие действия: Выбрать в VisualBasic Проект → Компоненты (или [Cntr+T])и установить флажок у компонента Microsoft Common Dialog Control 6.0. Панель компонентов дополнится новым компонентом. Переместите его на форму в любое место (этот компонент не визуальный и виден не будет). Присвойте новому объекту имя (name): dlgFile. Затем вызовете страницы свойств (щелчок правой кнопкой → Propirties) и установите нужные свойства на соответствующей закладке (в зависимости от того какой диалог вы вызываете). Теперь напишем код обработки щелчков по пунктам меню "Файл". Private Sub mnuFNew_Click() Private Sub mnuFOpen_Click() Private Sub mnuFSave_Click() Private Sub mnuFSaveAs_Click() Приложение работает. Теперь мы имеем возможность производить простые операции редактирования текста (копировать, вырезать, вставлять) и операции открытия и сохранения файлов. Продолжим. Для удобства работы дополним текстовое поле полосой прокрутки. Добавим вертикальную прокрутку, для этого свойству ScrollBars установим соответствующее значение. Теперь, если весь текст не вмещается в текстовое поле, появится полоса прокрутки.
Пункт "Вставка" должен быть активен только в том случае, если в буфере обмена есть текст. Private Sub mnuEdit_Click() Вырезать, копировать и удалять можно только если выделен какой-либо блок текста. Private Sub mnuEdit_Click() Хорошо. Теперь меню работает как надо! Осталось исправить еще одну неприятную особенность: при изменении размеров окна размеры текстового поля не изменяются, в результате возникает такая вот картина: Исправим. Добавим код изменяющий размеры текстового поля, если происходит изменение размеров формы: Private Sub Form_Resize() Так как на форме не только текстовое поле, но и меню, и полоса прокрутки нам пришлось вычесть их размеры. Готово! Теперь приложение готово! Мы создали полноценный текстовый редактор.
Учимся программировать!
|