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

Диалоговое окно выбора режима

В этом фрагменте мы расширили набор нестандартных команд (константы cmСаn,…, cmAdd), ввели новую функцию Control и предусмотрели необходимые процедуры в теле обработчика событий. Заметим, что режимы редактирования записи и добавления новой записи очень схожи по организации диалога с пользователем, поэтому он" реализуются в рамках одной процедуры AddItem и управляются параметром обращения к ней.

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

Займемся реализацией функции Control. Она должна создать диалоговое окно выбора режима, получить с его помощью команду, идентифицирующую выбранный режим, и вернуть эту команду в качестве своего значения:

Function Control: Word;
{Получает команду из основного диалогового окна}
const
X = 1;
L = 12;
DX= 13;
But: array [0..4]of String [13] = {Надписи на кнопках:}
('~1~ Выход ','~2~Убрать ','~3~ Искать ',
'~4~ Изменить ','~5~ Добавить ');
Txt: array [0..3]of String [52] = (
{Справочный текст:}
'Убрать – удалить запись, выделенную цветом',
'Искать – искать запись, начинающуюся нужными буквами',
'Изменить – изменить поле (поля) выделенной записи',
'Добавить – добавить новую запись'); var
R: TRect;
D: PDialog;
k: Integer;
begin
R.Assign(7.6.74.15);
D: = New{PDialog,Init(R, 'Выберите продолжение:'));
with D do
begin
for k: = 0 to 3 do {Вставляем поясняющий текст}
begin
R.Assign(l,l+k,65.2+k);
Insert(New(PStaticText,Init(R,#3+Txt[k])))
end;
for k: = 0 to 4 do {Вставляем кнопки:}
begin
R.Assign(X+k*DX,6,X+k*DX+L,8);
Insert(New(PButton, Init(R,But[k],cmCan+k,bfNormal)))
end;
SelectNext(False); {Активизируем первую кнопку}
end;
Control: = DeskTopA.ExecView(D); {Выполняем диалог}
end; {Control}

Сначала создается диалоговое окно с заданными размерами (чтобы программе стал доступен тип TDialog, укажите в предложении Uses модуль Dialogs). Затем в цикле:

for k: = 0 to 3 do

В окно вставляется поясняющий текст (см. рис.15.10).

Иллюстрированный самоучитель по Turbo Pascal › Введение в Turbo Vision › Диалоговое окно выбора режима
Рис. 15.10. Диалоговое окно функции Control

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.