Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методичка Фролов

.pdf
Скачиваний:
15
Добавлен:
14.03.2016
Размер:
840.19 Кб
Скачать

ofShowHelp – отображает в диалоговом окне кнопку «Справка».

2.SaveDialog предназначен для создания окна диалога «Сохранить файл как...». На следующем примере видно, насколько похоже использо-

вание в программе SaveDialog и OpenDialog.

begin

if SaveDialog2.Execute then begin

AssignFile(ResultFile, SaveDialog2.FileName);

CloseFile(ResultFile); end;

end;

3.OpenPictureDialog предназначен для создания окна диалога «Открыть рисунок». От окон, открываемых компонентами OpenDialog и SaveDialog,

окна, открываемые OpenPictureDialog и SavePictureDialog, отличаются возможностью просматривать изображения в процессе выбора файла.

4.SavePictureDialog предназначен для создания окна диалога «Сохранить рисунок как...».

5.FontDialog предназначен дли создания окна диалога «Шрифты». Основное свойство компонента – Font, в котором можно задать начальные установки атрибутов шрифта и прочесть значения атрибутов, выбранные пользователем в процессе диалога. Приведем пример применения компонента FontDialog, который отвечает за изменение атрибутов шрифта в компоненте Memo:

if FontDialogXX.Execute then MemoYY.Font.Assign(FontDialogXX.Font);

71

6. ColorDialog предназначен для создания окна диалога «Цвет». Основное свойство компонента ColorDialog – Color. Это свойство соответствует тому цвету, который выбрал в диалоге пользователь. Если при вызове диалога желательно установить некоторое начальное значение цвета, это можно сделать, предварительно установив Color. Свойство CustomColors типа TStrings позволяет задать цвета дополнительной палитры. Каждый цвет определяется строкой вида <Имя цвета>=<шестнадцатиричное представление цвета>. Приведем пример применения компонента ColorDialog, который отвечает за изменение цвета фона в компоненте Memo:

if ColorDialogXX.Execute then MemoYY.Color := ColorDialogXX.Color;

7.PrintDialog вызывает диалоговое окно печати. В нем пользователь может выбрать принтер и установить его свойства, указать число копий и последовательность их печати, печатать в файл или непосредственно на принтер, выбрать печатаемые страницы или печатать только выделенный фрагмент. Компонент PrintDialog не осуществляет печать. Он только позволяет пользователю задать атрибуты печати.

8.PrinterSetupDialog вызывает диалоговое окно установки принтера. Диалог выполняет операции по установке принтера, на котором будет производиться печать, и заданию его свойств. Этот диалог не возвращает никаких параметров.

9.FindDialog предназначен для создания окна диалога «Найти». Компоненты FindDialog и ReplaceDialog, вызывающие диалоги поиска и замены фрагментов текста, очень похожи и в основном имеют одинаковые свойства.

Свойство FindText позволяет пользователю задать текст, подлежащий поиску или замене.

Свойство Position служит для задания положения левого верхнего угла

72

диалогового окна и представлено типом TPoint – записью, содержащей поля X (экранная координата по горизонтали) и Y (экранная координата по вертикали).

Свойство Options содержит следующие опции:

frDisableMatchCase – делает недоступным индикатор «С учетом регистра» в диалоговом окне;

frDisableUpDown – делает недоступными в диалоговом окне кнопки «Вверх» и «Вниз» группы «Направление», определяющие направление поиска;

frDisableWholeWord – делает недоступным индикатор «Только слово целиком» в диалоговом окне;

frDown – выбирает кнопку «Вниз» группы «Направление» при открытии диалогового окна. Если эта опция не установлена, то выбирается кнопка «Вверх»;

frFindNext – эта опция включается автоматически, когда пользователь в диалоговом окне щелкает на кнопке «Найти далее», и выключается при закрытии диалога;

frHideMatchCase – удаляет индикатор «С учетом регистра» из диалогового окна;

frHideWholeWord – удаляет индикатор «Только слово целиком» из диалогового окна;

frHideUpDown – удаляет кнопки «Вверх» и «Вниз» из диалогового

окна;

frMatchCase – этот флаг включается и выключается, если пользователь включает и выключает опцию «С учетом регистра» в диалоговом окне. Можно установить эту опцию по умолчанию во время проектирования, чтобы при открытии диалога она была включена;

frShowHelp – задает отображение кнопки «Справка» в диалоговом

окне;

73

frWholeWord – этот флаг включается и выключается, если пользователь включает и выключает опцию «Только слово целиком» в диалоговом окне. Можно установить эту опцию по умолчанию во время проектирования, чтобы при открытии диалога она была включена.

Компоненты FindDialog и ReplaceDialog не осуществляют ни поиска, ни замены. Они только обеспечивают интерфейс с пользователем, а поиск и замену необходимо осуществлять программно. Для этого можно воспользоваться событием OnFind, происходящим, когда пользователь нажал в диалоге кнопку «Найти далее», и событием OnReplace, возникающим, если пользователь нажал кнопку «Заменить» или «Заменить все». В событии OnReplace узнать, какую именно кнопку нажал пользователь, можно по значениям флагов frReplace и frReplaceAll.

10. ReplaceDialog предназначен для создания окна диалога «Заменить». Его отличие от компонента FindDialog заключаются в следующих свойствах.

Свойство ReplaceText позволяет пользователю задать текст, который должен заменять текст из свойства FindText.

В свойстве Options содержатся следующие характерные для

ReplaceDialog опции:

frReplace – этот флаг устанавливается системой, чтобы показать, что только текущее найденное значение FindText должно быть заменено зна-

чением ReplaceText;

frReplaceAll – этот флаг устанавливается системой, чтобы показать, что все найденные значения FindText должны быть заменены значениями

ReplaceText.

11. PageSetupDialog предназначен для создания окна диалога задания параметров страниц.

74

2.6. Свойства объектов в Delphi

Свойства служат двум главным целям. Во-первых, они определяют внешний вид объектов, во-вторых, свойства определяют их поведение.

Существует несколько типов свойств:

простые свойства. Это свойства, значения которых являются числами или строками. Например, свойства Left и Top принимают целые значения, определяющие положение левого верхнего угла компонента или формы. Свойства Caption и Name представляют собой строки и определяют заголовок и имя компонента или формы.

перечислимые свойства. Это свойства, которые могут принимать значения из предопределенного набора. Простейший пример – свойство типа Boolean, которое может принимать значения True или False.

вложенные свойства. Это свойства, которые поддерживают вложенные значения или объекты. Инспектор Объектов отображает знак «+» слева от названия таких свойств. Существует два вида вложенных свойств: множества и комбинированные значения. Инспектор Объектов отображает множества в квадратных скобках. Если множество пусто, оно отображается как «[]». Установки для вложенных свойств вида «множество» обычно имеют значения типа Boolean. Наиболее распространенным примером такого свойства является свойство Style с вложенным множеством булевых значений. Комбинированные значения отображаются в Инспекторе Объектов как набор некоторых величин, каждый со своим типом данных.

Среда программирования Delphi позволяет манипулировать свойствами объектов как в режиме разработки программы, так и в режиме ее выполнения.

В режиме разработки манипулирование свойствами осуществляется с помощью Дизайнера Форм или на страничке «Properties» Инспектора Объектов. Например, для того чтобы изменить свойства Height (высоту) и

75

Width (ширину) кнопки, достаточно «зацепить» мышкой за любой ее угол и раздвинуть до нужного представления. Того же результата можно добиться, подставив новые значения свойств Height и Width в окне Инспектора Объектов.

В режиме выполнения все изменения значений свойств объектов должны осуществляться путем прямой записи строк кода на языке программирования. Для этого необходимо написать следующую строчку кода: Объект.Свойство := значение.

2.7. События объектов в Delphi

Программирование, ориентированное на события – неотъемлемая черта Windows. Среда программирования Delphi предоставляет полный доступ к подструктуре событий, реализованной в Windows. С другой стороны, Delphi упрощает программирование обработчиков таких событий.

Обработчик события – это набор команд, которые выполняются при вызове события. Создать обработчик можно следующим образом: дважды щелкнуть по полю рядом с названием события в Инспекторе Объектов. После этого откроется Окно Редактора Исходного Текста с заготовкой обработчика.

В программном коде обработчик представляет из себя процедуру, т.е. набор команд и является мини-программой. Обработчик содержит раздел реализации и раздел описаний, который по умолчанию пуст.

После того, как обработчик создан, на вкладке Events рядом с названием события появляется название обработчика для него. Это название также можно вписать вручную или выбрать из списка, в котором содержатся названия всех обработчиков. Именуются обработчики так: берется имя объекта и к нему дописывается название события. Например, если есть кнопка Button1 и ее событие OnClick, то обработчик получит название

76

Button1Click.

У событий существует от одного до нескольких параметров. Из параметров можно узнать дополнительные данные и условия, при которых произошло событие. Параметр, который встречается практически во всех событиях – Sender. Он указывает на объект, который данное событие инициировал. Использовать его удобно в случае с несколькими объектами, у которых установлен один обработчик одного и того же события.

Рассмотрим наиболее часто используемые события различных объектов:

OnClick – щелчок мышью по объекту. У кнопки событие также срабатывает, если нажать Enter или Пробел в тот момент, когда фокус ввода находится на кнопке;

OnDblClick – двойной щелчок мышью;

OnContextPopup – при вызове контекстного меню объекта, т. е. при щелчке правой кнопкой мыши. Среди параметров данного события можно отметить: MousePos – координаты курсора в момент щелчка. Координата по X доступна как MousePos.X, а по Y – как MousePos.Y;

OnEnter – момент, когда объект получает фокус ввода (фокус ввода обычно изображается пунктирной рамкой на объекте; в поле ввода – это курсор; фокус один на все приложение, т. е. работать одновременно можно лишь с одним объектом);

OnExit – момент, когда объект теряет фокус ввода;

OnMouseDown – при нажатии кнопки мыши. Параметр Button – нажатая кнопка (mbLeft – левая кнопка, mbRight – правая, mbMiddle – средняя). Shift – множество, указывающее, какие функциональные клавиши были зажаты при щелчке. Таким образом можно отслеживать, например, нажатия при зажатых Ctrl+Alt и т. п. X, Y – координаты курсора во время нажатия (относительно левого верхнего угла компонента);

OnMouseUp – событие, аналогичное OnMouseDown. Происходит при

77

отпускании кнопки мыши. Пример комбинации этих двух событий – графический редактор: когда кнопка мыши нажата, происходит рисование, а когда отпущена – не происходит;

OnMouseMove – событие мыши, происходящее при перемещении курсора над объектом. X, Y – координаты нового положения, Shift – множество нажатых функциональных клавиш;

OnKeyDown – при нажатии какой-либо клавиши клавиатуры в тот момент, когда фокус ввода находится на объекте. Key – код нажатой клавиши, Shift – множество функциональных клавиш;

OnKeyUp – при отпускании клавиши клавиатуры;

OnKeyPress – при нажатии клавиши, которая печатает какой-либо символ (буква, цифра, знак). Key – уже не код клавиши, а сам символ (тип данных: Char – один символ);

OnResize – при изменении размеров объекта;

OnPaint – при отрисовке объекта на экране (например, формы);

OnCreate – при создании формы. Обычно в обработчик этого события помещают действия, которые должны произойти при запуске программы. Но при запуске это выполнится только если форма является главной в приложении и при условии, что форма создается автоматически. Если в приложении одна форма – она и является главной;

OnClose – при закрытии формы;

OnCloseQuery – при попытке закрыть форму. Это событие можно использовать, если нужно заблокировать закрытие формы. В обработчике присутствует параметр CanClose: логическое значение, тип данных – Boolean. Если после выполнения обработчика значение переменной CanClose окажется False, то закрытие формы произведено не будет. Значение этой переменной устанавливается программно;

OnDestroy – при уничтожении формы (после закрытия форма уничтожается и освобождается занятая ею память);

78

OnShow – при показе формы на экране;

OnHide – при скрытии формы с экрана;

OnActivate – момент, когда форма становится активной, т.е. когда ей передается фокус ввода (например, когда пользователь щелкнул по форме);

OnDeactivate – момент, когда форма теряет фокус;

OnChange – при изменении чего-либо (например, у поля ввода TEdit это событие срабатывает, когда изменяется текст в этом поле).

2.8.Некоторые приемы программирования в Delphi

Дальнейшее знакомство с программированием в среде Delphi продолжим, разбирая примеры, взятые из исходного кода программ «Оптимизация трех стадий токарной обработки» [17] и «Расчет усилия зажима заготовки при токарной обработке» [18].

2.8.1. Обработка исключительных состояний в Delphi

Структурная обработка исключительных ситуаций – это система, позволяющая разработчику при возникновении ошибки (исключительной ситуации) связаться с кодом программы, подготовленным для обработки такой ошибки. Это выполняется с помощью языковых конструкций, которые как бы «охраняют» фрагмент кода программы и определяют обработчики ошибок, которые будут вызываться, если что-то пойдет не так в «охраняемом» участке кода. Данная система называется структурной, так как обработка ошибок определяется областью «защищенного» кода и выполнение программы может перейти только на обработчик исключительной ситуации активной программы, а не на случайный участок кода.

Существует два типа защищенных участков:

try..except;

79

try..finally.

Первый тип используется для обработки исключительных ситуаций. Второй – если необходима уверенность в том, что ресурсы, занятые приложением, освободятся в любом случае. Код, расположенный в части finally, выполняется в любом случае, даже если возникает исключительная ситуация.

Синтаксис использования данных конструкций следующий:

try..except:

try..finally:

try

try

Выражение 1;

Выражение 1;

Выражение 2;

Выражение 2;

...

...

Выражение n;

Выражение n;

except

finally

on Исключение 1 do Выражение;

Выражение 1;

on Исключение 2 do Выражение;

...

Выражение m;

on Исключение m do Выражение;

end;

else

 

Выражение 1;

 

 

Выражение k;

 

end;

 

В конструкции, назначающей определенную обработку для конкретной исключительной ситуации (on Исключение do Выражение), после резервного слова on указывается класс исключительной ситуации, а после do следует собственно код обработки данной ошибки. Если возникшая ис-

80