Событие | Описание |
OnClick | Происходит при щелчке мышью на компоненте. |
OnDblClick | Происходит при выполнении двойного щелчка на компоненте. |
OnMouseDown | Нажатие клавиши мыши над компонентом. Возможно распознавание нажатой кнопки и координат курсора. |
OnMouseMove | Перемещение курсора мыши над компонентом. Возможно распознавание нажатой кнопки и координат курсора. |
OnMouseUp | Отпускание раннее нажатой кнопки мыши над компонентом. Возможно распознавание нажатой кнопки и координат курсора. |
OnEnter | Событие в момент получения элементом фокуса в результате манипуляции мышью, нажатия клавиш табуляции или программной передачи фокуса. |
OnExit | Событие в момент потери элементом фокуса. |
Для демонстрации рассмотренных событий поместите на форму компонент Label и три компонента Edit. Для событий формы напишите следующие обработчики:
Onclick: Label1.caption:=’Произошел щелчок по форме!’;
OndblClick: Label1.caption:=’Произошел двойной щелчок по форме!’;
OnMouseDown: if Button=mbLeft then Label1.caption:=’Нажата левая кнопка мыши!’;
if Button=mbRight then Label1.caption:=’Нажата правая кнопка мыши!’;
if Button=mbMiddle then Label1.caption:=’Нажата средняя кнопка мыши!’;
OnMouseMove: Label1.caption:=’Координата х=’+inttost(x)+’; Координата y=’+inttostr(y);
OnMouseUp: if Button=mbLeft then Label1.caption:=’Отпущена левая кнопка мыши!’;
if Button=mbRight then Label1.caption:=’Отпущена правая кнопка мыши!’;
if Button=mbMiddle then Label1.caption:=’Отпущена средняя кнопка мыши!’;
Для компонента Edit1 в событии OnEnter напишите: Label1.caption:=’Edit1 в фокусе!’;
В событии OnExit: Label1.caption:=’Edit1 потерял фокус!’;
Для компонента Edit3 в событии OnEnter напишите: Label1.caption:=’Edit3 в фокусе!’;
В событии OnExit: Label1.caption:=’Edit3 потерял фокус!’;
В событиях OnMouseDown, OnMouseUp, OnMouseMove помимо распознавания координат курсора и кнопки мыши можно определить какую вспомогательную клавишу пользователь нажал на клавиатуре. Для этого используется параметр Shift, который может принимать значения: ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble. Например: для события OnMouseDown формы напишите:
if (Button=mbLeft) and (ssAlt in Shift) then Label1.Caption:=’Нажата левая кнопка мыши вместе с Alt!’;
21. Обработка событий клавиатуры. Распознавание нажатых клавиш
Существует три события связанных с клавиатурой:
Событие | Описание |
OnKeyDown | Событие наступает при нажатии пользователем любой клавиши. Можно распознать нажатые клавиши, но нельзя распознать символ нажатой клавиши. |
OnKeyPress | Событие наступает при нажатии пользователем клавиши символа. Можно распознать только нажатый символ. |
OnKeyUp | Событие наступает при отпускании пользователем любой клавиши. Можно распознать нажатые клавиши, но нельзя распознать символ отпускаемой клавиши. |
Для распознавания нажатых клавиш в этих события используется параметр Key. В событиях OnKeyDown и OnKeyUp он является числовым, т. е. определяет код нажатой клавиши. В событии OnKeyPress он имеет тип Char и определяет нажатый символ.
Для примера напишите для Edit1 обработчики:
OnKeyDown: if Key=13 then edit2.setFocus; - означает что при нажатии клавиши Enter (эта клавиша имеет код 13) фокус передается в компонент Edit2.
OnKeyPress: if not (Key in [‘0’..’9’]) then Key:=#0; - допускает ввод только цифр, при нажатии другого символа он заменяется на пустой.
22. Компо ненты меню. Главное меню и контекстное всплывающее меню
Основное свойство – Items. Содержит разделы меню. Каждый раздел меню имеет свойства:
Caption – надпись раздела;
ShortCut – определяет клавишу быстрого доступа к разделу;
Default – определяет является ли данный раздел разделом по умолчанию, т. е. разделом, выполняемым при двойном щелчке на родительском разделе;
Break – используется в длинных меню, чтобы разбить список разделов на несколько столбцов;
Checked – будет ли в разделе отображаться маркер флажка, показывающий, что данный раздел выбран. В обработчике события OnClick такого раздела надо вставлять оператор MAutoSave. Checked:= not MAutoSave. Checked; где MAutoSave – имя раздела меню.
RadioItem – должен ли раздел работать в режиме радиокнопки, совместно с другими разделами, имеющими то же значение свойства GroupIndex;
Enabled – доступность;
Visible – видимость;
Bitmap – изображение в разделе;
ImageIndex – индекс изображения хранящегося в компоненте ImageList.
Для ввода разделительной линии между разделами, в свойство Caption ввести -. Для создания. Для создания в разделе подменю, нужно из контекстного меню данного раздела выбрать команду Create Submenu.
PopupMenu – всплывающее (контекстное) меню.
Оно всплывает, когда пользователь щелкнет правой кнопкой мыши по какому-либо компоненту. В отличие от главного меню, в приложении может быть несколько контекстных меню. Для каждого компонента контекстное меню задается свойством PopupMenu. Работа с ним аналогична работе с главным меню.
23. Управление формами. Основные свойства форм. Модальные формы
Основные свойства формы были раннее изучены. Поэтому рассмотрим способы управления приложением, содержащим несколько форм. Включение в проект новой формы осуществляется командой File | New Form. Для вывода имеющейся формы на экран используется команда View | Forms. По умолчанию все формы создаются автоматически при запуске приложения и первая из введенных в приложение форм считается главной. Главная форма отличается от прочих рядом свойств. Во-первых, именно этой форме передается управление в начале выполнения приложения. Во-вторых закрытие главной формы означает завершение выполнения приложения. В-третьих главная форма так же, как и любая другая, может быть спроектирована невидимой, но если все остальные формы закрыты, то главная форма становится в любом случае видимой.
Указанные выше условия, принятые по умолчанию могут быть изменены с помощью команды Project | Options | Forms. В списке Main Form можно выбрать главную форму. Пользуясь двумя нижними окнами можно установить, какие формы должны создаваться автоматически, а какие не должны. Для форм, которые были исключены из списка автоматически создаваемых надо вручную записать процедуру создания формы.
Методы Show и ShowMоdal можно применять только к невидимой в данный момент форме. Если форма выведена методом ShowModal, то пользователь не сможет переключиться на другую форму, пока не закроет эту. Модальные формы используются в большинстве диалоговых окон. Поведение модальной формы определяется ее основным свойством ModalResult. Оно доступно только во время выполнения приложения. При открытии формы методом ShowModal сначала свойство ModalResult=0. Как только при обработке каких-то событий на форме свойству ModalResult будут присвоено значение от 1 до 8, модальная форма закроется. А его значение можно будет прочитать как результат, возвращаемый методом ShowModal.
24. Создание приложений с интерфейсом множества документов
Типичным приложением с интерфейсом множества документов (MDI) является привычный всем Word. В приложении MDI имеется родительская (первичная) форма и ряд дочерних форм (называемых также формами документов). Окна документов могут создаваться самим пользователем в процессе выполнения приложения с помощью команд типа Окно | Новое. Число дочерних окон заранее неизвестно — пользователь может создать их столько, сколько ему потребуется. Окна документов располагаются в клиентской области родительской формы. Поэтому чаще всего целесообразно в родительской форме ограничиваться только главным меню, инструментальными панелями и, если необходимо, панелью состояния, оставляя все остальное место в окне для окон дочерних форм. При этом обычно окно родительской формы в исходном состоянии разворачивают на весь экран.
Из родительской формы можно управлять дочерними формами.
Дочернюю форму нельзя уничтожить пока не уничтожена родительская форма.
Для создания приложения MDI необходимо спроектировать родительскую и дочернюю формы. В родительской форме свойство FormStyle устанавливается в fsMDIForm, а в дочерней — в fsMDIChild. Поскольку дочерние окна будет создавать сам пользователь в процессе выполнения приложения, дочернюю форму необходимо исключить из числа создаваемых автоматически (Project | Options | Forms).
Рассмотрим теперь, как можно сделать обработчик команды, по которой пользователь задает в родительском окне создание нового окна документов — нового экземпляра дочерней формы. Этот обработчик может иметь вид:
Application. CreateForm(TForm2, Form2);
Form2.Show;
При закрытии дочерних окон они в действительности не закрываются, а остаются в свернутом виде, поэтому чтобы этого не происходило следует в событии OnClose дочерней формы записать команду: action:=cafree;
В родительской форме имеется ряд свойств, позволяющих управлять дочерними окнами. Все они доступны только для чтения и только во время выполнения.
Свйойство MDIChildCount определяет количество открытых окон.
Свойство MDIChildren[i] дает доступ к i-му окну (в порядке их создания).
Ряд методов позволяющих упорядочивать дочерние окна: Cascade, Title, ArrangeIcons.
25. Требования к интерфейсу пользователя приложений для Windows
Под графическим интерфейсом пользователя (Graphical User Interface – GUI) подразумевается тип экранного представления, при котором пользователь может выбирать команды, запускать задачи и просматривать списки файлов, указывая на пиктограммы или пункты в списках меню, показанных на экране. Действия могут, как правило выполняться с помощью мыши.
Для пользователя одним из принципиальных преимуществ работы с Windows является то, что большинство имеющихся приложений выглядят и ведут себя сходным образом. Для успеха, разрабатываемое вами приложение так же должно удовлетворять определенным критериям, предъявляемым к приложениям Windows:
Предпочтение отдавать интерфейсу с одним окном. Если все таки приложение с интерфейсом множества документов, то следует использовать окна одинакового размера, предусмотреть вывод заголовков в дочерних окнах и т. д. Использовать ограниченный набор цветов и уделять внимание их правильному сочетанию. Применять стандартные шрифты и предусмотреть возможность выбора шрифтов пользователем. Использовать стандартные меню и размещать их разделы в соответствии с общепринятым стандартом. Каждое окно должно быть тщательно продумано и скомпоновано. Управляющие элементы и функционально связанные с ними компоненты экрана должны быть зрительно объединены в группы, заголовки которых коротко и четко поясняют их назначение. Определить последовательность табуляции оконных компонентов. Предусмотреть подсказки и контекстно-зависимые справки.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 |


