Найти в Дзене
ITэ и ТэДэ

ИСУБД CronosPRO, мой подход к работе. №2 Форма ввода.

База данных нужна чтобы вводить туда данные! 👆😎 Ввод на прямую через рабочие окна ввода/коррекции не лучшая идея. Надо делать форму ввода! С классическими формами ввода CronosPro у меня не сложилось. Всю работу с базой я реализую через управляющие формы. Если интересно, подписываемся, читаем, Вам не сложно, нам в копилку :) Предыдущая статья: Создаю новую управляющую форму, "Проектирование -> Форм ввода -> Новая..." Сохраняю новую форму с названием "Данные на Лицо". В свойствах меняю "Центрировать" -> "Да" - удобнее открытие нового окна по центру. Свойство "Текст" - не имеет значения, буду менять программно. Добавляю на форму: Получилось как-то так: На этом с элементами пока остановлюсь и реализую рабочий каркас формы. Другие управляющие формы ввода для различных баз данных будут имеют схожую архитектуру. Выделяю элемент "Форма" (кликнув по ней) и перехожу в панель свойств на вкладку события и добавляю события: Open, Load, Unload; для элементов "кнопка" и "

База данных нужна чтобы вводить туда данные! 👆😎 Ввод на прямую через рабочие окна ввода/коррекции не лучшая идея. Надо делать форму ввода! С классическими формами ввода CronosPro у меня не сложилось. Всю работу с базой я реализую через управляющие формы.

Если интересно, подписываемся, читаем, Вам не сложно, нам в копилку :) Предыдущая статья:

Создаю новую управляющую форму, "Проектирование -> Форм ввода -> Новая..."

рис. 1 Создание формы
рис. 1 Создание формы

Сохраняю новую форму с названием "Данные на Лицо". В свойствах меняю "Центрировать" -> "Да" - удобнее открытие нового окна по центру. Свойство "Текст" - не имеет значения, буду менять программно. Добавляю на форму:

  • 2 "Переключателя":
    свойство "Имя" -> MaleRad, "Текст" -> Мужчина, "TAB индекс" -> 1
    свойство "Имя" -> FemaleRad, "Текст" -> Женщина, TAB индекс -> 2 (мы все таки не в европе 😊)
  • по 3 элемента "Надпись" и "Текст", в имени меняется только цифра:
    свойство "Имя" -> Name1Lb, "Текст" -> Фамилия (Имя, Отчество), "ТАВ индекс" -> пусто
    свойство "Имя" -> Name1Txt, "Текст" -> пусто, "ТАВ индекс" -> 3 (4, 5)
  • и две "Кнопки":
    свойство "Имя" -> AddBtn, "Текст" -> Добавить, "ТАВ индекс" -> 6
    свойство "Имя" -> CancelBtn, "Текст" -> Отменить, "ТАВ индекс" -> 7

Получилось как-то так:

рис. 2
рис. 2

На этом с элементами пока остановлюсь и реализую рабочий каркас формы. Другие управляющие формы ввода для различных баз данных будут имеют схожую архитектуру.

Выделяю элемент "Форма" (кликнув по ней) и перехожу в панель свойств на вкладку события и добавляю события: Open, Load, Unload; для элементов "кнопка" и "переключатель" (соответственно выделив их): Click; для элементов "Текст": TypeValidation.

рис. 3
рис. 3

Также в скрипте формы буду использовать дополнительные функции и переменные:

Для контроля изменения данных записи использую переменную edited, данные изменены при отличном от нуля значении, а какое из полей записи изменено отслеживаю двоичной математикой. Каждый бит отвечает за свое поле:
пол -> 0b 0000 0001 -> 1
фамилия-> 0b 0000 0010 -> 2
имя -> 0b 0000 0100 -> 4
отчество -> 0b 0000 1000 -> 8

В реализации Lua в CronosPRO нет поддержки двоичных операторов. Поэтому реализую функции установки, снятия и проверки бита свои. Так как эти функции точно понадобятся и в других формах, а так же вероятно и в других банка данных, то оформлю системный скрипт (модуль) для многократного использования. В отладчике переключаюсь на вкладку системных скриптов и добавляю новый элемент:

Название дам допустим FuncSys. В открывшимся новом тексте скрипта удаляю пережиток старой версии работы с модулями. И пишу функции для работы с двоичной математикой:

рис. 5 текст модуля FuncSys
рис. 5 текст модуля FuncSys
Модуль вспомогательных функций

Еще мне понадобятся функции: Clear() для очистки элементов ввода, Load() для загрузки данных записи и соответственно Save() для сохранения данных. Для коррекции надписи на кнопке добавления/закрытия (AddBtn) и уменьшения кода добавлю функцию UpdateAdd()

Скрипт формы с комментариями:

Скрипт управляемой формы Данные на Лицо

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

Ссылки на ресурсы:
Копия банка Primer1 целиком.
Копия формы Данные на Лицо.