Компонент TMainMenu - Создайте проект «Картинная галерея» с пунктами меню, указанными в таблице: Для пунктов Пейзаж, Портрет создайте вложенные подменю, каждое из которых содержит 2-4 пункта. Элементы меню Малевич, Ренуар, Моне оформите в виде пунктов-пер
Описание
Цель работы: Познакомиться с компонентом TMainMenu. Научиться создавать меню для приложений.
/ задача из РК программа в Pascal Lazarus.
В архиве также файл с объяснениями работы программы. Тэги: Программа на Lazarus, PascalObject, Pascal, Delphi, Turbo Delphi, Pascal ABC / Анимация, ЛР, РК, ДЗ, 2023
Условия для программы, под которые она выполнена:
5.
- Создайте проект «Картинная галерея» с пунктами меню, указанными в таблице:
Файл | Тип | Художник |
Выход | Пейзаж Ctrl+B | Малевич |
Портрет Ctrl+C | Ренуар | |
Моне |
«горячих» клавиш.
Программа в сделанном виде:













Показать/скрыть дополнительное описание
Лабораторная работа №10. Вариант 5. ЛР Компонент TMainMenu Цель работы: Познакомиться с компонентом TMainMenu. Научиться создавать меню для приложений. / задача из РК программа в Pascal Lazarus. В архиве также файл с объяснениями работы программы. Тэги: Программа на Lazarus, PascalObject, Pascal, Delphi, Turbo Delphi, Pascal ABC / Анимация, ЛР, РК, ДЗ, 2023 Условия для программы, под которые она выполнена: 5. Создайте проект «Картинная галерея» с пунктами меню, указанными в таблице: ФайлТипХудожник ВыходПейзаж Ctrl+BМалевич Портрет Ctrl+CРенуар Моне Для пунктов Пейзаж, Портрет создайте вложенные подменю, каждое из которых содержит 2-4 пункта. Элементы меню Малевич, Ренуар, Моне оформите в виде пунктов-переключателей.
Контекстное меню содержит все картины с линиями, разделяющими типы. Назначьте клавиши быстрого доступа в соответствии с подчеркнутыми в таблице буквами и комбинации «горячих» клавиш. Программа в сделанном виде: Лабораторная работа №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. Щелкните на форме левой или правой кнопкой мыши. Убедитесь, что в обоих случаях открывается контекстное меню, содержащее два пункта — команды загрузки картинок. Задайте ту же самую процеду....
Характеристики лабораторной работы
Список файлов
