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

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

Во-вторых, обратили ли Вы внимание на то, что в процедуре TNotebook.Work указатель PW инициируется оператором:

PW: = New(PWorkWin, Init(R));

А динамическая память, выделенная для размещения экземпляра объекта TWorkWin, не возвращается обратно в кучу? Если да, то у Вас есть хорошие шансы избежать многих неприятностей при программировании в среде Turbo Vision. Конечно же, нам следовало где-то в программе позаботиться об удалении ненужного нам экземпляра объекта. Чтобы не усложнять программу, я не стал этого делать: если вставить оператор:

Dispose(PW, Done)

Сразу за оператором:

DeskTop.Insert(PW)

То вновь созданное окно будет тут же удалено с экрана, поэтому оператор Dispose нужно разместить в обработчике событий TNotebook.HandleEvent (подумайте, где именно).

После включения диалогового окна в цепочку действий, связанных с инициацией PW, появилась возможность приостановить исполнение программы в процедуре Work: вместо оператора:

DeskTop.Insert(PW)

Вставьте следующие строки:

Control: = DeskTop.ExecView(PW);
Dispose(PW, Done)

И добавьте описание переменной Control:

var
…..
Control: Word;

В отличие от процедуры Insert процедура ExecView не только помещает видимый элемент на экран, но и приостанавливает дальнейшее исполнение программы Work до тех пор, пока не закончится диалог с пользователем.

И, наконец, еще одно усовершенствование. Работа с программой станет удобнее, если сразу после чтения файла с данными она перейдет к их показу. Реализовать это очень просто: добавьте вызов процедуры Work в процедуру FileOpen следующим образом:

Procedure TNotebook.FileOpen;
…. .begin
…..
if OpFileF then
begin
…..
Work{Переходим к работе}
end;
…..
end; {FileOpen}

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

Файл с данными DataType пока еще не существует. Чтобы программа смогла нормально работать, в диалоговом окне открытия файла укажите произвольное имя, например MYDATA. После завершения работы программы будет создан пустой файл MYDATA.DAT.

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