5.2.1 Создать главное меню, меню должно состоять из двух пунктов: обработка массива и сервис (рисунок5.1). Пункт обработка массива состоит из команд: max, min, sum. Пункт сервис состоит из команд: clear и close. Команда clear содержит подменю: clear stringgrid и clearmemo.
В качестве реакции на выбор пункта меню вывести значения максимума, минимума и суммы элементов массива. Значения элементов массива ввести в таблицу StringGrid.
5.2.2 Создать контекстное меню для вывода значений максимума, минимума и суммы элементов массива.
5.2.3 Вывести значения максимума, минимума и суммы элементов массива, используя компонент Button, но в качестве обработчика события использовать процедуру, созданную ранее – реакцию на пункты главного меню.
План разработки программы:
1) Разместить компоненты на дизайнере форм, согласно рисунку 5.1:
MainMenu1 – со страницы Standard;
PopupMenu1 – со страницы Standard;
Memo1- со страницыStandard;
Button1-5 – со страницы Standard; присвоить значения свойству caption, согласно рис 5.1.
StringGrid1 – со страницы Additional; задать значения свойств:
colcount - 5,
rowcount – 5,
fixed row-0,
fixed col – 0,
options – goEditing – true,
options – goTab – true.
2) Выбрать свойство Items компонента MainMenu1. Щелкнуть на кнопке с тремя точками. Появится окно конструктора меню. Пункты меню верхнего уровня формируются по горизонтали. Свойства captio n имеют следующие значения caption:=’обработка массива’ и caption:=’сервис’.
3) Набрать пункты меню следующего уровня в соответствии с рисунком 5.2. Для пункта обработка массива– max, min, sum. Для команды max задать клавишу быстрого перехода (акселератор). В этом случае свойство caption имеет значение &max. Для команды min задать «горячую» клавишу: выбрать свойство ShortCut и в выпадающем списке выбрать нужное значение, например, Ctrl+M.
Рисунок 5.1
4) Для пункта меню сервис добавить команды clear и close (рисунок 5.3).Для того чтобы по команде clear открывалось подменю, необоходимо выполнить следующие действия. Выделить команду clear,щелкнуть правой кнопкой мыши и в открывшемся контекстном меню конструктора выбрать команду Create Submenu и далее ввести пункты подменю: clear stringgrid и clear memo.
Рисунок 5.2
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.3
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;
7) Активизировать кнопку clear memo,предназначенную для очистки memo.
8) Активизировать кнопку Close (button6), предназначенную для закрытия формы.
9) Для команды Close из меню Сервис используется процедура, созданная ранее в пункте 8 – Button6Click. Обработчик события close1Click (команда close из меню сервис) имеет следующий вид:
procedure TForm1.close1Click(Sender: TObject);
begin;
button6Click(button6);
end;
Аналогично из команды clear memo из меню сервис вызывается процедура, созданная в пункте 7).
10) Для кнопок max (Button1) и min(Button2) вызываются соответственно процедуры max1Click(max1) и min1Click(min1);
procedure TForm1.Button1Click(Sender: TObject);
begin;
max1Click(max1);
еnd;
11) Сохранить проект в папке menu и запустить на выполнение.
12) Создание контекстного меню. В свойстве Items компонента PopupMenu зададим элементы контекстного меню: те же, что и в главном меню: max, min, sum, clear stringgrid, close;
13) Для элемента max контекстного меню реакция на OnClick будет такой же, как для элемента max главного меню. Тогда обработчик события OnClick для элемента max контекстного меню будет иметь следующий вид:
procedure TForm1.max2Click(Sender: TObject);
begin;
max1Click(max1);
end;
Аналогично, из остальных элементов контекстного меню вызываются процедуры главного меню.
14) Для того чтобы локальное меню было доступным в любой точке формы Form1, необходимо установить ее свойство PopupMenu равным PopupMenu1.
15) Сохранить проект и запустить на выполнение. Щелчок правой кнопки активизирует локальное меню.