Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Лабораторная работа 6. Создание меню. Компоненты Main Menu и Popup Menu
Цель работы: ознакомиться с управляющим компонентами Main Menu и Popup Menu и научиться использовать указанный компонент при создании Windowsприложений.
Задание:
1. Создать главное меню, меню должно состоять из двух пунктов: обработка массива и сервис (рис.5.1). Пункт обработка массива состоит из команд: max, min, sum. Пункт сервис состоит из команд: clear и close. Команд clear содержит подменю: clear stringgrid и clear memo.
В качестве реакции на выбор пункта меню вывести значения максимума, минимума и суммы элементов массива. Значения элементов массива ввести в таблицу StringGrid;
2. Создать контекстное меню для вывода значений максимума, минимума и суммы элементов массива.
3. Вывести значения максимума, минимума и суммы элементов массива, используя компонент Button, но в качестве обработчика события использовать процедуру, созданную ранее реакцию на пункты главного меню.
Main Menu и Popup Menu
Главным атрибутом интерфейса любого Windowsприложения является меню. Меню представляет собой набор именованных команд и других вложенных меню (подменю), которые сгруппированы в отдельные функциональные категории. В зависимости от уровня охвата функциональности различают главное меню и локальное меню. Большинство приложений имеет главное меню, содержащее перечень допустимых операций. Пункты главного меню называют иначе элементами меню нулевого (верхнего) уровня, так как с каждым из них может быть связано выпадающее подменю, содержащее элементы первого уровня.
Для создания главного меню имеется невизуальный компонент Main Menu, расположенный на странице Standard Палитры Компонентов.
Процесс создания главного меню на этапе проектирования формы осуществляется при помощи встроенного конструктора меню Menu Designer. Чтобы вызвать конструктор меню, необходимо щелкнуть правой кнопкой мыши по компоненту и выбрать команду Menu Designer, либо воспользоваться свойством Items в Инспекторе объектов.
Main Menu является экземпляром класса ТMainMenu.
Основное свойства класса это свойство
Items: ТMenuItem; default; Содержит элементы нулевого уровня главного меню приложения.
Caption: string; Содержит текст элемента меню. Если перед символом текста поместить символ &, то таким образом можно задать клавишу быстрого перехода (акселератор).
Если вместо текста заголовка свойству Caption присвоить значение «-», то на месте текущего пункта будет изображена разделительная линия.
Checked:Boolean; Если свойство имеет значение True, то элемент помечается галочкой.
ShortCut: TshortCut; Определяет комбинацию «горячих» клавиш (клавиш быстрого управления).
Bitmap:TBitMap; это свойство для дополнения заголовка пункта меню растровым изображением с левой стороны. Для этого необходимо открыть редактор свойства Bitmap и загрузить графический файл с расширением .bmp.
Для создания подменю следует выбрать элемент меню и щелкнуть правой кнопкой мыши и в контекстном меню выбрать пункт Create Submenu и далее ввести пункты подменю.
Контекстное меню (или локальное) отображается по щелчку правой кнопки мыши на данном элементе. Для создания контекстного меню используется компонент PopupMenu, расположенный на странице Standard Палитры Компонентов. Имеет свойства, аналогичные свойствам Main Menu.
План разработки программы
5.1 Разместить компоненты на дизайнере форм, согласно рисунку 6.1:
MainMenu1 со страницы Standard;
PopupMenu1 со страницы Standard;
Memo1- со страницыStandard;
Button1-5 со страницы Standard; присвоить значения свойству caption, согласно рис 6.1.
StringGrid1 со страницы Additional; задать свойства: colcount - 5, rowcount 5, fixed row-0, fixed col 0, options goEditing true, options goTab true;
5.2 Выбрать свойство Items компонента MainMenu1. Щелкнуть на кнопке с тремя точками. Появится окно конструктора меню. Пункты меню верхнего уровня формируются по горизонтали. Свойства caption имеют следующие значения caption:=обработка массива и caption:=сервис.
5.3 Набрать пункты меню следующего уровня в соответствии с рис. 6.2. Для пункта обработка массива max, min, sum. Для команды max задать клавишу быстрого перехода (акселератор). В этом случае свойство caption имеет значение &max. Для команды min задать «горячую» клавишу: выбрать свойство ShortCut и в выпадающем списке выбрать нужное значение, например, Ctrl+M.
Рис5.1
Рис. 5.2
5.4 Для пункта меню сервис добавить команды clear и close (рис. 6.3). Для того чтобы по команде clear открывалось подменю, необоходимо выполнить следующие действия. Выделить команду clear, щелкнуть правой кнопкой мыши и в открывшемся контекстном меню конструктора выбрать команду Create Submenu и далее ввести пункты подменю: clear stringgrid и clear memo.
Рис. 5.3
5.5 Для определения реакции на выбор пунктов меню выбирается пункт меню и щелкают по нему. В результате появится окно редактора кода, в котором вводится код обработчика события OnClick. Например, для элемента меню max обработчик события OnClick будет иметь следующий вид:
procedure TForm1.max1Click(Sender: TObject);
var max:integer; i,j:integer;
begin
max:=a[1,1];
for i:=1 to 5 do
for j:=1 to 5 do
if a[i,j]>=max then max:=a[i,j];
memo1.Lines.Add('max value ='+ inttostr(max));
end;
Аналогично вводятся коды обработчиков события для остальных команд меню обработка массива min и sum, и команды clear stringgrid из меню сервис.
5.6 Активизировать кнопку start, предназначенную для ввода элементов массива из таблицы stringgrid1, написать код обработчика события OnClick:
procedure TForm1.Button4Click(Sender: TObject);
var i,j:integer;
begin
for i:=1 to 5 do
for j:=1 to 5 do
a[i,j]:=strtoint(stringgrid1.Cells[j-1,i-1]);
end;
5.7 Активизировать кнопку clear memo, предназначенную для очистки memo.
5.8 Активизировать кнопку Close (button6), предназначенную для закрытия формы.
5.9 Для команды Close из меню Сервис используется процедура, созданная ранее в пункте 5.8 Button6Click. Обработчик события close1Click (команда close из меню сервис) имеет следующий вид:
procedure TForm1.close1Click(Sender: TObject);
begin
button6Click(button6);
end;
Аналогично из команды clear memo из меню сервис вызывается процедура, созданная в пункте 5.7.
5.10 Для кнопок max (Button1) и min(Button2) вызываются соответственно процедуры max1Click(max1) и min1Click(min1);
procedure TForm1.Button1Click(Sender: TObject);
begin
max1Click(max1);
еnd;
5.11 Сохранить проект в папке menu и запустить на выполнение.
5.12 Создание контекстного меню. В свойстве Items компонента Popup Menu зададим элементы контекстного меню: те же, что и в главном меню: max, min, sum, clear stringgrid, close;
6.13 Для элемента max контекстного меню реакция на OnClick будет такой же, как для элемента max главного меню. Тогда обработчик события OnClick для элемента max контекстного меню будет иметь следующий вид:
procedure TForm1.max2Click(Sender: TObject);
begin
max1Click(max1);
end;
аналогично, из остальных элементов контекстного меню вызываются процедуры главного меню.
5.14 Для того чтобы локальное меню было доступным в любой точке формы Form1, необходимо установить ее свойство PopupMenu равным PopupMenu1.
5.15 Сохранить проект и запустить на выполнение. Щелчок правой кнопки активизирует локальное меню.
Текст модуля Unit1.pas
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, Grids;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
PopupMenu1: TPopupMenu;
StringGrid1: TStringGrid;
Button1: TButton;
Button2: TButton;
Memo1: TMemo;
Button6: TButton;
N1: TMenuItem;
max1: TMenuItem;
min1: TMenuItem;
sum: TMenuItem;
N2: TMenuItem;
clear1: TMenuItem;
clearstringgrid1: TMenuItem;
clearmemo1: TMenuItem;
close1: TMenuItem;
Button7: TButton;
Button3: TButton;
max2: TMenuItem;
min2: TMenuItem;
sum1: TMenuItem;
memoclear1: TMenuItem;
close2: TMenuItem;
procedure Button7Click(Sender: TObject);
procedure max1Click(Sender: TObject);
procedure min1Click(Sender: TObject);
procedure sumClick(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure close1Click(Sender: TObject);
procedure clearstringgrid1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure clearmemo1Click(Sender: TObject);
procedure max2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1; a:array [1..5,1..5] of integer;
implementation
{$R *.dfm}
procedure TForm1.Button7Click(Sender: TObject);
var i,j:integer;
begin
for i:=1 to 5 do
for j:=1 to 5 do
a[i,j]:=strtoint(stringgrid1.Cells[j-1,i-1]);
end;
procedure TForm1.max1Click(Sender: TObject);
var max:integer; i,j:integer;
begin
max:=a[1,1];
for i:=1 to 5 do
for j:=1 to 5 do
if a[i,j]>=max then max:=a[i,j];
memo1.Lines.Add('max value ='+ inttostr(max));
end;
procedure TForm1.min1Click(Sender: TObject);
var min:integer; i,j:integer;
begin
min:=a[1,1];
for i:=1 to 5 do
for j:=1 to 5 do
if a[i,j]<=min then min:=a[i,j];
memo1.Lines.Add('min value ='+ inttostr(min));
end;
procedure TForm1.sumClick(Sender: TObject);
var sum:integer; i,j:integer;
begin
sum:=0;
for i:=1 to 5 do
for j:=1 to 5 do
sum:=sum+a[i,j];
memo1.Lines.Add('sum ='+ inttostr(sum));
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
max1Click(max1);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
min1Click(min1);
end;
procedure TForm1.close1Click(Sender: TObject);
begin
button6Click(button6);
end;
procedure TForm1.clearstringgrid1Click(Sender: TObject);
var i,j:integer;
begin
for i:=0 to 4 do
for j:=0 to 4 do
StringGrid1.Cells[j,i]:=' ';
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
memo1.Clear;
end;
procedure TForm1.clearmemo1Click(Sender: TObject);
begin
button3Click(button3);
end;
procedure TForm1.max2Click(Sender: TObject);
begin
max1Click(max1);
end;
end.
Задания к лабораторной работе 5
Выполнить задания 2 к лабораторной работе 4, но для вызова команд использовать меню, контекстное меню и кнопки.