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

Лабораторная работа по Delphi Работа с меню главное меню Лабораторная работа Работа с меню гл

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

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 28.12.2024

2

Лабораторная работа по Delphi «Работа с меню (главное меню)»

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

«Работа с меню (главное меню – MainMenu

Цель: приобретение навыков работы с компонентом MainMenu.

Теоретические сведения

Меню – один из распространенных элементов пользовательского интерфейса. Меню представляет собой список пунктов, объединенных по функциональному признаку, каждый из которых обозначает команду или вложенное меню (подменю).

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

Для создания и изменения меню в процессе разработки приложения в среде Delphi предназначен Конструктор меню (Menu Designer). Запуск Конструктора меню можно выполнить по команде Menu Designer… контекстного меню компонента MainMenu, а также с помощью двойного щелчка кнопкой мыши на этот компонент. При конструировании меню имеет тот же вид, что и при выполнении приложения.

Наименование пункта меню задается путем присвоения нужного значения его свойству Caption. Кроме того, в Delphi 5 у компонента MainMenu доступны такие  свойства как Checked и Bitmap, определяющие соответственно:

  •  Checked = true/false – наличие/отсутствие отметки у пункта меню (для отметки выбора);
  •  Bitmap = рисунок, определяющий наличие картинки перед названием пункта в меню.

Для закрепления процедуры  за выбором некоторого пункта меню (событие OnClick),  на этапе проектирования приложения следует выбрать этот пункт с помощью клавиатуры или мыши.

Пример выполнения задания

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

  •  вывод на экран сообщения «Привет!»;
  •  ввод пользователем некоторого числа (аргумента);
  •  вычисление cos, sin, tg, ctg, введенного аргумента;
  •  вывод формул для вычисления arccos(x), arcsin(x), actg(x),arcctg(x);
  •  выход из программы.

Реализация.

Создали новую форму и расположили на ней компоненты: MainMenu, Bevel, Label, Edit, Image, согласно рисунку 1.

Рис 1. Расположение

компонент на форме

Компоненты Bevel, Label и Edit располагаем на форме в следующей последовательности: сначала Bevel, затем Label и Edit – так как Bevel должен оказаться «снизу» Label’a и Edit’a.

Четыре компонента Image располагаем на форме произвольным образом. Свойству Picture компонента Image1 (Image1.Picture) присваиваем значение arccos.bmp (загружаем рисунок из каталога e:\5381\Урок\Menu\). Соответственно в Image2.Picture загружаем arcsin.bmp, в Image3.Picture - arctg.bmp, в Image4.Picture - arcctg.bmp.

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

  1.  помещаем на форму компонент MainMenu, двойным щелчком на компоненте вызываем Дизайнер Меню;
  2.  

проектируем меню согласно рисунку 2 (вставка разделителя осуществляется вводом символа ‘-’ в поле Caption):
















Рисунок 2. Проектирование главного меню программы

  1.  кроме свойств Caption элементов Главного Меню, меняем свойство Name подпунктов меню «Функция» следующим образом:

Пункт подменю «Функция»

(сверху вниз)

Свойство Caption

Свойство Name

Первый

Cos(x)

cosx1

Второй

Sin(x)

sinx1

Третий

Tg(x)

tgx1

Четвертый

Ctg(x)

ctgx1

Пятый – разделитель

-

Не меняем

Шестой

Arccos(x)’

arccosx1

Седьмой

Arcsin(x)’

arcsinx1

Восьмой

Arctg(x)’

arctgx1

Девятый

Arcctg(x)’

arcctg1

  1.  закрываем Дизайнер Меню и теперь за каждым пунктом меню закрепляем процедуру программы. Для этого просто щелкаем мышью на нужном пункте главного меню (оно уже появилось в форме).

В программу необходимо добавить следующие процедуры (закрепить за …):

  •  за пунктом меню (п. Меню) «Привет!»:

//выдача сообщения при выборе п.Меню "привет"

procedure TForm1.N4Click(Sender: TObject);

begin

 ShowMessage('Привет мир, Windows и пользователь!ж:)'+#13#10+'Это мы из МГВРК!');

end;

#13#10 – символ конца строки. С его помощью осуществляется переход на другую строку в окне выдачи сообщения.  ‘ ж:)’ =       – символ “смешной рожицы с челочкой

  •  за п. Меню «Аргумент»:

//выбор пункта меню "Аргумент"

procedure TForm1.N7Click(Sender: TObject);

begin

 label1.Caption:='Введите значение x:';

 edit1.Visible:=true;

 form1.activecontrol:=Edit1;

end;

  •  за п. Меню «Выход»:

//выбор п.Меню "Выход" - выход из приложения

procedure TForm1.N2Click(Sender: TObject);

begin

close;

end;

  •  за пунктами Меню cos(x), sin(x), tg(x), ctg(x) (1):

//обработка выборов п.п.Меню "Функция" до разделителя:

//cos(x), sin(x), tg(x), ctg(x) осуществляется ОДНОЙ процедурой

procedure TForm1.cosx1Click(Sender: TObject);

var

cod:Integer;

ws,resstr:String;

begin

ws:=Edit1.text;

val(ws,x,cod);

try  //начало блока try...except..end

 with Sender As TMenuItem do //будем обрабатывать Sender как пункт Меню

  begin  //объект Sender вызвал эту процедуру

    if (Sender = cosx1) then //если sender - это cosx1 (т.е.cos(x)), тогда:

    begin

      str(cos(x):1:4,ws);//сразу преобразуем значение функции в строку

      Resstr:='Cos(x) = ';//и определим начало результирующей строки

    end;

   if (Sender = sinx1) then

    begin

      str(sin(x):1:4,ws);

      Resstr:='Sin(x) = ';

    end;

   if (Sender = tgx1)then

    begin

      str(tan(x):1:4,ws);

      Resstr:='tg(x) = ';

    end;

   if (Sender = ctgx1)then

     begin

      str(cotan(x):1:4,ws);

      Resstr:='Ctg(x) = ';

    end;

 end;

except //если в блоке try...except возникла ошибка, она обрабатывается ЗДЕСЬ

 ShowMessage('А существует ли значение выбранной функции для Вашего аргумента?');

 exit; //а мы просто о ней сообщим

end;

ShowMessage(Resstr + ws);

end;

  •  за событием OnKeyPress элемента Edit1:

//выполняется при вводе символов в Edit

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

if not (key in ['0'..'9','-']) then

  key:=#0;

end;

  •  за пунктом меню arccos(x)':

//выбор п.Меню arccos(x)'

procedure TForm1.arccosx1Click(Sender: TObject);

begin //прямое преобразование Sender в элемент меню TMenuItem

TMenuItem(Sender).checked:= not (TMenuItem(Sender).checked);

 if (TMenuItem(Sender).checked) then

  image1.visible:=true

 else

  image1.visible:=false;

end;

  •  за пунктом меню arcsin(x)':

//выбор п.Меню arcsin(x)'

procedure TForm1.arcsinx1Click(Sender: TObject);

begin

TMenuItem(Sender).checked:= not (TMenuItem(Sender).checked);

 if (TMenuItem(Sender).checked) then

  image2.visible:=true

 else

image2.visible:=false;

end;

  •  за пунктом меню arctg(x)':

//выбор п.Меню arctg(x)'

procedure TForm1.arctgx1Click(Sender: TObject);

begin

TMenuItem(Sender).checked:= not (TMenuItem(Sender).checked);

 if (TMenuItem(Sender).checked) then

  image3.visible:=true

 else

 image3.visible:=false;

end;

  •  за пунктом меню arcctg(x)':

//выбор п.Меню arcctg(x)'

procedure TForm1.arcctgx1Click(Sender: TObject);

begin

TMenuItem(Sender).checked:= not (TMenuItem(Sender).checked);

 if (TMenuItem(Sender).checked) then

  image4.visible:=true

 else

 image4.visible:=false;

end;

На рисунке 3 изображен вид работающей программы.

Рисунок 3. Вид программы «Меню» в работе

1 Блок try… except… end предназначен для «обхода» различных ошибочных ситуаций в программе. Его вставляют в то место программы, где может возникнуть ошибка (например: деление на нуль, нехватка памяти…), а именно – помещают ВСЕ операторы, которые могут вызвать ошибку, между try и except. А между except и end помещают обработчик ошибки. То есть, если в операторах где-то между try и except возникнет ошибка, программа не «зависнет», а перейдет в блок except… end, где программист помещает операторы или процедуры обработки ошибки. В примере просто сообщается о возможной ошибке, которая может возникнуть в данном случае при вычислении ctg(0).


Оператор with <объект> do позволяет работать со свойствами объекта не употребляя каждый раз при этом его имени.


Оператор <объект>  As <Тип> позволяет работать с <объектом> именно как с представителем определенного <типа> объектов. В примере Объект Sender благодаря As воспринимается далее как элемент меню (MenuItem). Это позволяет сравнить его со всеми теми элементами Главного Меню, которые могли вызвать процедуру form1.cosx1Click и выявить «того, кто это сделал».




1. Еще Держи меня жестче Он приложил больше силы тем самым обняв меня сильнее
2. им і останнім тиртханкаром святим який пізнав благодать а до нього існувало ще 23 таких святих першим з я
3. лист на 15 декабря 2013
4. Крекер Евгением ОкуличКазариным
5. Nightmre Tles Кошмарные рассказы Кармические видения I Лагерь полон боевыми колесницами ржущими лош
6. Тема- Определение реакций опор
7. Тема работы- Составление программ разветвляющейся структуры Цели работы- Получить навыки решения задач
8. Реферат- Ислам
9. БЕКІТЕМІН Экономика бизнес ж~не ~леуметтік ~ылымдар Жо~ары мектебіні~ проректордиректо
10. Розрахунок параметрів і вибір елементів тиристорних електроприводів постійного струму
11. философы стратеги воины и производителиземледельцы и ремесленники.
12. тематический факультет Кафедра математики и методики обучения математике.html
13. Языческие верования древних славян
14. тематический диктант
15. СРСР у післявоєнні роки Тріумфальний сталінізм
16. Бах и Гендель - два гения и две судьбы
17. Мы многонациональный народ Российской Федерации соединённые общей судьбой на своей земле утверждая права
18. Лекція 6122011 Шморгун А
19. Священник Хартмут Каниа.html
20. История Белгородчины Донецкооскольская лесостепь в древности