Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

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

Работа добавлена на сайт samzan.net:


Лабораторная работа 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, но для вызова команд использовать меню, контекстное меню и кнопки.




1. Методика аудиту звіту про фінансові результати
2. Энергетическая Осуществляет процесс окислительного фосфорилирования
3. ДЕМОКРАТИИ Социалдемократия одна из наиболее влиятельных политических сил современного мира
4. Становление и совершенствование рыночных отношений в строительном комплексе
5. Тайвань
6.  Успенский ФИ
7. Было поздно отступать
8. В сущности здесь нет правильных и неправильных ответов правилен каждый правдивый ответ
9. ЛАБОРАТОРНАЯ РАБОТА 1 2 Расчет и оптимизация частотного плана РЧ блока устройств ССПО Вариант 9 ~ но
10. Вкус и цвет жизни
11. Центральная идея книги И Пригожина, И Стенгерса Время, хаос, квант
12. ТЕМА 10 Комунікації План лекції Процес комунікації
13. этика происходит от греческого ethos этос нрав обычай характер привычка
14. Реферат- Микропроцессоры Intel80386
15. Анализ продукта- цельное пастеризованное молоко, деревенское отборное
16. Отдельные элементы валютных отношений появились еще в античном мире Древней Греции и Древнем Риме в виде
17. Туристично-рекреаційна галузь господарства
18. это различные типы организаций
19. Судовыу энергетические установки
20. это основная ячейка в обществе