- •2. Визуальные компоненты
- •2.1. Свойства
- •2.2. События
- •2.3. Методы
- •If Edit1.CanFocus then Edit1.SetFocus; {перед получением фокуса производится проверка на возможность передачи фокуса компоненту}
- •3. Работа с текстом
- •3.1. Использование надписей
- •3.2. Однострочный редактор
- •3.3. Общие свойства, события и методы компонентов редактирования
- •3.4. Класс tStrings
- •3.5. Многострочный редактор
- •3.6. Использование списков
- •3.7. Таблица String Grid
- •4. Кнопки и переключатели
- •4.1. Работа с кнопками
- •4.1.1. Стандартная кнопка
- •4.1.2. Кнопка с рисунком
- •4.2. Работа с переключателями
- •4.2.1. Переключатель с независимой фиксацией
- •If CheckBox1.Checked then MessageDlg ('Время истекло! ', mtError, [mbОк], 0);
- •4.2.2. Переключатель с зависимой фиксацией
- •4.3. Объединение элементов управления
- •5. Использование форм
- •5.1. Свойства, методы и события форм
- •5.2. Организация взаимодействия форм
- •5.3. Особенности модальных форм
- •5.4. Шаблоны форм
- •5.5. Процедуры и функции, реализующие диалоги
- •5.6. Стандартные диалоги
- •If OpenDialog1.Execute then // при отмене диалога открытие файла не происходит
- •If SaveDialog1.Execute then { Получить имя файла }
- •6.Главное и контекстное меню, панели инструментов
- •6.1. Класс tMenuItem
- •6.2. Cоздание главного и контекстного меню
- •6.3. Динамическая настройка меню
- •6.4. Панели инструментов
- •7. Создание графических изображений
- •7.1. Классы для работы с графикой
- •7.2. Основные компоненты для размещения изображений
- •7.3. Типы графических объектов
- •7.4. Создание диаграмм
- •8. Печать объектов
- •8.1. Класс tPrinter
- •8.2. Печать текста
- •Var fPrn: Text; // объявлена переменная типа Text.
- •8.3. Диалоговые окна для работы с принтером
- •8.4. Печать графических изображений
- •8.4.1. Печать форм
- •8.4.2. Печать диаграмм
- •9. Работа с датами
- •9.1. Преобразование даты
- •9.2. Компоненты для ввода дат
- •10. Сохранение параметров программы.
- •Ini : tIniFile; //объявляем переменную типа inifile
- •Ini : tIniFile; //объявляем переменную типа inifile
- •11. Обработка исключительных ситуаций
- •Var f: File; begin AssignFile(f, 'Somefile.Ext'); try // оператор, в котором возможна ошибка Reset(f); // работы с файлом finally CloseFile(f) end;
6.2. Cоздание главного и контекстного меню
Для создания и изменения меню в процессе разработки приложения используются компоненты MainMenu (главное меню) или РорирМепи (контекстное меню). Далее в Конструкторе меню с использованием команд его контекстного меню добавляют (Insert) и удаляют (Delete) пункты меню, создают подменю (Create Submenu), выбирают меню (Select Menu).
При проектировании главного меню на форме видны компонент MainMenu и соответствующая ему строка меню. Отображаемая строка меню выглядит и ведет себя так же, как и при выполнении программы. Для перехода на этапе проектирования приложения в процедуру обработки события OnClick пункта меню следует выбрать этот пункт.
Контекстное меню РорирМепи содержит команды, влияющие на тот объект, для которого вызвано это меню. Основные _______свойства компонента:
• AutoPopup типа Bооlеаn – определяет появление контекстного меню при щелчке правой кнопки мыши и размещении указателя на компоненте, использующем это меню. Если свойство AutoPopup равно True (по умолчанию), то контекстное меню при щелчке мыши появляется автоматически. Если свойство AutoPopup имеет значение False, то появления меню не происходит. Однако в этом случае можно активизировать меню программно, используя метод Popup. Процедура Popup (X, Y: Intеgеr), где X и Y – координаты меню относительно левого верхнего угла экрана монитора, выводит на экран указанное контекстное меню, например, PopupMenu1.Popup(200, 200);
• Alignment типа TPopupAlignment – определяет место появления контекстного меню по отношению к указателю мыши: paLeft – указатель определяет левый верхний край меню (по умолчанию); paCenter – указатель определяет для меню центр по горизонтали; paRiqht – указатель определяет правый верхний край меню.
Чтобы контекстное меню появлялось при щелчке на компоненте, необходимо его свойству РорuрМеnu присвоить в качестве значения имя требуемого контекстного меню.
Пример задания контекстного меню для формы:
Form1.PopupMenu := PopupMenu1;
6.3. Динамическая настройка меню
Кроме создания и настройки меню при создании приложения, динамически непосредственно при выполнении приложения можно создать новое меню любого типа или удалить его; заблокировать или разблокировать отдельные пункты; добавить или удалить пункт меню; изменить название пункта; переключить форму с одного главного меню на др. Эти возможности обеспечиваются установкой свойствам пунктов меню требуемых значений и вызовом соответствующих методов.
Процедура Add (Item: TMenuItern) добавляет определяемый параметром Item элемент в конец подменю, которое вызвало этот метод. Если подменю не существовало, то оно создается.
Пример добавления пункта меню:
procedure Form1.mnuItemAddClick (Sender: TSender);
var NewItem: TMenuItem
begin
NewItem := TMenuItem.Create (Self); // предварительное создание пункта конструктором
NewItem.Caption := 'Новый элемент'; // заголовок добавляемого пункта
mnuFile.Add(NewItem); // Добавление нового пункта в конец списка команд меню
еnd;
Процедура Insert (Index: Integer; Item: TMenuItem) добавляет новый пункт меню на указанное положение. Параметр Index определяет позицию в массиве элементов меню, на которую вставляется новый пункт. Если значение параметра Index выходит за пределы диапазона то возникает ошибка.
Процедура Delete (Index: Integer) удаляет указанный пункт меню. Если удаляемый пункт имеет подпункты, то они также удаляются.
Пример удаления пункта меню:
procedure Form1.mnuItemDeleteClick(Sender :TSender);
begin
if mnuFile.Items[2].Caption = 'Второй элемент' then mnuFile.Delete(2);
end;
Удаляемый пункт имеет заголовок ‘Второй элемент’ и находится на второй позиции.
Предварительно проверяется, действительно ли удаляется пункт с нужным названием.
Форма может иметь более одного главного меню. Это используется, например, в случае, когда одно из них содержит заголовки на английском языке, а другое – на русском. Для реализации такой возможности на форму помещают два компонента MainMenu и подготавливают соответствующие меню. После этого при выполнении программы возможно подключение к форме любого из этих меню, используя свойство Меnu формы.
Пример переключения между двумя главными меню:
if Form1.Menu = EnglishMenu
then Form1.Menu := RussianMenu
else Form1.Menu := EnglishMenu;