Любому из нас, разрабатывая какую-нибудь программу, приходилось возиться со справочниками. И дело это не так чтобы уж слишком радостное и захватывающее. Наверное, многие, запрограммировав справочник типа Sales пару десятков раз начинали задумываться, как это дело унифицировать :). Меня, как человека от рождения не лешенного любых человеческих пороков эта проблема настигла c поразительной скоростью. В результате сделал что сделал, вот
Теперь кратко как это все работает.
Для демонстрации работы я выдернул кусок из вполне рабочей программы, что конечно не означает 100% работоспособность куска, ну рассмотреть по нему основной принцип возможно.
В демо проект входят несколько библиотек классов:
inctext.vcx
midatepic.vcx
project.vcx
splitter.vcx
spravoch.vcx – основная библиотека
xpbutton.vcx
несколько демонстрационных форм:
sprotdel.scx – основная форма с которой логически связаны все остальные
sprprof.scx
sprrazr.scx
sprsotrudn.scx
ну и прочий мусор, который даже описывать не стану 😉
Процесс создания нового справочника.
1. Идете в Tools>Options...> Forms
1.1. В группе Template classes ставите галгу радом с Form set:
1.2. Выбераете spravoch.vcx > frmsetsprav
1.3. Давите OK.
2. Затем в меню File>New... выбераете Form и жмете здоровенну кнопку New file.
3. На этом шаге нужно определить Data Еnvironment. Сдесь такой ньюанс, основная таблица должна быть добавлена первой или должна быть прописана в InitialSelectedAlias.
4. Если вым нужны для отображения не все поля, накидайте их в грид сами. Не удаляйте первую колонку. Оформление заголовков колонок устанавливается по образцу первой колонки. Возможно, задание вычисляемых полей. Как это сделать посмотрите в демо форме sprOtdel. Также на форме sprMain есть пара полезных своиств – sqlFields и sqlOrders. Почитайте к ним описание внизу Properties Window.
5. Дальше нужно накидать элементов редактирования на окна «Редактирование группы» и «Редактирование записи». У кнопок Ок этих форм есть оброботчики призванные облегчить процесс записи. Для их использования нужно прописать в Click контрола cntOk DoDefault(список параметров). Далее приведу шапку одного обработчика с описанием передаваемых параметров.
*=========================================================================== * tcName - имя поля которое нужно проверять на уникальность * если не указано проверяется поле NAME * если пустая строка, проверки на уникальность не производится. * tlSposob - способ проверки * .F. или опущено - проверка на уникальность осуществляется по всему справочнику * .T. - только в текущей группе * tcErrorMessage - сообщение об ошибке, если поле не уникельно LPARAMETERS tcFldName, tlSposob, tcErrorMessage *===========================================================================
В принципе все, можно запускать и опробовать.
Создание таблиц для справочника.
Справочник работает только с таблицами содержащимися в базе данных, причем таблицы должны удовлетворять нескольким обязательным условиям.
Обязательная структура таблиц.
Id Numeric x
Pid Numeric x
Isfolder Numeric 1
Name Character x
Остальные поля по необходимости.
Индексы:
Id Primary Id
Pid Regular Pid
Isfolder Regular Isfolder
Name Regular UPPER(name)
DEL Regular DELETED()
Желательно заполнение у полей свойства Caption, т.к. оно используется для заполнения хадеров колонок, если они небыли добавлены вручную.
Для поля Id необходимо создать Default value - присвоение уникального значение.
Необходимо заполнить поле Table Comment: на закладке Table прописав в нем русское название справочника. Это название в дальнейшем будет использоваться для формирование капшинов для окон.
На этом все.
Вложенные файлы
# |
Название |
Тип файла |
Размер |
---|---|---|---|
1 | 284SprDemo | .zip | 483,61 КБ |