лабораторная работа 4


Чтобы посмотреть этот PDF файл с форматированием и разметкой, скачайте его и откройте на своем компьютере.

1

Лабкраокрнаы рабкоа № 4

Тбма
: «
Прдбмы рабкоы с
главным д ккнобксоным мбню прдлкжбнды
.
И
спкльзквандб
ккмпкнбнокв
соанаароных

адалкгкв.

Скзаандб
днркрматдкннкгк ккна
»


Цель работы
:


1.

Изучить

характеристики
компонентов
MainMenu
,
Popu
p
Menu

и
научиться

их
использовать

при разработке програ
мм
.

2.

Изучить

характеристики стандартных диалогов
:

для открытия и
сохранения файлов
OpenDialog
,
OpenPict
ureDialog
,

SaveDialog
,
SavePictureDialog
;
.
для выбора шрифтов
FontDialog
;


для выбора
цвета
ColorDialog
,
для
п
ечати и установки принтера
PrintDialog
,

и
научиться

их использовать при разработке
программ.

3.

Изучить

характеристики
информационно
го

окн
а

программы «О
программе»

AboutBox
, содержаще
го

краткую справочную
информацию о названии программного продукта, его версии,
дате выпуска, авторах, фотографий авто
ров, контактный телефон,
e
-
mail

и другие данные

и
научиться

его использовать при
разработ
ке приложе
ний.

4.

Выполнить
практическую работу


по разработке приложений
.

Выполнить
самостоятельную работу

по разработке
приложений
.


5.

Защитить

лабораторную работу,
продемонстрировать

программы всех практических заданий,
ответить

на
дополнительные вопрос
ы по данной теме.


Порядок работы:


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

различных путей выполнения приложения.

Меню

представляет собой набор команд, при выборе каждой из которых выполняются
определен
ные программистом действия. В
Delphi

есть два компонента, используемые для
создания меню:
MainMenu

-

главное меню и
РорирМепи
-

вспомогательное меню.

MainMenu
.

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

Обычно на форме

достаточно одного главного меню и, соот
ветственно, элемента
MainMenu
.

В этом случае свойству
Menu

формы, на которой расположено
MainMenu
,

автоматически при
сваивается имя данного компонента, т.е. значение его свойства
Name
.
Однако на одной форме возможно

размещение нескольких компонентов
MainMenu

с

различными разделами.

Тогда свойству
Menu

формы присваивается имя одного из них. А при выполне
нии
программы это свойство можно изменять, преобразуя соот
ветствующим образом разделы
главного меню приложения.

На
иболее важным свойством
MainMenu

является свойство
Items
.

Его заполнение
производится с помощью окна
Menu

Designer

(конструктора меню), которое можно вызвать
тремя способами.

Во
-
первых
, щелкнув мышью два раза по компоненту
MainMenu
.



2

Во
-
вторых
, нажав на к
нопку, расположенную в пра
вой части свойства
Items

в инспекторе
объектов.

Или нажать на элементе правую кнопку мыши и в контекстном меню выбрать команду
Menu

Designer
.

Результат любого из трех действий пред
ставлен на рис.


В этом окне проектируются

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

Inspector

в
свойстве

Caption

за
дать заголовок раздела
(например, 'Меню'). По
сле чего ще
лкнуть мы
-
шью на этом разделе
-

автоматически
появляется подменю этого раздела (снизу) и
следующий раздел (справа) см. рис.


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

Используя мышь, есть возможность менять
расположение разделов (порядок их следования).



При работе в
Menu

Designer

можно использовать его локальное меню.

Его пункты выполняют следующие действия:



Insert

-

вставляет новый пун
кт меню;




-

удаляет активный пункт меню;



Create

SubMenu

-

создает подменю для 'активного пункта меню;



Select

Menu

-

открывает окно с расположенным в нем спи
ском всех созданных в
форме меню. Выбранное в этом ок
не меню открывается для редактирования;



Save

As

Template

-

сохраняет меню в качестве шаблона;



Insert

From

Template



добавляет меню из окна шаблона;




Templates

-

удаляет шаблон из окна шаблона меню;



Insert

From

Resource

-

открывает диалоговое окно добав
ления меню из ресурсов.


Вторым вар
иантом создания нового раздела является исполь
зование команды
Insert

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

раздел меню.

Каждый элемент свойства
Items
, которым является любой раздел,
-

это объект класса
TMenuItem

со своими свойствами, методами и событиями. Основные свойства класса
TMenuItem описаны в табл.

Таблица
Свойства класса
TMenuItem

Название


Описание


Bitmap


Указывает на изображение, которое будет размещено слева от
подменю разделов (если есть изображение и не установлено свойство
ImageIndex
)



3

Break


Предоставляет возможность разбивать подме
ню на столбцы (
mbNone

-

отсутствие разбие
ния,
m
bBarBreak

-

вводится новый столбец,
отделенный полосой,
mbBreak

-

столбец, отделенный пробелами).


Caption


Содержит текст меню


Checked


Размещает рядом с элементом маркер флажка (при
True
)


Command


Используется при разработке программ, об
ращающихся
непосредственно к API
-
командам. Только для чтения


Count


Содержит количество элементов, содержа
щихся в свойстве
Items
.
Используется толь
ко для чтения


Default


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


Grouplndex


Задает номер группы для зависимых опций, определяемых в
Radioltem


Imagelndex


Связывает изображение из компонента
TListImage

с опцией и
присваивает з
начению свойства его индекс. Изображение появляется
слева от опции, если свойство не равно
-
1


Items


Позволяет обращаться к опции подчиненного меню по ее номеру


Menu

Index


Вычисляет номер опции в родительском свой
стве
Items


Name


Предоставляет возм
ожность задавать имя объ
екта, соответствующего
разделу меню


Radioltem


Делает помеченным этот элемент из всех, у которых
Grouplndex

одинаков. Размещает рядом с элементом кружок (при
True
)


Shortcut


Предлагает установить код клавиши быстрого реагирован
ия



РорирМепи
.

Эти компоненты используются для создания ло
кального (контекстного)
меню. Локальное меню привязывается к конкретным компонентам. В отличие от главного
меню, которое постоянно находится на экране, локальное меню выводится по мере
необходимо
сти. Для того чтобы вспомогательное меню компонента появилось на экране,
необходимо установить фокус на этот компонент и нажать правую кнопку мыши. В
локальное меню включаются команды, которые требуются при работе с компонентом в
первую очередь. Как правил
о, такое меню явля
ются одноуровневым, хотя это не
обязательно.

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

на форму и, два раза кликнув по нему мышью, вызвать
конструктор меню. Теперь можно создавать меню
. Пункты локального меню будут
добавляться только по вертикали. При разработке вспомо
гательного меню в
Menu

Designer

также можно использовать его локальное меню.

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


4

Для этого нужно поместить компонент
РорирМепи

на форму и разместить в нем какой
-
нибудь пункт (например, стандартный пункт меню
File
).

Для размещения пункта
File

следует выполнить команду всплывающего меню
Insert From Template

редактора

мен
ю
.
В
открывшемся окне
Insert

Template

выбирается
FileMenu

и нажимается кнопка
ОК.

Для
привязки созданного локального меню к кнопке в ее свойство

Рор
u
рМе
nu

заносится имя
соответ
ствующего компонента
РорирМепи.

Теперь при установке курсо
ра мыши на кнопку
ОК

и нажатии правой кнопки мыши появится всплывающее меню.


Основным событием раздела меню является событие
OnClick
,

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

Designer
,
либо

в редакторе форм два раза щелкнуть мышью по соответствующему пункту меню и
ввести код.



Практическое задание № 1.




В качестве примера

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







1.

C
войства пустой формы
:


Color = clBtnFace

2.

Создаем меню п
ользователя
-

размещаем компоненту
MainMenu

на форме, задаем
пункт меню
Цвет

и подпункты меню
Красный

Синий

Зеленый

Желтый

Белый
Черный


MainMenu1

Список пунктов меню

Проектируемая форма

Работающее приложение


5

3.

Функциональность приложения
: по нажатию на пункт меню (выбор цвета) меняется
цвет формы. Первоначально п
осле старта программы


серый цвет.



Обработчики событий для программы 2.


1.
Выбор

красного

цвета

procedure TForm1.N2Click(Sender: TObject);

begin


Form1.Color:=clRed;

end
;



3.
Выбор

зеленого

цвета

procedure TForm1.N4Click(Sender: TObject);

beg
in


Form1.Color:=clGreen;

end
;



5.
Выбор белого цвета

procedure TForm1.N6Click(Sender: TObject);

begin


Form1.Color:=clWhite;

end;


7.
Закрыть

форму

procedure TForm1.N9Click(Sender: TObject);

begin


Close;

end;

Выполните компиляцию программы.
После ее запуска на экран будет выведе
на форма
приложения. Проверьте ее выполнение.


Самостоятельная работа №

1
:



Реализуйте эту же функциональность приложения через локальное меню (
РорирМепи).



Практическое задание №
2
.




Написать программу «Текстовый блокнот», которая поз
воляет открывать текстовые
файлы (*.
txt
), редактировать их и сохранять изменения. Программа должна иметь
дружелюбный пользовательский интерфейс, а также главное меню программы.


Выполнение.


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


Чтобы создать простейший текстовый редактор нам понадобиться компонент
«
Memo
».


«
TMemo
»

-

многострочное редактируемое текстовое поле. Компоненты класса
«
TMemo
» предназначены для

ввода, редактирования и/или отображения достаточно
длинного многострочного текста. Текст храниться в свойстве «
Lines
» класса «
TStrings
» и
представляет собой пронумерованный набор строк (нумерация начинается с нуля). С
помощью свойств и методов этого класс
а («
Count
», «
Add
», «
Delete
», «
Clear
» и т.д.) можно
динамически формировать содержимое компонента.



Таблица
1
.

Основные свойства
TMemo

Свойство

Описание

Property


Содержит координаты мигающего текстового
2.
Выбор

синего

цв
ета

procedure TForm1.N3Click(Sender: TObject);

begin


Form1.Color:=clBlue;

end;


4.
Выбор

желтого

цвета

procedure TForm1.N5Click(Sender: TObject);

begin


Form1.Color:=clYellow;

end;


6.
Выбор

черного

цвета

procedure TForm1.N7Click(Sender: TObject);

begin


Form1.Color:=clBlack;

end;



6

курсора

относительно границ клиентской
области компонента

Property

Lines: TStrings
;

Содержит строки текста

Property

ScrollBars: TScrollStyle;

Определяет наличие полос прокрутки

Property

Text: String;

Отображает содержимое свойства «
Lines
» в
виде одной длинной
строки



Контрольный вопрос: что означает слово «
property
»?

Самостоятельная работа

№2
:

в справке найдите информацию о классе «
TStrings
».
Законспектируйте

себе

методы
: «
Add
», «
LoadFromFile
», «
SaveToFile
», «
Clear
», «
Delete
»,
«
AddString
», «
Insert
», «
IndexOf
».



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

формы.

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

Designer
», либо выбрать с
войство «
Items
»

в окне инспектора
объектов. Создание пунктов меню происходит путем выбора свободной области и набора
названия пункта. Обработка выбора конкретного пункта происходит при описании события
«
OnClick
» соответствующего пункта.


Положите на форм
у редактор «
Memo
» и распределите его
по всей форме. На него положите компонент «
MainMenu
».
Вызовите «
Menu

Designer
» и создайте меню как на рисунке. Для
получения разделителя между пунктами «Закрыть» и «Выход»
используйте символ «минус». После создания меню

закройте
«
Menu

Designer
»

Сохраните проект и проверьте на ошибки. Запустите приложение
и проверьте работоспособность главного меню.

Контрольный вопрос: что означает свойство «
Menu
» у
объекта «
Form
1
»?

Контрольный вопрос: как создать вложенное меню
(подменю
)?

Для выполнения операций открытия и сохранения файлов
нам понадобятся диалоговые окна. На палитре компонент найдите два компонента
«
OpenDialog
» и «
SaveDialog
». Поместите их на форму.

Настроить диалоговые окна очень просто. Выберите объект «
OpenDialog
1
» и

в
инспекторе объектов определите свойства:

DefaultExt

Указывает на расширение файла по
-
умолчанию

Filter

Составляется список фильтров. В редакторе фильтров в левой
части напишите «Текстовые файлы», а в правой части напишите
расширение «*.
txt
»

Title

Загол
овок диалогового окна

Самостоятельная работа: выполните самостоятельно заполнения свойств

объекта
«
SaveDialog
1».

Следующий этап


описание событий каждого пункта меню. На главной форме
вашего приложения выберите пункт «Файл


Открыть…». Откроется текстовы
й редактор с
шаблоном процедуры. Опишите это событие, как показано ниже.

procedure

TForm1.N3Click(Sender: TObject);

begin


if

OpenDialog1.Execute
then

//
Если

выбран

файл

и

нажата

кнопка

"
Открыть
"


Memo1.Lines.LoadFromFile(OpenDialog1.FileName); /
/
Загружаем

файл

в

Memo

end
;


Самостоятельная работа

№ 3
:

воспользуйтесь справкой и найдите методы для
сохранения текста из «
Memo
».


7

Самостоятельная работа

№ 4
:

опишите самостоятельно остальные пункты меню
,
в которых следует реализовать такие команды, как Редактиров
ание шрифтов, Настройка
цвета
.

В работе обязательно использование:

-

использование стандартных диалогов для выбора шрифтов и его
характеристик (
FontDialog
);


-

использование стандартного диалога выбора цвета (
ColorDialog
);


-

использование стандартного диалога п
ечати и установки принтера
(
PrintDialog
,
).




Практическое задание №
3
.




Написать программу «Графический редактор», которая позволяет открывать
графические файлы
(*.
bmp
, *.
jpeg
), и сохранять. Программа должна иметь дружелюбный
пользовательский интерфейс,

а также главное меню программы.


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

«Загрузка изображения из графического файла с
и
спользованием стандартного диалога открытия графических
изображений»


Компонент
Image

позволяет поместить графическое изображение в любое место на форме.
Для включения этого объекта в состав приложения необходимо выбрать его на странице
Additional

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

(Инспектор Объектов). Файл
изображения должен иметь формат
BMP
,
WMF
, ICO
.


Для работы с изображениями в формате
JPEG

применяется с
пециальный класс
TJPEGIMAGE
. Чтобы использовать этот класс, необходимо в разделе
Uses

подключить
модуль
JPEG
.

Свойство
Picture

определяет изображение, которое появится в поле компонента
Image
. При
проектировании следует помнить, что изображение, помещенное

на форму во время дизайна,
включается в файл проекта
DPR

и затем присоединяется к исполняемому файлу. Поэтому
такой
EXE
-
файл может получиться достаточно большим. В качестве альтернативы можно
рассмотреть загрузку картинки во время выполнения программы.


Свойство
Center

(тип
Boolean
) установить в
True
, центр изображения будет совмещаться с
центром
Image
.
Свойство
Stretch

установить в
True
,
изображение будет сжиматься или
растягиваться, чтобы заполнить весь объект
Image
.


Загрузка изображения из файл
а осуществляется с использованием метода
LoadFromFile
,
который имеет следующий синтаксис:
LoadFromFile

(
const

FileName
:
String
);


Пример работы с графическим образом:



На форму помещается компонент
Image
1, кнопка
Button
1
с заголовком Открыть и диалог
Ope
nPictureDialog
1.
Программа по нажатию кнопки вызывает диалог, затем
открывает выбранный файл и помещает его содержимое в
поле компонента
Image
1.


8



Код

приложения

«
Графический

образ
»


procedure TForm2.Button1Click(Sender: TObject);

begin



if

OpenPicture
Dialog1.Execute
then


//
Если

диалог

отработал

Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);

end;

end.

Для
очистки

рисунка можно использовать обработку:


Image
1.
Picture
:=
nil
;




Практическое задание №
4
.



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

Программа должна содержать
элемент управления

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





procedure TForm1.RadioGroup1Click(Sender: TObject);

begin


case

RadioGroup
1.
ItemIndex

of

//
Выбрать

из

возможных

вариантов


0:
Image
1.
Picture
.
LoadFromFile
('
ris
\
zima
.
jpeg
'); //
Загрузка

из

файла

графической



// информации


1:
Image
1.
Picture
.
LoadFromFile
('
ris
\
vesna
.
jpeg
');


2:
Imag
e
1.
Picture
.
LoadFromFile
('
ris
\
.
jpeg
');


3: Image1.Picture.LoadFromFile('ris
\
osen.jpeg');


end
;

end
;


end
.


Самостоятельная работа №
5


Измените обработчик события для загрузки изображения из выбранного файла в
стандартном диалоге
OpenPicture
Dialog
1
.


Самостоятельная работа №
6


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

стандартного диалога
для работы с изображениями.


Св
-
во

Items:TString

RadioGroup1

Image1

Св
-
во
Picture

меняем при
выполнении программы, а
не в Инспекторе объектов


9



Практическое задание №
5
.





В большинстве программ существует возможность от
крывать специальное
информационное окно программы «О программе», содержащее краткую справочную
информацию о названии программного продукта, его версии, дате выпуска, авторах,
фотографий авторов, контактный телефон,
e
-
mail

и другие данные.


Задание
: С
оздать

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



В объект
Image

вставить фотографию разработчика.



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

метода
ShowModal
.















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




Приложенные файлы

  • pdf 1014335
    Размер файла: 717 kB Загрузок: 0

Добавить комментарий