Пользовательские процедуры и функции — КиберПедия 

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Пользовательские процедуры и функции

2017-06-11 259
Пользовательские процедуры и функции 0.00 из 5.00 0 оценок
Заказать работу

Пользовательские процедуры и функции могут быть записаны в процедуре обработчика какого-либо события. В этом случае эти подпрограммы могут быть вызваны только из этого обработчика события. Если необходимо, чтобы пользовательская процедура или функция была доступна из любой процедуры модуля, то надо в интерфейсной части модуля в секции Public класса TForm1 объявить прототип подпрограммы, а в секции реализации записать тело подпрограммы. Например, для создания функции вычисления факториала, надо выполнить следующие действия:

· в секции Public класса TForm1 записываем заголовок функции:

Function Factorial(N:Integer):int64;

· далее надо поставить курсор в любое место заголовка и нажать три клавиши: Ctrl+Shift+C;

· в разделе Implementation появится пустая заготовка описания функции:

function TForm1.Factorial(N:Integer):Int64;

begin

….

end;

· в пустую заготовку надо добавить операторы, вычисляющие n!:

Function Tform1.Factorial(N:Integer):Int64;

Var I:Integer;

Begin

Result:=1;

For I:=2 to N do

Result:=Result*I

end;

В данном случае функция Factorial принадлежит TForm1 и, следовательно, является методом данного класса.

Процедура ShowMessage

Сообщения, появляющиеся при работе программы, можно разделить на те, которые программист предусмотрел, и системные сообщения, например, при попытке закрыть не сохраненный проект. Второй тип сообщений, особенно при указании ошибок, часто имеет непонятный для обычного пользователя вид. Желательно самостоятельно просчитывать все возможные случаи и самостоятельно обрабатывать эти ситуации.

Можно разделить все программные сообщения на: информационные сообщения ("Загрузка данных завершена"), предупреждающие сообщения ("Файл модифицирован. Сохранить?"), сообщения об ошибке ("Файл данных не найден").

Сообщение можно вывести с помощью процедуры ShowMessage (const Msg: String). Эта процедура выводит окно с сообщением и кнопкой OK. В заголовке окна содержится название исполняемого файла. Изначально это Project1, в дальнейшем его можно изменить. Строка Msg будет выводиться как текст сообщения.

Например,

ShowMessage('Привет!');

Результат представлен на рис.20.

 

 

Рис. 20

На этой команде работа процедуры (не всей программы!) приостанавливается. Пока пользователь не нажмет на кнопку Ok, работа с приложением становится невозможным, т.е. нельзя «добраться» до окна, расположенного позади, т.е. это сообщение открывается модально.

Функция MessageDlg

MessageDlg (Msg, AType, Abuttons, HelpCtx) - функция, типа Integer, показывающая в центре экрана диалоговое окно сообщения и дающая возможность пользователю ответить на сообщение.

Msg - параметр типа String, отвечающий за выводимый текст сообщения.

Параметр AType может принимать одно из несколько значений. От этих значений зависит содержимое заголовка и иконка в левом верхнем углу окна (табл. 19).

Таблица 19

Тип сообщения Описание Вид окна
mtWarning Можно использовать в предупреждающих сообщениях. Например, "Вы действительно желаете удалить данные?"
mtError Обычное окошко вывода сообщения об ошибки.
mtInformation Какая-нибудь информация.
mtConfirmation Это запрос. Например, запрос на сохранение перед выходом.
mtCustom Это сообщение полностью аналогично ShowMessage

AButtons - параметр, который задает набор кнопок в окне и может принимать произвольные комбинации из значений:

§ кнопка Yes - mbYes,

§ кнопка Ok - mbOk,

§ кнопка No - mbNo,

§ кнопка Cancel - mbCancel,

§ кнопка Abort - mbAbort,

§ кнопка Retry - mbRetry,

§ кнопка Ignore - mbIgnore,

§ кнопка All - mbAll,

§ кнопка Help - mbHelp.

Список из необходимых перечисленных кнопок должен быть заключен в квадратные скобки.

MessageDlg('Большое значение', mtConfirmation, [mbYes, mbNo],0);

Кроме перечисления отдельных кнопок, есть возможность задать часто используемым сочетаниям кнопок значения специальных констант:

§ кнопки OK и Cancel - mbOkCancel,

§ кнопки Yes, No и Cancel - mbYesNoCancel,

§ кнопки Abort, Retry и Ignore - mbAbortRetryIgnore.

Эти константы не надо брать в скобки, так как они являются предопределенными множествами.

Поскольку кнопки в сообщении могут быть разные, то MessageDlg является функцией, возвращающей результат нажатой кнопки. Соответственно указанным выше кнопкам результат может принимать следующие значения:

mrYes = 6

mrNo = 7

mrOK = 1

mrCancel = 2

mrAbort = 3

mrRetry = 4

mrIgnore = 5

mrAll = 8

Кнопка Help не имеет никакого эквивалентного возвращаемого значения, потому что она не заканчивает диалог. Параметр HelpCtx задает тему справки. Ее можно вызвать во время показа диалогового окна клавишей F1. Обычно этот параметр устанавливается равным нулю и справка не выводится.

Пример 6.1. Необходимо спросить у пользователя о дальнейших действиях перед выходом из программы:

· Сохранить файл;

· Не сохранять файл;

· Продолжить редактирование (рис. 21)

………………….

Var R:Integer; // переменная, в которой хранится результат

R:=MessageDLG('Сохранить файл?', mtConfirmation, [mbYes,mbNo,mbCancel],0);

If R=mrYes Then // если нажата кнопка Yes

Begin

… // сохраняем файл и завершаем программу

End;

If R=mrNo Then // если нажата кнопка No

Begin

… // завершаем работу программы без сохранения

End;

If R=mrCancel Then // если нажата кнопка Cancel

Begin

… // продолжаем работу без сохранения

End;

или

Var R:Integer; // переменная, в которой хранится результат

R:=MessageDLG('Сохранить файл?', mtConfirmation, [mbYes,mbNo,mbCancel],0);

Case R of

6: Begin // если нажата кнопка Yes

… // сохраняем файл и завершаем программу

End;

7: Begin // если нажата кнопка No

… // завершаем работу программы без сохранения

End;

2: Begin // если нажата кнопка Cancel

… // продолжаем работу без сохранения

End;

End;

Рис. 21

Функция InputBox

InputBox(ACaption, APrompt, ADefault) – функция типа String, выводящая на экран диалоговое окно для ввода строки пользователем.

Параметр ACaption определяет заголовок диалогового окна.

APrompt – текст, который будет отображен над полем редактирования (подсказка пользователю о том, что конкретно необходимо ввести в поле редактирования).

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

Если пользователь нажимает кнопку OK, то функция возвращает строку, введенную в поле редактирования. Если пользователь нажимает кнопку Cancel или клавишу клавиатуры Esc, то функция возвращает строку, определенную по умолчанию (ADefault). Если в программе необходимо определить, какую конкретно из кнопок (OK или Cancel) нажал пользователь, то в таком случае надо использовать функцию InputQuery.

Например:

var fio: string; age: integer;… fio:= InputBox('ФИО', 'Как Вас зовут', 'Не задано'); age:= StrToInt(InputBox('Возраст', 'Сколько Вам лет',' '));…Вид диалоговых окон показан на рис.22 (а, б). а б

Рис. 22

 


Классы общего назначения


Поделиться с друзьями:

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.017 с.