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



Программирование диалоговых запросов - часть 3


Перед выходом из процедуры FileOpen экземпляр объекта TFileDialog уничтожается (удаляется из кучи) обращением к деструктору Done.

По описанной схеме в Turbo Vision создаются и используются любые другие диалоговые окна.

Для реализации диалогового запроса необходимо создать диалоговое окно и с помощью функции ExecView объекта-владельца (программы) инициировать диалог с пользователем. Результат, возвращаемый этой функцией, будет содержать выбранную пользователем команду.

Чтобы запрограммировать действия, связанные с открытием файла, следует вначале решить, какие именно данные он будет содержать. Напомню, что мы разрабатываем диалоговую программу управления «записной книжкой». Структура типичной записи в такой книжке состоит из трех полей: имя, телефон, адрес. Учитывая это, будем считать, что данные в файле хранятся в виде следующих записей:

const

LName = 25;{Длина поля Name}

LPhone= 11;{Длина поля Phone}

LAddr =40;{длина поля Addr}

type

DataType = record {Тип данных в файле}

Name : String[LName]; {Имя}

Phone: String[LPhone] {Телефон} 

Addr : String[LAddr] {Адрес}

end;

Поместим эти строки в начале программы, а перед описанием процедуры FileOpen вставим определения следующих глобальных переменных:

var

DataFile: file of DataType; {Файловая переменная} 

OpFileF : Boolean; {Флаг открытого файла}

Дополним текст процедуры FileOpen такими строками:

case Control of

StdDlg.cmFileOpen,cmOk: 

begin

PFA.GetFileName(s);

Assign(DataFile,s); {Отсюда начинаются новые строки}

{$I-}

Reset(DataFile);

if lOResult <> 0 then

Rewrite{DataFile); OpFileF := IOResult=0; 

{$I+}

if OpFileF then 

begin

DisableCommands(WinCom2);

EnableCommands(WinComl)

end

end; 

end;

С помощью оператора DisableCommands мы временно запрещаем набор команд, указанный в константе WinComl. Эта константа в нашем случае должна содержать команду стОреn; ее определение нужно включить сразу за определением константы WinComl:

const

WinComl: TCommandSet = [cmSave, cmWork]; 

WinCom2: TCommandSet = [cmOpen];

Обращение к процедуре EnableCommands разрешает использовать команды cmSave vicmWork.




Содержание  Назад  Вперед