Иллюстрированный самоучитель по Turbo Pascal

Диалоговое окно

На рис. 23.2 показан вид диалогового окна, которое создается и используется в рассматриваемом ниже примере.

Иллюстрированный самоучитель по Turbo Pascal › Практика использования › Диалоговое окно
Рис. 23.2. Диалоговое окно со строкой ввода и кнопками

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

Команда 'Не изменять',

Если диалог завершен по клавише Esc, на экран не выводится никаких сообщений.

Пример иллюстрирует использование строки ввода, зависимых и независимых кнопок и нестандартных команд.

Для задания начальных параметров и чтения параметров, установленных в результате диалога, используется поле TDialog.Data. Это поле содержит данные, используемые в ходе диалога, в виде записи, поля и тип которой строго соответствуют порядку и типу вставляемых в окно терминальных элементов. В нашем примере (см. текст программы) первым в окно вставляется статический текст, однако этот терминальный элемент не имеет параметров, которые можно было бы изменить в ходе диалога, поэтому в записи Data ему не отводится место. Второй по счету в окно вставляется строка ввода TInputLine.

Этот объект характеризуется длиной L строки, указываемой вторым параметром обращения к TInputLine.Init, поэтому для него в Data выделяется поле, длиной L+1 байт. Каждому кластеру с кнопками выделяется поле WORD, что дает возможность задать в кластере до 16 независимых кнопок и до 65536 зависимых: каждая независимая кнопка связана с соответствующим разрядом 16-битного поля (первая кнопка – с младшим разрядом), а каждой зависимой кнопке соответствует свое число (первой кнопке соответствует число 0, второй -1 и т.д.). Установка данных в поле TDialog.Data осуществляется методом TDialog.SetData, получить данные после диалога можно с помощью метода TDialog.GetData.

{$Х+}
Uses Objects, App, Drivers, Dialogs,Menus,Views,MsgBox;
type
MyApp = object (TApplication)
Procedure InitStatusLine; Virtual;
Procedure HandleEvent (var Event: Tevent); Virtual;
Procedure GetDialog;
end;
PMyDialog = TMyDialog;
TMyDialog = object (TDialog)
Procedure HandleEvent (var Event: Tevent); Virtual;
end;
const
cm0 = 200;
cm1 = 201;
cm2 = 202;
{-------------------}
Procedure MyApp.InitStatusLine;
{Создает строку статуса}
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.