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

Редактирование и добавление записей

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

if Edit then with Data do
begin {Готовим начальный текст:}
…….
end;

Готовят начальное состояние полей ввода в режиме редактирования. Оператор:

InWin. SetData (Data)

Помещает подготовленный текст в нужные поля. При обращении к процедуре SetData данные должны быть предварительно подготовлены в строгом соответствии с порядком создания диалоговых полей в окне и типом их данных. Поскольку в нашем случае формат данных в полях ввода окна совпадает с форматом файловых данных, мы можем использовать одну и ту же переменную как для работы с файлом, так и для установки начальных значений диалоговых полей.

В самом общем случае пользователь должен объявить новый тип, соответствующий формату помещаемых в окно данных, и использовать выражение этого типа в качестве параметра обращения к процедуре SetData. Например, если бы в нашем окне было предусмотрено только одно поле ввода "Телефон", то установку данных можно было бы осуществить таким оператором:

InWin. SetData (DataType. Phone)

Где DataType.Phone – выражение типа String [LPhone].

Контроль за соответствием типа устанавливаемых данных порядку объявления и типу данных диалоговых полей полностью возлагается на программиста. В операторах:

if Control=cmOk then with Data do
begin
…..
end

Данные, полученные из диалогового окна, помещаются сначала в отсортированную коллекцию, а затем – в файл. С помощью оператора:

if OldCount <>PS. Count then

Проверяется изменение количества данных в коллекции (напомню, что в отсортированную коллекцию можно поместить только уникальную запись). Если количество записей в коллекции изменилось, значит новая запись не совпадает ни с одной из уже имеющихся и ее следует поместить в файл.

Операторы:

if Edit then
DeleteItem; {Удаляем старую запись}

Предварительно удаляют старую запись с помощью обращения к процедуре DeleteItem.

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