Главная » Учебные материалы » Информатика » Лабораторные работы » ВолГУ » Несколько классов/семестров » Номер 10 » Вариант 4 » Компонент TMainMenu - Создайте проект «Географические карты» с пунктами меню, указанными в таблице: В зависимости от выбора типа карты должен открываться один из двух файлов. Элементы Физическая, Плотность населения, оформить в виде пунктов-переключа
Для студентов ВолГУ по предмету ИнформатикаКомпонент TMainMenu - Создайте проект «Географические карты» с пунктами меню, указанными в таблице: В зависимости от выбора типа карты должен открыватКомпонент TMainMenu - Создайте проект «Географические карты» с пунктами меню, указанными в таблице: В зависимости от выбора типа карты должен открыват
2024-02-08СтудИзба

Компонент TMainMenu - Создайте проект «Географические карты» с пунктами меню, указанными в таблице: В зависимости от выбора типа карты должен открываться один из двух файлов. Элементы Физическая, Плотность населения, оформить в виде пунктов-переключателей

Описание

Лабораторная работа №10. Вариант 4. ЛР Компонент TMainMenu
Цель работы: Познакомиться с компонентом TMainMenu. Научиться создавать меню для приложений.
/ задача из РК программа в Pascal Lazarus.
В архиве также файл с объяснениями работы программы. Тэги: Программа на Lazarus, PascalObject, Pascal, Delphi, Turbo Delphi, Pascal ABC / Анимация, ЛР, РК, ДЗ, 2023

Условия для программы, под которые она выполнена:
4.
  1. Создайте проект «Географические карты» с пунктами меню, указанными в таблице:
ФайлКонтинентТип карты
Выход Ctrl+HАвстралияФизическая
АнтарктидаПлотность населения
Африка
Евразия
Сев. Америка
Ю. Америка
В зависимости от выбора типа карты должен открываться один из двух файлов. Элементы Физическая, Плотность населения, оформить в виде пунктов-переключателей. Контекстное меню содержит названия континентов. Для пункта меню Выход создайте комбинацию «горячих» клавиш Ctrl+H. Назначьте клавиши быстрого доступа в соответствии с подчеркнутыми в таблице буквами.

Программа в сделанном виде:











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

Компонент TMainMenu

Цель работы: Познакомиться с компонентом TMainMenu. Научиться создавать меню для приложений.

Теоритическая часть:

Для создания главного меню в среде Lazarus используется компонент TMainMenu (вкладка Standard). Компонент не визуальный. Пункты меню содержатся в свойстве Items. Чтобы начать формирование пунктов меню достаточно дважды щелкнуть по компоненту на форме или нажать на кнопку с многоточием в свойстве Items компонента в инспекторе объектов. Откроется специальный редактор меню, рис.1.
Рис.1


В инспекторе объектов в свойство Caption введите имя пункта меню.
Чтобы создать следующий пункт меню или подменю, установите курсор на текущий элемент меню и нажмите на правую клавишу мыши, рис.2. Выберите нужное действие, например, для создания подменю нажмите "Создать подменю", рис.3.


Рис.2





Рис.3


Lazarus предоставляет возможность при создании меню применить шаблоны меню. Имеется три стандартных шаблона для меню "Файл", "Правка" и "Справка", рис.4.


Рис.4


При создании меню имеется возможность вставки рядом с текстом пункта меню пиктограммы. Для этого поместите на форму компонент TImageList, заполните его соответствующими рисунками. Затем в TMainMenu в свойстве Images укажите имя TImageList в программе. А при создании подпункта меню в свойстве ImageIndex укажите индекс соответствующего изображения.
Также вы можете добавить горячие клавиши для данного пункта меню. Для этого служит свойство Shortcut. Вы можете прямо ввести нужное сочетание клавиш в поле ввода этого свойства или нажав на кнопку с многоточием, выбрать нужное сочетание из появившегося редактора выбора сочетаний клавиш, рис.5.
Для создания разделительной линии между пунктами меню достаточно создать новый элемент и в свойство Caption ввести знак "-".


Рис.5


Пример 1 Создание строки меню
Почти все программы Windows позволяют управлять ими при помощи строки меню. Если программа управляется через меню, ей, в принципе, не нужны никакие другие элементы управления. Строка меню обычно дает доступ ко всем существующим командам.
Откройте в палитре компонентов вкладку Standard (Стандартные).
Выберите компонент MainMenu (Строка меню) и щелкните на форме.





Рис.5. Структура меню

Структура меню нашей программы видна на рисунке (рис.1). В строке меню имеется два пункта: Файл и Выход. При щелчке на пункте Файл открывается меню, также содержащее два пункта: Рисунки и Выход. Если щелкнуть на пункте Рисунки, откроется вложенное меню, состоящее из трех пунктов, соответствующих разным рисункам. Эти пункты позволят показать

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

Рис.6 Окно инспектор объектов
Чтобы запустить редактор меню, дважды щелкните на значке меню на форме. Откроется диалоговое окно, озаглавленное так же, как объект меню, в нашем случае Form1.MainMenu1. Оно содержит пустое меню. Как только мы зададим текст пункта меню, система Lazarus тут же создаст нужный объект. Этот объект описывает не меню в целом, а только данный пункт меню.
Щелкните в окне Инспектора объектов (рис. 6) напротив свойства Caption (Заголовок), введите текст пункта меню —
«Файл» и измените свойство Name (Имя) на
«File1», нажмите клавишу ENTER. Система Lazarus тут же создаст заготовку для нового пункта меню.
Для создания подменю или следующего раздела меню, необходимо щелкнуть правой клавишей мыши и воспользоваться соответствующей операцией.









Другие пункты меню опишите в соответствии с таблицей 1:

CaptionName
ФайлFile1

РисункиPicture1
СолнечноN1
ПеременноN2
ПасмурноN3
ВыходExit2
ВыходExit1
Табл. 1.
Пункт Рисунки должен открывать подменю для этого нажмите комбинацию клавиш CTRL + ВПРАВО. Система Lazarus сформирует нужную заготовку.
Закройте окно редактора меню и убедитесь, что теперь строка меню появилась в основной форме программы.
Приступим к программированию.
Щелкните на пункте Выход в строке меню. В окне кода будет создана процедура-обработчик с именем Exit1Click:
procedure TForm1.Exit1Click(Sender: TObject);

begin end;

Впишите в эту процедуру в блоке begin…end; один оператор: close;
Теперь создадим обработчик для вложенного меню. Это делается точно так же. Если щелкнуть на пункте Файл, откроется вложенное меню, в котором тоже можно выбрать пункт Выход. Будет создана процедура- обработчик Exit2Click. В нее тоже можно вписать оператор Close, и это будет правильно, но так не поступают, и вот почему. В нашей программе пункт Выход повторяется два раза, и нужно позаботиться о том, чтобы они работали совершенно одинаково. Нетрудно повторить оператор Close в двух местах, но что же делать, когда придется повторять многочисленные строки кода, а такое встречается часто. Поэтому применяют другой подход. Раз уже один раз создана процедура, выполняющая какую-то работу, то во втором случае мы не будем ее создавать, а вызовем исполнение ранее созданной процедуры. Для этого выберем объект Exit2 в раскрывающемся списке в

верхней части окна Инспектора объектов, перейдем на вкладку Evens (События), но вместо того чтобы создавать новую процедуру-обработчик, выберем уже существующую из раскрывающегося списка (Exit1Click).
Как следствие, какой бы из пунктов Выход ни выбрал пользователь, завершение работы программы обеспечит одна и та же процедура.
Если нужно будет изменить реакцию программы на выбор пункта Выход, то придется внести изменение только в одно место — в процедуру Exit1Click, а не в два разных.
Откройте вкладку Additional (Дополнительные) палитры компонентов, выберите компонент Image (Изображение) и нарисуйте на форме область изображения. Сразу же задайте для свойства Stretch (Растяжка) значение True (Да).
Чтобы показать картинку в окне программы, используют оператор:
Image1.Picture.LoadFromFile('Путь к файлу');
Путь к файлу' можно посмотреть с помощью программы Проводник Windows, для этого выберите файл и посмотрите его свойства. В строке Размещение указан путь к файлу. Например, C:Мои документыМои рисунки. К этой строке нужно добавить имя файла. Таким образом, получится оператор:
Image1.Picture.LoadFromFile('C:Мои документыМои рисункиСолнечно.bmp')
Если файл картинки расположен в той же папке, что и файлы проекта, то в качестве 'Пути к файлу' указывается имя файла:
Image1.Picture.LoadFromFile('Солнечно.bmp').
Выберите в строке меню на форме пункт Солнечно. Система Lazarus создаст процедуру N1Click для обработки этого пункта меню. Добавьте оператор в зависимости от расположения файла.
Аналогичным образом создайте процедуры для обработки других пунктов меню Рисунки. Запустите программу, нажав клавишу F9. Строка

меню и все команды работают. Любой из пунктов Выход завершает работу программы.
Создаем контекстное меню
Техника создания контекстного меню такая же, как и при создании строки меню. В палитре компонентов выберите на вкладке Standard (Стандартные) компонент PopupMenu (Контекстное меню). Щелкните на форме, чтобы создать значок объекта.
Двойной щелчок на этом значке откроет редактор меню, работа с которым ведется так же, как и раньше. С помощью уже знакомых приемов создайте три пункта меню: Солнечно, Переменно, Пасмурно.
Запрограммировать команды контекстного меню несложно: они будут дублировать команды основного меню, поэтому можно использовать для одинаковых команд одну и ту же процедуру-обработчик.
Выберите с помощью Инспектора объектов объект N4 и на вкладке Events (События) подключите к событию onclick (При щелчке) процедуру N1Click. Точно так же подключите к объекту N5 процедуру N2Click и к объекту N6 процедуру N3Click.
Нужно запрограммировать операцию открытия контекстного меню. Объект PopupMenu содержит метод Popup, который открывает контекстное меню в точке с заданными экранными координатами.
Для этого достаточно описать обработчик события MouseDown (Нажатие кнопки мыши) для формы. Щелкните на форме вне имеющихся объектов, выберите в окне Инспектора объектов вкладку Events (События) и создайте обработчик для события onmousedown (При нажатии кнопки мыши). В процедуру-обработчик передаются локальные координаты указателя мыши.
Экранные координаты, отсчитываются от верхнего левого угла экрана. А локальные координаты отсчитываются от левого верхнего угла формы. Система Lazarus предоставляет стандартный метод ClienToScreen, который

выполняет нужное преобразование. Правда, данные передаются в этот метод в виде структуры TPoint, которая содержит два свойства: X и Y.
Поэтому нужно создать переменную типа TPoint, записать в нее локальные координаты, получить экранные координаты, а потом уже открыть контекстное меню. Процедура FormMouseDown будет выглядеть так:
procedure TForm1.FormMouseDown
(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var p: TPoint;

begin

p.X:=X; p.Y:=Y;
p:=ClientToScreen(p); PopupMenu1.Popup(p.X, p.Y); end;
Запустите программу, нажав клавишу F9. Щелкните на форме левой или правой кнопкой мыши. Убедитесь, что в обоих случаях открывается контекстное меню, содержащее два пункта — команды загрузки картинок. Задайте ту же самую процедуру для компонента Image.

Взаимоисключающие пункты-переключатели
Взаимоисключающие пункты-переключатели используются в тех случаях, когда несколько пунктов меню работают согласованно, как один переключатель с множеством состояний. Выбранный переключатель отмечают либо галочкой, либо жирной точкой.
Добавьте новый пункт Размер в строке меню, свойства пунктов установите следующим образом (Табл. 2):
CaptionNameEnabledRadioItemGrupIndex
РазмерSizetruefalse0
уменьшитьSizeMinfalsetrue1

нормальныйSizeNormfalsetrue1
увеличитьSizeMaxfalsetrue1
Табл. 2.
Во время работы приложения нужно динамически разрешать и запрещать пункты меню в зависимости от того, открыт графический файл или нет. Так как эти действия универсальны, оформим их в виде частного метода формы: в раздел private вставьте строку:
procedure EnableCommans(Enable: Boolean);
а после раздела реализации

implementation

{$R *.dfm}
саму процедуру:
procedure TForm1.EnableCommans(Enable: Boolean);
begin SizeMax.Enabled:=Enable; SizeNorm.Enabled:=Enable; SizeMin.Enabled:=Enable; end;
Чтобы привести в действие механизм переключения пунктов, определим в них следующие события onclick:
procedure TForm1.SizeMinClick(Sender: TObject);
begin SizeMin.Checked:=true; with Image1 do
begin AutoSize:=false; Width:=Width div 2;
Height:=Height div 2;

end;


end;
procedure TForm1.SizeMaxClick(Sender: TObject);
begin SizeMax.Checked:=true; with Image1 do
begin AutoSize:=false; Width:=Width*2; Height:=Height*2; end;

end;

procedure TForm1.SizeNormClick(Sender: TObject);
begin SizeNorm.Checked:=true; Image1.AutoSize:=true; end;
Добавьте в процедуры N1Click, N2Click, N3Click следующую строку:
EnableCommans(true);
При щелчке на пунктах меню Солнечно, Переменно, Пасмурно или аналогичных пунктах контекстного меню становятся доступными пункты изменения размера картинки.
Поменяйте расположение пунктов меню Размер и Выход. Для этого в редакторе меню щелкните левой кнопкой мыши на пункте Размер и, не отпуская, потяните влево.
Добавьте разделительную черту в пункте Файл между пунктами Рисунки и Выход: свойству Caption нового пункта вложенного меню присвойте значение «-» (минус).

Добавление «горячих» клавиш

«Горячие» клавиши – это комбинация клавиш Ctrl+символ, которая дает непосредственный доступ к какой-либо функции меню, минуя само меню. «Горячая» клавиша для элемента меню назначается через свойство ShortCut. Для пункта меню Выход назначьте комбинацию клавиш Ctrl+В.

Добавление клавиш быстрого доступа
Клавиша быстрого доступа – это подчеркнутая буква в элементе меню. Она может использоваться совместно с клавишей Alt для доступа прямо к этому элементу. Чтобы назначить клавишу быстрого доступа в свойстве Caption соответствующего пункта меню, поставьте символ «&» непосредственно перед буквой, которую хотите сделать клавишей быстрого доступа.
Измените свойство Caption в соответствии с таблицей 2:

Caption
&Файл
&Рисунки
&Солнечно
Пере&менно
Пасмурн&о
&Выход
Табл. 2. Теперь меню выглядит так (рис. 5):
Рис. 5. Добавление клавиш быстрого доступа

Пример 2. Создайте проект «Календарь» с пунктами меню, указанными в таблице:




ФайлВремена годаСтиль
ВыходВеснаФото
ЛетоРисунки
Осень
Зима
«Времена года» должны открывать один из двух графических файлов в зависимости от выбора Стиля. Элементы Фото, Рисунки оформить в виде пунктов-переключателей. Контекстное меню содержит времена года. Для пункта меню Выход создайте комбинацию «горячих» клавиш Ctrl+D. Назначьте клавиши быстрого доступа в соответствии с подчеркнутыми в таблице буквами.
Решение. Создайте проект «Меню 1». Добавьте на форму компоненты MainMenu, PopupMenu, Image. Создайте меню. Для пункта Выход создайте процедуру:
procedure TForm1.ExitClick(Sender: TObject);
begin close; end;
Для пункта Фото создайте процедуру: procedure TForm1.FotoClick(Sender: TObject); begin
Foto.Checked:=true; // пункт отображается в виде точки Ris.Checked:=false; // пункт не отображается в виде точки end;
Для пункта Рисунки создайте процедуру:

procedure TForm1.RisClick(Sender: TObject);

begin

Foto.Checked:=False; // пункт не отображается в виде точки
Ris.Checked:=True; // пункт отображается в виде точки

end;

Перенесите файлы рисунков в папку проекта. Для пункта Весна создайте процедуру:
procedure TForm1.VesnaClick(Sender: TObject);

begin

if Foto.Checked=true then // если выбран пункт Фото, то Image1.Picture.LoadFromFile('весна.bmp') // показать файл весна
Else // иначе показать файл веснарис Image1.Picture.LoadFromFile('веснарис.bmp') end;
Аналогично создайте процедуры для пунктов Лето, Осень, Зима. Назначьте процедуры для команд контекстного меню. Процедуру для вызова контекстного меню возьмите из первого задания.

Задания для самостоятельной работы
  1. Создайте проект «Графические файлы» с пунктами меню, указанными в таблице:
ФайлТип файлаРазмер
Выход*.bmp50%
*.jpg100%
*.gif200%
Для пунктов меню *.bmp, *.jpg, *.gif создайте вложенные подменю, каждое из которых содержит 2-4 пункта. Элементы изменения размера оформить в виде пунктов-переключателей. Контекстное меню содержит все имена файлов с линиями, разделяющими типы файлов. Для пункта меню

Выход создайте комбинацию «горячих» клавиш Ctrl+X. Назначьте клавиши быстрого доступа в соответствии с подчеркнутыми в таблице буквами.
  1. Создайте проект «Художники» с пунктами меню, указанными в таблице:
ФайлХудожникиФормат
ВыходКазимир Малевич25%
Огюст Ренуар50%
Клод Моне100%
Эдуард Мане300%
Для пунктов меню Казимир Малевич, Огюст Ренуар, Клод Моне, Эдуард Мане создайте вложенные подменю, каждое из которых содержит 2-4 пункта. Элементы изменения размера оформите в виде пунктов- переключателей, создайте комбинации «горячих» клавиш. Контекстное меню содержит все картины с линиями, разделяющими художников. Назначьте клавиши быстрого доступа в соответствии с подчеркнутыми в таблице буквами.
  1. Создайте проект «Насекомые» с пунктами меню, указанными в таблице:
ФайлНасекомыеРазмер
ВыходБабочки Ctrl+B33%
Жуки Ctrl+J66%
Другие Ctrl+D100%
Для пунктов меню Бабочки, Жуки, Другие создайте вложенные подменю, каждое из которых содержит 2-3 пункта, комбинации «горячих» клавиш. Элементы изменения размера оформите в виде пунктов- переключателей. Контекстное меню содержит все названия насекомых с линиями, разделяющими их тип. Назначьте клавиши быстрого доступа в соответствии с подчеркнутыми в таблице буквами.

  1. Создайте проект «Географические карты» с пунктами меню, указанными в таблице:
ФайлКонтинентТип карты
Выход Ctrl+HАвстралияФизическая
АнтарктидаПлотность населения
Африка
Евразия
Сев. Америка
Ю. Америка
В зависимости от выбора типа карты должен открываться один из двух файлов. Элементы Физическая, Плотность населения, оформить в виде пунктов-переключателей. Контекстное меню содержит названия континентов. Для пункта меню Выход создайте комбинацию «горячих» клавиш Ctrl+H. Назначьте клавиши быстрого доступа в соответствии с подчеркнутыми в таблице буквами.
  1. Создайте проект «Картинная галерея» с пунктами меню, указанными в таблице:
ФайлТипХудожник
ВыходПейзаж Ctrl+BМалевич
Портрет Ctrl+CРенуар
Моне
Для пунктов Пейзаж, Портрет создайте вложенные подменю, каждое из которых содержит 2-4 пункта. Элементы меню Малевич, Ренуар, Моне оформите в виде пунктов-переключателей. Контекстное меню содержит все картины с линиями, разделяющими типы. Назначьте клавиши быстрого доступа в соответствии с подчеркнутыми в таблице буквами и комбинации
«горячих» клавиш.
  1. Создайте проект «Овощи-фрукты» с пунктами меню, указанными в таблице:

ФайлОвощи-фруктыРазмер
ВыходОвощи Ctrl+OУменьшить
Фрукты Ctrl+FУвеличить
Для пунктов Овощи, Фрукты создайте вложенные подменю, каждое из которых содержит 2-4 пункта. Элементы меню Уменьшить, Увеличить оформите в виде пунктов-переключателей. Контекстное меню содержит все овощи-фрукты с линиями, разделяющими типы. Назначьте клавиши быстрого доступа в соответствии с подчеркнутыми в таблице буквами и комбинации «горячих» клавиш.
  1. Создайте проект «Страны мира» с пунктами меню, указанными в таблице:
ФайлКонтинентРазмер
Выход Ctrl+HАвстралия25%
Антарктида50%
Африка100%
Евразия
200%
Сев. Америка
Ю. Америка
В зависимости от выбора континента должен открываться список стран. Контекстное меню содержит названия стран с линиями, разделяющими континенты. Для пунктов вложенного меню Размер создайте комбинации «горячих» клавиш, оформите их в виде пунктов- переключателей. Назначьте клавиши быстрого доступа в соответствии с подчеркнутыми в таблице буквами.
  1. Создайте проект «Растения» с пунктами меню, указанными в таблице:
ФайлРастенияРазмер

ВыходЦветы10% Ctrl+D
Деревья75% Ctrl+S
Лианы100% Ctrl+C
Кустарники200% Ctrl+Z
Для пунктов меню Цветы, Деревья, Лианы, Кустарники создайте вложенные подменю, каждое из которых содержит 2-3 пункта. Элементы изменения размера оформите в виде пунктов-переключателей, назначьте
«горячие» клавиши. Контекстное меню должно содержать все названия растений с линиями, разделяющими их тип. Назначьте клавиши быстрого доступа в соответствии с подчеркнутыми в таблице буквами.
  1. Создайте проект «Цветы» с пунктами меню, указанными в таблице:
ФайлЦветТип
Выход Ctrl+ZКрасныйСадовые
ЖелтыйПолевые
Синий
Для подменю пункта Цвет создайте вложенные подменю, каждое из которых содержит 2-3 пункта. Элементы меню «Тип» оформите в виде пунктов-переключателей. Назначьте «горячие» клавиши для пункта
«Выход». Контекстное меню должно содержать все названия растений с линиями, разделяющими их тип. Назначьте клавиши быстрого доступа в соответствии с подчеркнутыми в таблице буквами.
  1. Создайте проект «Сказки» с пунктами меню, указанными в таблице:
ФайлАвторРазмер
ВыходПушкинУвеличить в два раза
АндерсенУвеличить в три раза
Братья ГриммУменьшить в два раза

БажовУменьшить в три раза
Для пунктов меню Пушкин, Андерсен, Братья Гримм, Бажов создайте вложенные подменю, каждое из которых содержит 2-3 пункта – названия сказок. Элементы изменения размера оформите в виде пунктов- переключателей. Назначьте «горячие» клавиши для пункта «Выход». Контекстное меню должно содержать все названия растений с линиями, разделяющими их тип. Назначьте клавиши быстрого доступа в соответствии с подчеркнутыми в таблице буквами.


Контрольные вопросы





Показать/скрыть дополнительное описание

Лабораторная работа №10. Вариант 4. ЛР Компонент TMainMenu Цель работы: Познакомиться с компонентом TMainMenu. Научиться создавать меню для приложений. / задача из РК программа в Pascal Lazarus. В архиве также файл с объяснениями работы программы. Тэги: Программа на Lazarus, PascalObject, Pascal, Delphi, Turbo Delphi, Pascal ABC / Анимация, ЛР, РК, ДЗ, 2023 Условия для программы, под которые она выполнена: 4. Создайте проект «Географические карты» с пунктами меню, указанными в таблице: ФайлКонтинентТип карты Выход Ctrl+HАвстралияФизическая АнтарктидаПлотность населения Африка Евразия Сев. Америка Ю. Америка В зависимости от выбора типа карты должен открываться один из двух файлов.

Элементы Физическая, Плотность населения, оформить в виде пунктов-переключателей. Контекстное меню содержит названия континентов. Для пункта меню Выход создайте комбинацию «горячих» клавиш Ctrl+H. Назначьте клавиши быстрого доступа в соответствии с подчеркнутыми в таблице буквами. Программа в сделанном виде: Лабораторная работа №10 Компонент TMainMenu Цель работы: Познакомиться с компонентом TMainMenu. Научиться создавать меню для приложений. Теоритическая часть: Для создания главного меню в среде Lazarus используется компонент TMainMenu (вкладка Standard). Компонент не визуальный. Пункты меню содержатся в свойстве Items. Чтобы начать формирование пунктов меню достаточно дважды щелкнуть по компоненту на форме или нажать на кнопку с многоточием в свойстве Items компонента в инспекторе объектов.

Откроется специальный редактор меню, рис.1. Рис.1 В инспекторе объектов в свойство Caption введите имя пункта меню. Чтобы создать следующий пункт меню или подменю, установите курсор на текущий элемент меню и нажмите на правую клавишу мыши, рис.2. Выберите нужное действие, например, для создания подменю нажмите \"Создать подменю\", рис.3. Рис.2 Рис.3 Lazarus предоставляет возможность при создании меню применить шаблоны меню. Имеется три стандартных шаблона для меню \"Файл\", \"Правка\" и \"Справка\", рис.4. Рис.4 При создании меню имеется возможность вставки рядом с текстом пункта меню пиктограммы. Для этого поместите на форму компонент TImageList, заполните его соответствующими рисунками.

Затем в TMainMenu в свойстве Images укажите имя TImageList в программе. А при создании подпункта меню в свойстве ImageIndex укажите индекс соответствующего изображения. Также вы можете добавить горячие клавиши для данного пункта меню. Для этого служит свойство Shortcut. Вы можете прямо ввести нужное сочетание клавиш в поле ввода этого свойства или нажав на кнопку с многоточием, выбрать нужное сочетание из появившегося редактора выбора сочетаний клавиш, рис.5. Для создания разделительной линии между пунктами меню достаточно создать новый элемент и в свойство Caption ввести знак \"-\". Рис.5 Пример 1 Создание строки меню Почти все программы Windows позволяют управлять ими при помощи строки меню.

Если программа управляется через меню, ей, в принципе, не нужны никакие другие элементы управления. Строка меню обычно дает доступ ко всем существующим командам. Откройте в палитре компонентов вкладку Standard (Стандартные). Выберите компонент MainMenu (Строка меню) и щелкните на форме. Рис.5. Структура меню Структура меню нашей программы видна на рисунке (рис.1). В строке меню имеется два пункта: Файл и Выход. При щелчке на пункте Файл открывается меню, также содержащее два пункта: Рисунки и Выход. Если щелкнуть на пункте Рисунки, откроется вложенное меню, состоящее из трех пунктов, соответствующих разным рисункам. Эти пункты позволят показать выбранные рисунки на форме.

Если выбрать любой из пунктов Выход, работа программы завершается. Рис.6 Окно инспектор объектов Чтобы запустить редактор меню, дважды щелкните на значке меню на форме. Откроется диалоговое окно, озаглавленное так же, как объект меню, в нашем случае Form1.MainMenu1. Оно содержит пустое меню. Как только мы зададим текст пункта меню, система Lazarus тут же создаст нужный объект. Этот объект описывает не меню в целом, а только данный пункт меню. Щелкните в окне Инспектора объектов (рис. 6) напротив свойства Caption (Заголовок), введите текст пункта меню — «Файл» и измените свойство Name (Имя) на «File1», нажмите клавишу ENTER. Система Lazarus тут же создаст заготовку для нового пункта меню.

Для создания подменю или следующего раздела меню, необходимо щелкнуть правой клавишей мыши и воспользоваться соответствующей операцией. Другие пункты меню опишите в соответствии с таблицей 1: CaptionName ФайлFile1 РисункиPicture1 СолнечноN1 ПеременноN2 ПасмурноN3 ВыходExit2 ВыходExit1 Табл. 1. Пункт Рисунки должен открывать подменю для этого нажмите комбинацию клавиш CTRL + ВПРАВО. Система Lazarus сформирует нужную заготовку. Закройте окно редактора меню и убедитесь, что теперь строка меню появилась в основной форме программы. Приступим к программированию. Щелкните на пункте Выход в строке меню. В окне кода будет создана процедура-обработчик с именем Exit1Click: procedure TForm1.Exit1Click(Sender: TObject); begin end; Впишите в эту процедуру в блоке begin…end; один оператор: close; Теперь создадим обработчик для вложенного меню.

Это делается точно так же. Если щелкнуть на пункте Файл, откроется вложенное меню, в котором тоже можно выбрать пункт Выход. Будет создана процедура- обработчик Exit2Click. В нее тоже можно вписать оператор Close, и это будет правильно, но так не поступают, и вот почему. В нашей программе пункт Выход повторяется два раза, и нужно позаботиться о том, чтобы они работали совершенно одинаково. Нетрудно повторить оператор Close в двух местах, но что же делать, когда придется повторять многочисленные строки кода, а такое встречается часто. Поэтому применяют другой подход. Раз уже один раз создана процедура, выполняющая какую-то работу, то во втором случае мы не будем ее создавать, а вызовем исполнение ранее созданной процедуры.

Для этого выберем объект Exit2 в раскрывающемся списке в верхней части окна Инспектора объектов, перейдем на вкладку Evens (События), но вместо того чтобы создавать новую процедуру-обработчик, выберем уже существующую из раскрывающегося списка (Exit1Click). Как следствие, какой бы из пунктов Выход ни выбрал пользователь, завершение работы программы обеспечит одна и та же процедура. Если нужно будет изменить реакцию программы на выбор пункта Выход, то придется внести изменение только в одно место — в процедуру Exit1Click, а не в два разных. Откройте вкладку Additional (Дополнительные) палитры компонентов, выберите компонент Image (Изображение) и нарисуйте на форме область изображения.

Сразу же задайте для свойства Stretch (Растяжка) значение True (Да). Чтобы показать картинку в окне программы, используют оператор: Image1.Picture.LoadFromFile(\'Путь к файлу\'); Путь к файлу\' можно посмотреть с помощью программы Проводник Windows, для этого выберите файл и посмотрите его свойства. В строке Размещение указан путь к файлу. Например, C:\\Мои документы\\Мои рисунки. К этой строке нужно добавить имя файла. Таким образом, получится оператор: Image1.Picture.LoadFromFile(\'C:\\Мои документы\\Мои рисунки\\Солнечно.bmp\') Если файл картинки расположен в той же папке, что и файлы проекта, то в качестве \'Пути к файлу\' указывается имя файла: Image1.Picture.LoadFromFile(\'Солнечно.bmp\').

Выберите в строке меню на форме пункт Солнечно. Система Lazarus создаст процедуру N1Click для обработки этого пункта меню. Добавьте оператор в зависимости от расположения файла. Аналогичным образом создайте процедуры для обработки других пунктов меню Рисунки. Запустите программу, нажав клавишу F9. Строка меню и все команды работают. Любой из пунктов Выход завершает работу программы. Создаем контекстное меню Техника создания контекстного меню такая же, как и при создании строки меню. В палитре компонентов выберите на вкладке Standard (Стандартные) компонент PopupMenu (Контекстное меню). Щелкните на форме, чтобы создать значок объекта. Двойной щелчок на этом значке откроет редактор меню, работа с которым ведется так же, как и раньше.

С помощью уже знакомых приемов создайте три пункта меню: Солнечно, Переменно, Пасмурно. Запрограммировать команды контекстного меню несложно: они будут дублировать команды основного меню, поэтому можно использовать для одинаковых команд одну и ту же процедуру-обработчик. Выберите с помощью Инспектора объектов объект N4 и на вкладке Events (События) подключите к событию onclick (При щелчке) процедуру N1Click. Точно так же подключите к объекту N5 процедуру N2Click и к объекту N6 процедуру N3Click. Нужно запрограммировать операцию открытия контекстного меню. Объект PopupMenu содержит метод Popup, который открывает контекстное меню в точке с заданными экранными координатами.

Для этого достаточно описать обработчик события MouseDown (Нажатие кнопки мыши) для формы. Щелкните на форме вне имеющихся объектов, выберите в окне Инспектора объектов вкладку Events (События) и создайте обработчик для события onmousedown (При нажатии кнопки мыши). В процедуру-обработчик передаются локальные координаты указателя мыши. Экранные координаты, отсчитываются от верхнего левого угла экрана. А локальные координаты отсчитываются от левого верхнего угла формы. Система Lazarus предоставляет стандартный метод ClienToScreen, который выполняет нужное преобразование. Правда, данные передаются в этот метод в виде структуры TPoint, которая содержит два свойства: X и Y.

Поэтому нужно создать переменную типа TPoint, записать в нее локальные координаты, получить экранные координаты, а потом уже открыть контекстное меню. Процедура FormMouseDown будет выглядеть так: procedure TForm1.FormMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var p: TPoint; begin p.X:=X; p.Y:=Y; p:=ClientToScreen(p); PopupMenu1.Popup(p.X, p.Y); end; Запустите программу, нажав клавишу F9. Щелкните на форме левой или правой кнопкой мыши. Убедитесь, что в обоих случая....

Файлы условия, демо

Лабораторная работа No10 Компонент TMainMenu вар 4.pdf

Характеристики лабораторной работы

Учебное заведение
Номер задания
Вариант
Просмотров
3
Покупок
0
Размер
11,82 Mb

Список файлов

    Картинка-подпись
    Ваше экономие времени является моей ГЛАВНОЙ задачей! Если я Вам хоть чуть-чуть помог, пожалуйста, сделайте и мне приятное, оставьте 5 ЗВЁЗД и позитивный комментарий. Большое спасибо!

    Комментарии

    Поделитесь ссылкой:
    Цена: 349 руб.
    Расширенная гарантия +3 недели гарантии, +10% цены
    Рейтинг-
    0
    0
    0
    0
    0
    Поделитесь ссылкой:
    Сопутствующие материалы
    Свежие статьи
    Популярно сейчас
    Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
    Ответы на популярные вопросы
    Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
    Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
    Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
    Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
    Отзывы студентов
    Ставлю 10/10
    Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
    Лучшая платформа для успешной сдачи сессии
    Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
    Студизба ван лав ❤
    Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
    Отличный сайт
    Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
    Маленький отзыв о большом помощнике!
    Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
    Студ. Изба как крупнейший сборник работ для студентов
    Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
    Спасательный островок
    Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
    Всё и так отлично
    Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
    Отзыв о системе "Студизба"
    Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
    Отличный помощник
    Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
    Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
    Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
    Спасибо за шикарный сайт
    Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
    Популярные преподаватели
    Добавляйте материалы
    и зарабатывайте!
    Продажи идут автоматически
    5160
    Авторов
    на СтудИзбе
    439
    Средний доход
    с одного платного файла
    Обучение Подробнее