23373

Конструирование меню и работа со стандартными окнами диалога Windows

Лабораторная работа

Информатика, кибернетика и программирование

Контекстное меню Рабочая область редактора Панель инструментов Меню Рис. Создание главного меню приложения Для создания главного меню приложения необходимо: поместить на форму компонент MainMenu Главное меню со станицы Standard Палиры Компонентов. Двойным щелчком по данному невизуальному компоненту вызвать редактор меню: Перемещаясь по обозначенным пунктам меню задаем в свойстве Caption каждого пункта.

Русский

2013-08-04

322.4 KB

10 чел.

Лабораторная работа 5
Конструирование меню и работа со стандартными окнами диалога Windows

Выполнив эту лабораторную работу, Вы сможете:

Научитесь создавать главное меню и всплывающее меню приложения;

Научитесь использовать компоненты стандартных окон диалогов;

Научитесь создавать панели инструментов приложения;

Познакомитесь с понятием метод;

Познакомитесь с основными методами объектов общих диалогов;

Научитесь применять методы к объектам;

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

Работу с этими компонентами рассмотрим на примере разработки приложения, представляющего собой простейший текстовой редактор со следующими возможностями:

  1. загрузить текст из файла;
  2. очистить поле редактора;
  3. сохранить файл на диске;
  4. изменить цвет фона окна редактора;
  5. изменить шрифт текста;
  6. закрыть редактор;
  7. все возможности, кроме последней, осуществимы с помощью панели инструментов.

Внешний вид такого редактора можно увидеть на Рис. 4.

Контекстное меню

Рабочая область редактора

Панель инструментов

Меню

Рис. 4. Внешний вид текстового редактора

Задание 1

  1.  Создайте новый проект;
  2.  Установите необходимые параметры формы. В заголовке формы укажите название приложения;
  3.  Сохраните проект в личной папке папки Рабочая.

Создание главного меню приложения

Для создания главного меню приложения необходимо:

поместить на форму компонент MainMenu (Главное меню) со станицы Standard Палиры Компонентов.

Примечание. Данные компоненты являются “невизуальными”. Это значит, что на форме они выглядят как иконки, размеры которых изменить нельзя, а их месторасположение на форме значения не имеет. Должным образом они проявят себя только после запуска приложения.

Двойным щелчком по данному невизуальному компоненту вызвать редактор меню:

Перемещаясь по обозначенным пунктам меню, задаем в свойстве Caption каждого пункта.

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

Меню необходимое для вашего приложения должно выглядеть следующим образом:

 

Задание 2

  1.  Создайте главное меню, состоящее из двух пунктов «Файл» и «Формат». Пункт «Файл» содержит 5 подпунктов: новый, открыть, сохранить, печать и выход. Пункт «Формат» - два подпункта: шрифт и цвет фона.
  2.  Запустите приложение на выполнение и проверьте работоспособность Вашего меню.

Примечание

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

Задание 3

Запустите редактор меню и выясните, какие имена имеют пункты «Файл», «Печать», «Шрифт».

Стандартные окна общих диалогов

В реальных приложениях после выбора того или иного пункта появляются определенные окна, позволяющие реализовать какие-либо действия. Если мы с вами начнем реализовывать все эти окна, то разработка такого приложения займет приличное количество времени. Чтобы сократить время разработки приложений, инструментальные среды разработки содержат набор невизуальных компонентов, соответствующих основным возможностям: открытие документов, сохранение документов, печать, палитра и др. Нам остается только научиться подключать их к соответствующим пунктам меню.

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

Рис. 5. Назначение стандартных окон общих диалогов

Для того, чтобы использовать определенный компонент в приложении, необходимо:

  1. Поместить необходимый компонент на форму приложения;
  2. Применить метод Execute для данного компонента формы.

Метод Execute запускает указанное окно на выполнение и возвращает TRUE, если пользователь произвел выбор в диалоге.

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

Задание 4

Подключите окна общих диалогов к пунктам меню.

Вы не забываете занести новые методы и свойства в таблицу «Свойства, методы и события объектов»

Полученный результат продемонстрируйте преподавателю!

Создание рабочей области редактора

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

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

Изменив свойство Lines на содержимое открытого документа, мы сможем увидеть содержимое документа в текстовом поле Memo.

Изменение свойств объекта установкой значений свойств стандартных объектов общих диалогов

Чтение документа из файла

Для того, чтобы изменить свойство Memo1.Lines необходимо знать, какой файл пользователь выбрал. Это можно узнать из свойства FileName стандартных окон общих диалогов. Но указав следующую строчку в системе возникнет ошибка «Несовпадение типов». Так как свойство Lines типа Tstring, а свойство FileName типа TfileName. Для устранения данной ошибки необходимо записывать следующим образом:

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

procedure TForm1.N2Click(Sender: TObject);

begin

if Opendialog1.Execute then

Memo1.lines.LoadFromFile(Opendialog1.filename);

end;

Сохранение документа из файла

Для того, чтобы сохранить изменения текста необходимо в процедуре обработки события метод LoadFromFile заменить на SaveToFile. А имя и путь взять из свойства FileName объекта SaveDialog1.

Процедура обработки события выбора пункта меню «Шрифт»

procedure TForm1.N7Click(Sender: TObject);

begin

if fontdialog1.Execute then memo1.Font:=fontdialog1.font;

end;

Задание 5

Расположите компонент работы с текстом на форме согласно Рис. 4.

Изменение рабочей области в зависимости от выбранных значений пунктов меню

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

Метод – это подпрограмма, позволяющая изменить характеристики объекта.

Задание 6

Измените тела процедур обработки событий пунктов меню «Открыть», «Сохранить» так, чтобы читался документ в рабочую область и изменения текста сохранялись.

Для того, чтобы приложение завершало работу по пункту меню «Выход», достаточно в процедуре обработки события этого пункта меню вызвать процедуру Close.

Задание 7

Создайте процедуру обработки события для пункта меню «Выход»

Для создания нового текстового документа достаточно очистить содержимое рабочей области, воспользовавшись его методом Clear.

Задание 8

Создайте процедуру обработки события для пункта меню «Новый».

Следующий шаг – это форматирование текста. Вы уже знаете, что за форматирование текста таких компонентов как Метка, Текстовое поле и др. отвечает свойство Font. Рабочая область текстового редактора тоже не исключение. С другой стороны все значения, выбранные пользователем в стандартном окне общих диалогов «Шрифт», также сохраняются в свойстве Font. Следовательно, в обработчике событий пункта меню «Шрифт» достаточно присвоить свойству Font рабочей области, значение соответствующего свойства стандартного окна общего диалога «Шрифт».

Задание 9

Создайте процедуру обработки события выбора пункта меню «Шрифт».

Запустите приложение на выполнение и проверьте правильность работы пункта меню «Шрифт».

Примечание

Если возникли ошибки, то сравните написанный вами код данной процедуры с кодом, указанным в подразделе «Создание рабочей области» (п.2C) раздела справочной системы «Лабораторная работа №5».

Задание 10

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

За цвет компонента отвечает свойство Color.

Создание всплывающего меню

Работу с всплывающим меню можно разделить на два этапа:

  1. создание меню;
  2. подключение этого меню к определенному компоненту формы.

Для создания всплывающего меню в среде Delphi существует компонент PoupeMenu, расположенный на закладке Standart Палитры компонентов. Расположив его на форме, можно задавать пункты, используя свойство Items. После вызова редактора меню (см. Рис. 6), задаются в каждой новой строчке новый пункт меню.

Рис. 6. Редактор всплывающего меню

Для подключения созданного меню к какому-либо объекту приложения необходимо в свойстве PopupMenu объекта указать значение поля Name всплывающего меню (в нашем случае это PopupMenu1).

Необходимо отметить, что практически любой объект имеет в своем арсенале данной свойство.

Задание 11

Создайте всплывающее меню для своего приложения, включающее пункты Шрифт, Очистка, Цвет фона.

Проверьте работоспособность данного меню.

Примечание

Если вы все сделали правильно, то Ваше меню работать не должно!

Исправить положение можно, выполнив следующие действия:

Записать тела процедур обработки выбора пунктов всплывающего меню аналогично процедурам обработки событий выбора пунктов главного меню.

Пригласите преподавателя и продемонстрируйте работу всплывающего меню.

Создание панели инструментов

Итак, остался последний штрих в создании текстового редактора – это добавление панели инструментов следующего вида:

Создание любой панели инструментов можно осуществить в три этапа:

  1. Создание структуры панели инструментов;
  2. Оформление панели инструментов;
  3. Определение пунктов главного меню, которые кнопки данной панели будут дублировать.

Создание структуры панели инструментов

Инструментальная панель (панель инструментов) предназначена для быстрого доступа к часто используемым функциям приложения с помощью инструментальных быстрых кнопок. Компонент ToolBar располагается на закладке Win32 Палитры компонентов.

Для создания инструментальной панели необходимо выполнить следующие действия:

  1. Занести на панель кнопки.

Для занесения на панель ToolBar кнопок надо щелкнуть на панели правой клавишей мыш и выбрать команду New Button.

Задание 12

Занесите пять кнопок на панель инструментов.

  1. Установить стиль каждой кнопки.

Каждая из этих кнопок имеет свое имя, например, ToolButton1 или ToolButton5. Каждая из этих кнопок может быть одного из пяти стилей (отвечает свойство Style):

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

Задание 13

  1. Установите стили кнопок.
  2. Оформление панели инструментов
  3.  Создать список пиктограмм, необходимых для кнопок.

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

Задание 14

Поместите компонент на форму;

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

Добавьте изображения из файлов Fileopen.bmp, FileSave.bmp, Filenew.bmp, Print.bmp из папки Редактор.

Щелкните по кнопке OK.

Указать в значении свойства Images компонента ToolBar имя списка изображений, т.е.ImageList1 для определения возможных ввариантов.

Установить для каждой кнопки значение свойства ImageIndex согласно их назначению.

Задание 15

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

Установка соответствия с пунктами меню

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

Задание 16

Установите значения свойства MenuItem каждой кнопки согласно следующей таблице:

Задание 17

одновременно выполняя задания и создавая панель инструментов Тестового редактора.

Сохраните проект.

Изменение возможностей текстового редактора

Задание 13

  1.  Дополните Текстовый редактор кнопкой на панели инструментов для быстрого выбора цвета фона. Для этого:
  2.  Поместите кнопку на панель инструментов;
  3.  Добавьте пиктограмму в список изображений;
  4.  Укажите пункт дублируемого меню;
  5.  Измените значение свойства MenuItems кнопки панели инструментов на индекс соответствующей картинки.
  6.  Задайте свойства Текстового редактора так, чтобы загружаемый текст всегда был зеленого цвета.

Пригласите преподавателя и продемонстрируйте ему полученный результат.

Исследовательские задания

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

Выясните назначение свойств Filter, InitialDir стандандартных окон общих диалогов, назначение метода Add многострочного текстового поля, разобравшись в коде приложения Task_5_1.

Выясните, как добавить линейки прокрутки на этапе проектирования и для многострочного редактора (см. задачу Task_5_1).

Контрольные задания

Выполните вариант заданий, указанный преподавателем.

При выполнении задания прочитайте условие задачи, и прежде чем создавать приложение, ответьте преподавателю на следующие вопросы:

В каком случае будет осуществляться сохранение, изменение атрибутов текста?

Какой компонент и какое его событие будет использоваться для сохранения и изменения атрибутов текста?

Для выполнения задания создайте новый проект.

Вариант 1

Создайте приложение, позволяющее написать электронное письмо и сохранить его на диске. Приложение должно иметь следующий интерфейс:

Вариант 2

Создайте приложение позволяющее проводить анкетирование по заранее подготовленным в текстовом файле вопросам и сохранять результаты на внешнем носителе. Приложение должно иметь следующий интерфейс:

Вариант 3

Создайте приложение позволяющее принимать заявки от пользователей на ремонт компьютерной техники и сохранять их на внешнем носителе. Приложение должно иметь следующий интерфейс:

Контрольные вопросы

Перед ответами на вопросы преподавателю подготовьте для проверки все приложения и таблицу «Свойства, методы и события компонентов» в тетради.

  1. Какие типы меню можно создавать в приложении?
  2. Раскройте последовательность действий для создания главного меню.
  3. Какие Вам известны способы добавления, удаления пунктов меню.
  4. Какие компоненты, позволяющие работать с многострочными текстами, Вам известны?
  5. Какое свойство отвечает за содержимое многострочного редактора?
  6. Каким образом возможно добавление новых строк в существующий текст многострочного редактора, например из текстового поля? Как будет выглядеть строка кода, реализующая эту возможность?
  7. Что является стандартными окнами общих диалогов? Перечислите их и их назначения.
  8. Каким образом всплывающее меню присоединяется к приложению?
  9. Перечислите этапы создания панели инструментов.
  10. Какие стили кнопок панелей инструментов существуют?
  11. Как поместить на кнопку панели инструментов пиктограмму?
  12. Как связать кнопку панели инструментов с пунктом меню?
  13. Каково назначение свойств стандартных окон общих диалогов Filter, InitialDir?
  14. Какие методы позволяют сохранить информацию в файл? Считать из файла?



 

А также другие работы, которые могут Вас заинтересовать

85165. Создание Речи Посполитой и статус ВКЛ в ее составе 29.87 KB
  Начались военные действ между Московским госвом и ВКЛ. Силы ВКЛ находились на грани возможного война опустошала казну. ВКЛ имело опыт совместного с ней существования десятки уний и договоров.
85166. Внешняя политика Речи Посполитой. Войны и социальные конфликты второй половины XVII - первой половины XVIII веков 31.49 KB
  Тридцатилетняя война 16181648 В 1618г. началась война в которой приняли участие десятки государств. РП не смогла помешать объединению Бранденбурга и Пруссии и неудачно закончилась война со Швецией что явилось одной из крупных неудач в её внешней политике. Казацкокрестьянская война 16481651 Богдан Хмельницкий хотел создать независимую Украину и поднял восстание в 1648 г.
85167. Социально-экономическое развитие белорусских земель в составе Речи Посполитой 30.48 KB
  В экономике белорусских земель шло укрепление и развитие феодальных отношений. Экономическому прогрессу белорусских земель во вп 16пп 17 вв. увеличилось до 36 млн чел росли посевные площади поголовье скота увеличился средний земельный надел крестьян.
85168. Особенности конфессиональных отношений на территории Беларуси в составе Речи Посполитой. Реформация и контрреформация. Берестейская уния 30.78 KB
  В разных странах Европы возникает движение против господства католической церкви – РеформацияОбщественнополитическое и идеологическое движение направленное против римскокатолической церкви и её роли в политической системе общества. Результат Контрреформации: усиливается экономическое могущество и политическое влияние католической церкви. В рамках Контрреформации проводилось объединение православной и католической церкви. Она объединила православную и католическую церкви в единую Грекоуниатскую церковь.
85169. Политический кризис и разделы Речи Посполитой. Включение белорусских земель в состав Российской империи 29.27 KB
  При поддержке России победу одержал Станислав Август Понятовский. 1ый раздел произошёл в 1772 К России отошли восточная часть Белоруссии по Западной Двине и Верхнему Днепру 1788г. 2ой раздел 23 января 1793 К России отошли Центральная Белоруссия с Минском Правобережная Украина часть шляхта приняло участие в восстании под руководством Костюшко – попытка сохранить независимость РП. 3ий раздел 24 октября 1795 К России отошли Литва Западная Белоруссия Волынь Курляндия; Поляки утратили свою государственность.
85170. Культура и этническая структура белорусских земель в составе Речи Посполитой 28.63 KB
  традиции эпохи Просвещения стали оказывать существенное влияние на повседневную жизнь белорусского общества это было связано с переменами в системе образования расширено преподавания современных языков и естествознания. Влияние эпохи Просвещения ощущалось и в театральной жизни страны. Барокко и рококо под влиянием Просвещения стали постепенно уступать место классицизму основанному на традициях античности и Ренессанса.
85171. Политика российского самодержавия и общественно-политические движения в Беларуси (конец XVIII - первая половина XIX в.) 33.21 KB
  После присоединения Беларуси к РИ правительство провело ряд мер по закреплению своего влияния на присоединённые земли. В Беларуси были созданы губернии: Белорусская Минская и Литовская. Господствующее положение в Беларуси заняла православная церковь у которой оказывалась полная государственная поддержка.
85172. Социально-экономическое развитие белорусских земель в условиях кризиса феодально-крепостнической системы (первая половина XIX в.) 28.12 KB
  В условиях разложения феодальнокрепостнической системы царское правительство пошло на экономические реформы с целью приспособления существующей системы хозяйственных отношений к нуждам рынка а также повышения государственных доходов. Реформа была проведена только среди государственных крестьян. Она предусматривала: проведение подробного описания всех государственных имений и строгое определение повинностей государственных крестьян в зависимости от их хозяйственного положения прекращение сдачи государственных земель в аренду; ликвидацию...