
- •Лабораторная работа № 11
- •11.1 Создание форм для редактирования и просмотра данных в vfp через Form Wizard
- •11.2 Создание форм для редактирования и просмотра в vfp через Form Designer
- •1. Проектирование формы
- •2. Создание формы
- •Include file ...
- •3. Выбор и размещение объектов внутри формы.
- •4. Управление объектами.
- •5. Сохранение формы.
- •6. Домашнее задание: продумать кнопки редактирования (Вставить, Добавить, Изменить, Удалить).
- •11.3 Процедуры для формы и управляющих кнопок с использованием ооп
- •1. Задание на программирование
- •2. Описание программ.
- •2.4. Создание методов использования кнопок в режиме редактирования.
- •If deleted ()
- •11.4 Продолжение создания Форм
- •11.5 Кнопка «Удаление/Восстановление»
- •11.5.1 Программа процедуры
- •If file ("tmp.Dbf")
- •11.5.2 Описание работы процедуры кнопки Выход
- •11.6 Кнопка «Вперед» Модифицированная программа процедуры
11.4 Продолжение создания Форм
Кнопка "Удалить/Восстановить" (Command5)
Эта кнопка служит для внесения отметки об удалении записи, высвеченной на экране.
После щелчка на этой кнопке работает процедура:
if deleted() &&функция возвращает логическое значение, указывающее,
&&помечена ли текущая запись для удаления:
&& .Т. - если запись помечена, .F. - если нет. recall &&повторный щелчок на кнопке "Удалить" на записи,
&&уже помеченной для удаления, снимает отметку об удалении.
&&3апись восстанавливается (.Т. заменяется на .F.) else delete &&B противном случае запись логически удаляется.
&&Физическое удаление производится после
&&выхода из режима редактирования
endif
_screen.ActiveForm.Refresh()
Кнопка "Выход"
Эта кнопка служит для выхода из режима редактирования
справочника. Ей соответствует процедура:
if file ("tmp.dbf') &&Функция возвращает логическое значение Т.,
&&если файл с указанным именем найден
delete file tmp.dbf &&Удаляется временный файл
endif
close databases &&3акрывает текущую базу данных и все её таблицы
&&Устанавливает текущей первую рабочую область
use d:\baza\poshk exclusive &&Открывает ТБД poshk в монопольном режиме
&&и помещает файл в РОП1
Locate for DELETED() &&Отыскивается первая запись, помеченная для удаления
If found () &&Функция определяет успешность поиска для команд
&&CONTINUE, FIND, LOCATE, SEEK.
&&Возвращает логическое значение .F., если нет искомой
&&записи (или в указанной РОПе нет открытой таблицы)
&&и значение .Т. - если найдена
pack &&Физически удаляется найденная запись
endif
sort to tmp on nomp &&Файл poshk после удаления первой помеченной
&&записи сортируется по номеру поставщика
&&Новому файлу присваивается имя tmp
&&(остальные помеченные записи остаются)
close databases
use d:\baza\poshk exclusive &&В файле poshk помечает для удаления
delete all &&все записи внутри файла
pack &&Физическое удаление всех помеченных записей
append from tmp &&Переписывает файл tmp с помеченными
&&записями в файл poshk
if file ("tmp.dbf”) &&Временный файл,
delete file tmp.dbf &&если он создан, удаляется
endif
if MESSAGEBOX("Oтсортировать файл?",4+32+256,"Сортировать по коду НОМП")=6
&&4-Yes и No;32-?;
&&256 - 2я командная кнопка по умолчанию (No)
&& 6 - выбрана Yes sort to tmp on nomp &&Снова сортируется poshk. Вновь отсортированный файл
&& с помеченными записями создаётся под именем tmp close databases
"Повторение блока команд с комментариями
use d:\baza\poshk exclusive &&B файле poshk помечает для удаления delete all &&все записи внутри файла
pack &&Физическое удаление всех помеченных записей
append from tmp &&Переписывает файл tmp с помеченными
&&записями в файл poshk endif
if MESSAGEBOX ("Завершить редактирование?",4+32+256,"Завершить")=6
_screen.ActiveForm.Release()
else
_screen.ActiveForm. Refresh()
endif
В процедуре производится проверка наличия отметок об удалении записей. Если отметки есть, производится физическое удаление. Затем пользователь получает вопрос: производить ли сортировку файла? При утвердительном ответе основной файл сортируется по номеру поставщика в порядке возрастания получает новое имя временного файла tmp. После этого в основном файле логически удаляются все помеченные записи, затем они удаляются физически и в основной файл из временного переписываются обновлённые записи в том числе и помеченные. Повторное удаление в основном файле сделано для подстраховки.
Пользователь получает следующий вопрос: Завершить ли редактирование? Если пользователь щёлкает мышкой на слове ДА, производится выход - экранная форма закрывается. Если же выбирается кнопка НЕТ, происходит возврат в режим редактирования. Такая процедура позволяет сразу же после удаления записей просмотреть справочный файл и удалить последовательно все записи, помеченные для удаления. Только после завершения редактирования окно ЭФВД удаляется из памяти, в противном случае оно обновляется и снова.