Диалог это подпрограмма, используемая для ввода или вывода данных
ü диалоги находятся в двух библиотеках Dialogs и Windows
ü диалоги имеют входные и выходные параметры
ü при вызове диалога появляется окно с изображением входных параметров
ü ввод (если он предусмотрен) осуществляется в специальной строке
ü окно закрывается нажатием кнопки на его поверхности
ü обычно диалоги являются функциями, имена которых возвращают важную информацию
Рассмотрим некоторые диалоги библиотеки Dialogs.
Функция InputBox(заголовок, текст, начальное значение): результат ввода
Все три параметра являются строковыми. Например, следующий вызов функции
S:=InputBox('Ввод','Введите целое число','3');
приведёт к появлению окна
В центре окна расположена строка ввода. Ввод завершается нажатием одной из кнопок. Результатом ввода служит строка, которая является значением функции.
Процедура ShowMessage('текст')
Выводит строку на экран, например,
ShowMessage('Вы ввели число 3')
организует следующее окно
Кнопка служит для закрытия окна.
Процедура ShowMessagePos('текст', X, Y)
Делает то же, размещая на экране окно по координатам (X, Y)
При работе с диалоговыми окнами проходится менять тип данных от строковых к числовым и наоборот. Это сопряжено с ошибками, которые завершаются аварийной остановкой программы. В Delphy существуют особые программные структуры, позволяющие «отловить» и обработать ошибку, не останавливая программы. Одна из них образует конструкцию с ключевыми словами
Try (попытка), Except (исключение), End (завершение)
Словом Try пишется перед тем фрагментом программы, в котором предполагается возникновение ошибки, а Except после него. Если ошибка произойдёт в одном из операторов между Try и Except, то управление будет передано секции между Except и End (это блок обработки ошибки). Затем программа продолжится от End.
Если ошибки не произойдёт, то по достижении Except управление перейдёт сразу к End.
program Dialog;
//==================================
//Использование оконного ввода/вывода
// Обработка ошибок
//==================================
{$APPTYPE CONSOLE}
uses
Dialogs, //Подключение оконных диалогов
//InputBox, ShowMessage, ShowMessagePos
SysUtils;
Var
S:String;
i:Integer;
begin
S:=InputBox('Ввод','Введите целое число',S);
Try //Готовимся к появлению ошибки
i:=StrToInt(S); //Здесь место возможной ошибки
ShowMessage('Вы ввели число '+IntToStr(i));
Except //Начало блока обработки ошибок
ShowMessage('Вы ввели не правильное данное');
End; //Конец блока
End.
Библиотека Windows содержит функцию
MessageBox(0, текст, заголовок, значки и кнопки): номер нажатой кнопки
Первым параметром является 0. Два других являются символьными массивами особого типа PChar. Последний параметр содержит двоичный код с информацией о размещении значков и кнопок в окне. Значением функции служит число с номером нажатой кнопки. Например, вызов функции с параметрами
i:=MessageBox(0, 'Нажмите одну из кнопок', 'Выбор варианта',
MB_ICONQUESTION+
MB_YESNOCANCEL+
MB_DEFBUTTON2);
образует окно
Включение иконки и набора кнопок с одной выделенной определяются значением последнего параметра.
Эта функция вернёт значение, соответствующее номеру нажатой кнопки.
Ниже приводится информация для задания параметров и анализа значения функции.
Кнопки:
MB_ABORTRETRYIGNORE - кнопки: Прервать, Повтор, Пропустить
MB_OK - кнопка: OK (по умолчанию)
MB_OKCANCEL - кнопки: OK, Отмена
MB_RETRYCANCEL - кнопки: Повтор, Отмена
MB_YESNO - кнопки: Да, Нет
MB_YESNOCANCEL - кнопки: Да, Нет, Отмена
Иконки:
MB_ICONHAND - крест в круге
MB_ICONSTOP
MB_ICONERROR
MB_ICONQUESTION - вопрос в круге
MB_ICONEXCLAMATION - восклицательный знак в треугольнике
MB_ICONWARNING
MB_ICONASTERISK - i в круге
MB_ICONINFORMATION
Выбор кнопки по умолчанию:
MB_DEFBUTTON1
...
MB_DEFBUTTON4
Возвращаемые значения:
IDOK = 1 - нажата кнопка OK
IDCANCEL = 2 - нажата кнопка Отмена
IDABORT = 3 - нажата кнопка Прервать
IDRETRY = 4 - нажата кнопка Повтор
IDIGNORE = 5 - нажата кнопка Пропустить
IDYES = 6 - нажата кнопка Да
IDNO = 7 - нажата кнопка Нет
Пример использования диалога.
program Wind;
{$APPTYPE CONSOLE}
uses
Windows, //Для использования диалога MessageBox
Dialogs,
SysUtils;
Var
S:String;
i:Integer;
begin
S:='Нажмите одну из кнопок';
i:=MessageBox(0, Pchar(S), 'Выбор варианта',
MB_ICONQUESTION+
MB_YESNOCANCEL+
MB_DEFBUTTON2);
ShowMessage('Результат '+IntToStr(i));
End.
Билет №21:
Класс
Что такое класс
ü это структура подобная записи, объединяющая в одно целое данные (свойства) и подпрограммы (методы) их обработки
ü процесс объединения свойств и методов в один класс называется инкапсуляцией
ü формирование класса удобно тогда, когда над группой обособленных данных требуется выполнить уникальные действия
ü по способу описания класс напоминает модуль: в его разделе Type пишется заголовок (определяется тип класса), а ниже описываются методы в виде подпрограмм
ü по окончании формального описания класса в разделе Var формируются переменные данного класса, которые называются объектами
ü объекты используются аналогично записям
ü на основании одних классов могут разрабатываться другие, в которых либо появляются новые свойства и методы (наследование), либо заменяются старые (полиморфизм)
Как описывается класс
Класс имеет заголовок (интерфейс), в котором указываются имя класса, перечисляются его свойства и методы. Структура заголовка такова Type имя класса = Class свойства заголовки методов End; Свойства перечисляются в виде переменных с указанием типов (без слова Var). Заголовки методов пишутся без кода так же, как в разделе Inteface модуля (исключительно заголовки процедур и функций)
Ниже интерфейсной части размещаются полные тексты методов. Текст метода начинается дублем его заголовка, однако, перед именем метода подписывается через точку имя класса. Внутри методов доступны все свойства класса по своим именам
Как используется класс
Чтобы воспользоваться описанным классом, необходимо сформировать переменные этого класса. Такие переменные называются объектами и описываются в разделе Var при помощи имён.
В каждом классе имеется два особых метода – конструктор и деструктор, первый чтобы выделить, а второй – освободить память, занимаемую объектом. Перед использованием объекта необходимо вызвать конструктор, а по окончании работы – деструктор.
Доступ к свойствам и методам объектов осуществляется по именам объектов, где через точку пишутся имена соответствующих свойств или методов.