5.8. Создание меню и панелей инструментов проектов


            Большинство Windows-приложений обладают стандартным графическим интерфейсом. Ранее мы научились устанавливать требуемый размер окна проекта, его положение на экране монитора, цвет фона и шрифта и др. Однако, работа со многими проектами невозможна без меню и панелей инструментов, которые обеспечивают доступ к тем или иным событийным процедурам.

            Проект 5.9. «Простой текстовый редактор». Разработаем простейший текстовый редактор, который позволит выполнять основные операции редактирования текста. В качестве области ввода и редактирования текста используем многострочное текстовое поле.

Проект «Простой текстовый редактор».

1

Разместить на форме текстовое поле и присвоить ему имя txtEdit.

2

Для того чтобы сделать поле многострочным, свойству поля MultiLine присвоить значение True.

            Создадим меню для нашего текстового редактора. Меню состоит из одного или нескольких заголовков верхнего уровня, например, Файл, Правка и т.д., в каждый из которых входит хотя бы одна команда. Например, Файл-Выход, Правка-Вырезать-Копировать-Вставить-Удалить. Каждый заголовок меню и каждая команда являются управляющими элементами, которые обладают многими свойствами, но только одним событием Click.

            Для создания меню используется специальный редактор меню Menu Editor.

3

Для запуска редактора меню в перейти в окно формы командой [View-Object] и ввести команду [Tools-Menu Editor…].

4

На появившейся диалоговой панели Menu Editor создать заголовок первого уровня. В  поле Caption внести надпись Правка и в поле Name имя объекта mnuEdit.

5

Для создания следующего пункта меню щелкнуть по кнопке Next.

Для создания пункта меню уровня команд (например, команды меню Правка) щелкнуть по кнопке со стрелкой вправо.

Ввести надпись Вырезать и имя mnuCut.

6

Повторить процедуру и создать команды, входящие в меню Правка: Копировать (mnuCopy), Вставить (mnuPaste) и Удалить (mnuDel).

 

            Теперь необходимо для каждого пункта меню создать событийную процедуру, которая будет выполняться по щелчку мыши.

 

7

В режиме конструирования проекта раскрыть меню и последовательно двойным щелчком мыши создать пустые заготовки событийных процедур для каждого пункта меню. 

8

В процессе редактирования текста в окне txt.Edit необходимо использовать для промежуточного хранения фрагментов текста объект Windows Clipboard (Буфер обмена).

Сначала необходимо очистить буфер с использованием метода Clear.

Затем поместить выделенный в текстовом поле фрагмент текста (свойство текстового поля Seltext) в буфер c использованием метода буфера SetText.

Наконец, удалить выделенный текст, присвоив свойству SelText пустое значение “”.

Таким образом, событийная процедура для команды меню Вырезать запишется следующим образом: 

Private Sub mnuEditCut_Click()

' Очистить Буфер обмена.

Clipboard.Clear

' Поместить выделенный текст в Буфер обмена.

Clipboard.SetText frm1.txtEdit.SelText

' Удалить выделенный текст.

frm1.txtEdit.SelText = ""

End Sub

9

Событийная процедура для команды меню Копировать запишется следующим образом:

Private Sub mnuEditCopy_Click()

' Очистить Буфер обмена.

Clipboard.Clear

' Поместить выделенный текст в Буфер обмена.

Clipboard.SetText frm1.txtEdit.SelText

End Sub

10

Событийная процедура для команды меню Вставить запишется следующим образом:

Private Sub mnuEditPaste_Click()

' Вставить текст из Буфера обмена.

frm1.txtEdit.SelText = Clipboard.GetText()

End Sub

11

Событийная процедура для команды меню Удалить запишется следующим образом:

Private Sub mnuEditDel_Click()

' Удалить выделенный текст.

frm1.txtEdit.SelText = ""

End Sub

12

Запустить проект, ввести в текстовом окне текст и произвести его редактирование с использованием пунктов меню Правка.

            Для быстрого ввода команд используются панели инструментов. Элемент управления Панель инструментов (ToolBar) не входит в стандартный набор управляющих элементов языка Visual Basic. Для работы с этим элементом необходимо воспользоваться одним из дополнительных наборов управляющих элементов Microsoft Windows Common Control 6.0.

13

Ввести команду [Project-Components…].

На появившейся диалоговой панели Components из списка дополнительных наборов управляющих элементов выбрать набор Microsoft Windows Common Control 6.0.

 

Панель инструментов окна Visual Basic дополнится новыми управляющими элементами и, в том числе, ToolBar  и ImageList.

 

            Создадим панель инструментов для меню Правка.

14

В режиме конструирования проекта поместить на форму управляющий элемент Панель инструментов и присвоить ему имя tbrToolbar.

15

Активизировать свойство Custom.

На появившейся диалоговой панели Property Pages выбрать вкладку Buttons.

Щелкнуть по кнопке Insert Button.

В поле Key: ввести имя первой кнопки панели инструментов Cut.

16

Повторить процедуру и поместить на панель инструментов проекта кнопки Copy, Paste и Del.

 

            Для панели инструментов Правка необходимо создать событийную процедуру, которая должна обеспечивать необходимые действия по редактированию текста по щелчку по каждой из кнопок. 

17

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

Использовать инструкцию Select Case для вызова требуемых действий после щелчка по каждой из кнопок панели инструментов.

Для идентификации кнопок использовать значения свойства   Button.Key:

Private Sub tbrToolbar_ButtonClick(ByVal Button As MSComctlLib.Button)

Select Case Button.Key

Case Is = “Cut”

Clipboard.Clear

Clipboard.SetText frm1.txtEdit.SelText

frm1.txtEdit.SelText = “”

Case Is = “Copy”

Clipboard.Clear

Clipboard.SetText frm1.txtEdit.SelText

Case Is = “Paste”

frm1.txtEdit.SelText = Clipboard.GetText()

Case Is = “Del”

frm1.txtEdit.SelText = “”

End Select
End Sub

 

            Для удобства работы на кнопки панели инструментов проекта целесообразно поместить значки, как это сделано в Windows и ее приложениях.

18

Поместить на форму управляющий элемент Список изображений (ImageList) и присвоить ему имя imlToolbar.

19

Активизировать свойство Custom и на появившейся диалоговой панели Property Pages выбрать вкладку Images.

Щелкнуть по кнопке Insert Picture и выбрать графический файл (cut.bmp) для размещения на первой кнопке Cut.

20

Повторить процедуру и выбрать графические файлы copy.bmp, paste.bmp и delete.bmp для кнопок Copy, Paste и Del.

            Синхронизировать кнопки на панели инструментов tbrToolbar и значки из списка рисунков imlToolbar.

21

Для элемента tbrToolbar активизировать свойство Custom.

На вкладке General в окне ImageList выбрать элемент imlToolbar.

На вкладке Buttons синхронизировать значения свойства Index (упорядочивает кнопки) и свойства Image (упорядочивают значки).

22

Запустить проект и с помощью меню Правка и панели инструментов произвести редактирование введенного текста.

23

Сохранить проект в файле prj9.vbp.

 

            Проект 5.10. «Усовершенствованный текстовый редактор».  На основе предыдущего проекта 5.9 разработаем текстовый редактор, который будет обладать дополнительными возможностями:

-          открывать и сохранять текстовые файлы;

-          форматировать текст (изменять параметры шрифты и выбирать цвет);

-          поддерживать технологию «drag and drop”.

Для реализации этого необходимо воспользоваться в качестве рабочего поля текстового редактора новым элементом управления RichTextBox (Усовершенствованное текстовое поле), которое является дополнительным компонентом и требует установки.

Проект «Усовершенствованный текстовый редактор»

1

Ввести команду [Project-Components…]. На появившейся диалоговой панели Components из списка дополнительных  управляющих элементов выбрать Microsoft Rich Textbox Control 6.0.

Панель инструментов окна Visual Basic дополнится  управляющим элементом RichTextBox.

2

Открыть проект 5.9 и удалить текстовое поле txtEdit.

Поместить на форму усовершенствованное текстовое поле RichTextBox и присвоить ему имя txtEdit.

            Для реализации операций с файлами и форматирования текста понадобится еще один дополнительный элемент управления CommonDialog (Общий диалог).

3

Ввести команду [Project-Components…]. На появившейся диалоговой панели Components из списка дополнительных управляющих элементов выбрать набор Microsoft Common Dialog Control 6.0.

Панель инструментов окна Visual Basic дополнится  управляющим элементом CommonDialog. Поместить этот элемент в любое место формы (он будет виден только в режиме конструирования проекта) и присвоить ему имя dlg1.

 

            Для реализации дополнительных возможностей текстового редактора необходимо расширить систему меню и ввести дополнительные пункты Файл и Форматирование, содержащие команды второго и третьего уровня: 

4

С помощью редактора меню Menu Editor  расширить систему меню и ввести пункты:

 

Файл

….Открыть …

….Сохранить

….Сохранить как …

Форматирование

….Шрифт

….Цвет

……..Цвет шрифта

……..Цвет фона

 

            Теперь для каждого пункта меню необходимо создать событийные процедуры. В процессе выполнения событийных процедур будут использоваться свойства управляющего элемента Общий диалог dlg1, для которых должны быть предварительно установлены определенные значения.

            Создадим событийные процедуры открытия и сохранения файла.

5

Активизировать объект Общий диалог dlg1.

Выбрать свойство Custom, появится диалоговая панель Property Pages для установки значений свойств этого объекта.

Выбрать вкладку Open/Save As и в поле DialogTitle ввести имя для окна, которое будет возникать при открытии файла.

6

Ввести программный код событийной процедуры, которая будет производить открытие файла. В процедуре будет использован метод ShowOpen, который откроет соответствующую панель общего диалога, и метод LoadFile, который произведет открытие файла в текстовом поле: 

Private Sub mnuOpen_Click()

dlg1.ShowOpen

txtEdit.LoadFile dlg1.filename

End Sub

7

Запустить проект, ввести команду [Файл-Открыть…].

С помощью появившейся стандартной панели Windows Открыть файл выбрать файл и щелкнуть по кнопке Открыть.

Текст файла появится в окне нашего текстового редактора.

8

Ввести программный код событийных процедур Сохранить и Сохранить как …. В процедурах будет использован метод ShowSave, который откроет соответствующую панель общего диалога, и метод SaveFile, который произведет сохранение файла. Процедура Сохранить

Private Sub mnuSave_Click()

dlg1.ShowSave

If dlg1.filename = "" Then

mnuSaveAs_Click

Else

txtEdit.SaveFile dlg1.filename

End If

End Sub

Процедура Сохранить как …:

Private Sub mnuSaveAs_Click()

dlg1.ShowSave

txtEdit.SaveFile dlg1.filename

End Sub

9

Запустить проект, ввести команду [Файл-Сохранить].

На появившейся панели Открыть файл в поле Имя файла: ввести имя и щелкнуть по кнопке Сохранить.

 

            Создадим теперь событийную процедуру форматирования шрифта.

10

Для объекта dlg1 выбрать свойство Custom, и на  диалоговой панели Property Pages выбрать вкладку Font.

В полях FontName, FontSize, Min и Max ввести параметры шрифта, которые будут использоваться по умолчанию.

Обязательно установить в поле Flags значение 2 (определяет используемый тип шрифтов).

11

Ввести программный код событийной процедуры форматирования шрифта. В процедуре будет использован метод ShowFont, а также пять свойств, определяющих начертание шрифта:

Private Sub mnuFont_Click()

dlg1.ShowFont

txtEdit.Font.Size = dlg1.FontSize

txtEdit.Font.Name = dlg1.FontName

txtEdit.Font.Bold = dlg1.FontBold

txtEdit.Font.Italic = dlg1.FontItalic

txtEdit.Font.Underline = dlg1.FontUnderline

End Sub

12

Запустить проект, ввести команду [Форматирование-Шрифт].

С помощью появившейся стандартной панели Windows Выбор шрифта установить требуемые параметры шрифты.

 

 

            Создадим событийные процедуры выбора цвета шрифта (свойство ForeColor) и цвета фона (свойство BackColor).

13

Для объекта dlg1 выбрать свойство Custom, и на  диалоговой панели Property Pages выбрать вкладку Color.

В поле Color установить 0 (по умолчанию черный цвет), в поле Flags значение 2 (определяет открытие полного диалогового окна выбора цвета).

14

Ввести программный код событийных процедур выбора цвета шрифта и фона. В процедурах будет использован метод ShowColor, а также свойства SelColor и BackColor. Процедура выбора цвета шрифта:

Private Sub mnuFontColor_Click()

dlg1.ShowColor

txtEdit.SelColor = dlg1.Color

End Sub

 

Процедура выбора цвета фона:

 

Private Sub mnuBackColor_Click()

dlg1.ShowColor

txtEdit.BackColor = dlg1.Color

End Sub

15

Запустить проект, ввести команду [Форматирование-Цвет-Цвет шрифта].

На появившейся панели Цвет задать числами интенсивность трех базовых составляющих цвета (Красный:, Зеленый: и Синий:)  или выбрать с помощью мыши нужный цвет.

16

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

17

Сохранить проект в файле prj10.vbp.

 

Задания для самостоятельного выполнения (Ответы)

5.38. Усовершенствовать проект 5.9 «Простой текстовый редактор» введением меню Файл c командой Выход, которая обеспечивает выход из проекта.

5.39. Усовершенствовать проект-задание 5.38, дополнив его панелью инструментов Файл с кнопкой Выход.

5.40. Усовершенствовать проект-задание 5.39, предусмотрев возможность поиска и замены фрагментов текста, а также редактирования больших текстов.