Компонент TMainMenu - Создайте проект «Географические карты» с пунктами меню, указанными в таблице: В зависимости от выбора типа карты должен открываться один из двух файлов. Элементы Физическая, Плотность населения, оформить в виде пунктов-переключателей
Описание
Цель работы: Познакомиться с компонентом TMainMenu. Научиться создавать меню для приложений.
/ задача из РК программа в Pascal Lazarus.
В архиве также файл с объяснениями работы программы. Тэги: Программа на Lazarus, PascalObject, Pascal, Delphi, Turbo Delphi, Pascal ABC / Анимация, ЛР, РК, ДЗ, 2023
Условия для программы, под которые она выполнена:
4.
- Создайте проект «Географические карты» с пунктами меню, указанными в таблице:
Файл | Континент | Тип карты |
Выход 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:
Caption | Name |
Файл | File1 |
Рисунки | Picture1 |
Солнечно | N1 |
Переменно | N2 |
Пасмурно | N3 |
Выход | Exit2 |
Выход | Exit1 |
Пункт Рисунки должен открывать подменю для этого нажмите комбинацию клавиш 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):
Caption | Name | Enabled | RadioItem | GrupIndex |
Размер | Size | true | false | 0 |
уменьшить | SizeMin | false | true | 1 |
нормальный | SizeNorm | false | true | 1 |
увеличить | SizeMax | false | true | 1 |
Во время работы приложения нужно динамически разрешать и запрещать пункты меню в зависимости от того, открыт графический файл или нет. Так как эти действия универсальны, оформим их в виде частного метода формы: в раздел 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 |
&Файл |
&Рисунки |
&Солнечно |
Пере&менно |
Пасмурн&о |
&Выход |
Рис. 5. Добавление клавиш быстрого доступа
Пример 2. Создайте проект «Календарь» с пунктами меню, указанными в таблице:
Файл | Времена года | Стиль |
Выход | Весна | Фото |
Лето | Рисунки | |
Осень | ||
Зима |
Решение. Создайте проект «Меню 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;
Аналогично создайте процедуры для пунктов Лето, Осень, Зима. Назначьте процедуры для команд контекстного меню. Процедуру для вызова контекстного меню возьмите из первого задания.
Задания для самостоятельной работы
- Создайте проект «Графические файлы» с пунктами меню, указанными в таблице:
Файл | Тип файла | Размер |
Выход | *.bmp | 50% |
*.jpg | 100% | |
*.gif | 200% |
Выход создайте комбинацию «горячих» клавиш Ctrl+X. Назначьте клавиши быстрого доступа в соответствии с подчеркнутыми в таблице буквами.
- Создайте проект «Художники» с пунктами меню, указанными в таблице:
Файл | Художники | Формат |
Выход | Казимир Малевич | 25% |
Огюст Ренуар | 50% | |
Клод Моне | 100% | |
Эдуард Мане | 300% |
- Создайте проект «Насекомые» с пунктами меню, указанными в таблице:
Файл | Насекомые | Размер |
Выход | Бабочки Ctrl+B | 33% |
Жуки Ctrl+J | 66% | |
Другие Ctrl+D | 100% |
- Создайте проект «Географические карты» с пунктами меню, указанными в таблице:
Файл | Континент | Тип карты |
Выход Ctrl+H | Австралия | Физическая |
Антарктида | Плотность населения | |
Африка | ||
Евразия | ||
Сев. Америка | ||
Ю. Америка |
- Создайте проект «Картинная галерея» с пунктами меню, указанными в таблице:
Файл | Тип | Художник |
Выход | Пейзаж Ctrl+B | Малевич |
Портрет Ctrl+C | Ренуар | |
Моне |
«горячих» клавиш.
- Создайте проект «Овощи-фрукты» с пунктами меню, указанными в таблице:
Файл | Овощи-фрукты | Размер |
Выход | Овощи Ctrl+O | Уменьшить |
Фрукты Ctrl+F | Увеличить |
- Создайте проект «Страны мира» с пунктами меню, указанными в таблице:
Файл | Континент | Размер |
Выход Ctrl+H | Австралия | 25% |
Антарктида | 50% | |
Африка | 100% | |
Евразия | 200% | |
Сев. Америка | ||
Ю. Америка |
- Создайте проект «Растения» с пунктами меню, указанными в таблице:
Файл | Растения | Размер |
Выход | Цветы | 10% Ctrl+D |
Деревья | 75% Ctrl+S | |
Лианы | 100% Ctrl+C | |
Кустарники | 200% Ctrl+Z |
«горячие» клавиши. Контекстное меню должно содержать все названия растений с линиями, разделяющими их тип. Назначьте клавиши быстрого доступа в соответствии с подчеркнутыми в таблице буквами.
- Создайте проект «Цветы» с пунктами меню, указанными в таблице:
Файл | Цвет | Тип |
Выход Ctrl+Z | Красный | Садовые |
Желтый | Полевые | |
Синий |
«Выход». Контекстное меню должно содержать все названия растений с линиями, разделяющими их тип. Назначьте клавиши быстрого доступа в соответствии с подчеркнутыми в таблице буквами.
- Создайте проект «Сказки» с пунктами меню, указанными в таблице:
Файл | Автор | Размер |
Выход | Пушкин | Увеличить в два раза |
Андерсен | Увеличить в три раза | |
Братья Гримм | Уменьшить в два раза |
Бажов | Уменьшить в три раза |
Контрольные вопросы
Показать/скрыть дополнительное описание
Лабораторная работа №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. Щелкните на форме левой или правой кнопкой мыши. Убедитесь, что в обоих случая....
Файлы условия, демо
Характеристики лабораторной работы
Список файлов
