
- •Лабораторная работа № 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.5 Кнопка «Удаление/Восстановление»
11.5.1 Программа процедуры
Эта кнопка служит для выхода из режима редактирования справочника. Ей соответствует процедура:
If file ("tmp.dbf") &&Функция возвращает логическое значение .Т., если файл с указанным именем найден.
Delete file tmp.dbf &&Удаляет временный файл
^Обязательно указывать
Endif
Close databases &&3акрывает текущую базу данных и все ее ТБД.
Устанавливает текущий Р0П1.
Use d:\baza\poshk exclusive &&Открывает ТБД poshk в монопольном режиме и помещает файл в РОП1
Locate for DELETED () &&Отыскивается 1-я запись, помеченная для удаления
If found () &&Функция определяет успешность поиска записи для команд CONTINUE, FIND, LOCATE, SEEK. Возвращает логическое значение .F., если нет искомой записи или в указанной РОП нет открытой ТБД. Возвращает логическое значение .Т., если запись найдена.
Pack &&Физически удаляется найденная запись
Endif
Sort to tmp on nomp &&Файл POSHK после удаления 1-й найденной записи (помеченной) сортируется по Nomp. Новому файл присваивается имя tmp.
Close databases
Use d:\baza\poshk exclusive
Delete all &&B файле POSHK помечает все записи для удаления внутри файла
Pack &&Физическое удаление всех помеченных записей в файле POSHK.
Append from tmp &&Переписывает все записи файла tmp, включая помеченные, в файл POSHK
If file ("tmp.Dbf")
Delete file tmp.dbf &&Временный файл; если он создан, удаляется.
Endif
If MESSAGEBOX ("Отсортировать файл?", 4+32+256, "Сортировка по НОМП")=6
*Набор значений кнопок и пиктограмм функции MESSAGEBOX:
*4 - командные кнопки Yes и No
*32 - пиктограмма знака ?
*256 - вторая командная кнопка по умолчанию (No)
*6 - значение, возвращаемое функцией, если выбрана кнопка Yes
sort to tmp on nomp &&Вновь сортируется POSHK. Повторно отсортированный файл с помеченными записями создается опять под именем tmp.
Close databases
Use d:\baza\poshk exclusive
Delete all Pack
Append from tmp
Endif
If MESSAGEBOX ("Завершить редактирование?", 4+32+256, "Завершить") = 6
_screen.AactiveForm.Release
else
_screen.ActiveForm.Refresh()
Endif
Упрощенная редакция кнопки «удалить»
*удалить
IF MESSAGEBOX("Вы действительно хотите удалить ВСЕ записи помеченные на удаление?",4) = 6
PACK
thisform.command1.click
endif
_screen. ActiveForm. Refresh
11.5.2 Описание работы процедуры кнопки Выход
В процедуре производится проверка наличия отметок об удалении записей. Если отметки есть, производится физическое удаление. Затем пользователь получает вопрос: производить ли сортировку файла? При утвердительном ответе основной файл сортируется по номеру поставщика в порядке возрастания и получает имя временного файла tmp. После этого, в основном файле логически удаляются все помеченные записи, затем они удаляются физически и в основной файл из временного переписываются обновленные записи, в том числе и помеченные. Повторное удаление в основном файле сделано для подстраховки.
Пользователь получает следующий вопрос: завершить редактирование? Если пользователь щелкает мышкой на слове ДА, производится выход - экранная форма закрывается. Если же выбирается кнопка НЕТ, производится возврат в режим редактирования.
Такая процедура позволяет сразу же после удаления записей просмотреть справочный файл и удалить последовательно все записи, помеченные для удаления. Только после завершения редактирования окно ЭФВД удаляется из памяти (но не с экрана), в противном случае оно обновляется и снова может редактироваться.