FoxPro Club Главная

Конференция Решения Фотоальбом Сайт М.Дроздова Статьи Файловый архив Книга Visual FoxPro 9.0 Русский Help для Visual FoxPro
Пользователей: 9114
Вход
Набор классов для создания справочников. VFP8.

Любому из нас, разрабатывая какую-нибудь прогрымму, приходилось возиться со справочниками. И дело это нетак чтобы уж слишком радостное и захватывающее. Наверное, многие, запрограммировав справочник типа 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 прописав в нем русское название справочника. Это название в дальнейшем будет использоваться для формирование капшинов для окон.

На этом все.

 
Сделайте оценку этого решения Плохо Удовлетворительно Так себе Хорошо Отлично Текущая оценка: (5.043) Вложение [483.61]kb
Дополнения пользователей
Набор классов для создания справочников. VFP8.
[+][?]
Ramil
01.02.03 18:13:13

Просто блеск !

Я бы вообще все приложение посмотреть не отказался - хочется иметь эталонные приложения для
конкретной предметной области - склад и т.д.

Свое конструировать - получается хуже - работает но не так красиво ...

Ramil
Roman Koltsov
28.11.05 16:53:41

Обнаружил следующий "глюк" при использовании класса:
В основной библиотеке spravoch.vcx, имеется класс cntForSelection, содержащий объект TxtBorder, у
которого свойство "Visibility" установлено в "Protected" (это достаточно логично!). Теперь для
"воссоздания бага" создайте любую форму, разместите на ней объект /или экземпляр класса, кому как
угодно ;-) / cntForSelection, затем добавьте любую кнопку, где в ее методе Click разместите
какие-либо вычисления. Вполне естественно, при вычислениях, возникает желание добавить в код
кнопки следующие строки, как описано в книге "1001 Things You Wanted to Know About VFP" моего
любимого издательства "Hentzenwerke":

Roman Koltsov
28.11.05 16:54:17

... продолжение

ThisForm.MousePointer = 11 && HourGlass
ThisForm.SetAll('MousePointer',11)

Вот на второй-то строке приведенного кода программа и выдаст Вам ошибку из-за конфликта с
Protected Object TxtBorder (дескать он не существует!). Господа! По моему это чистейшей воды глюк
самого Fox'а, а именно ошибочной реализации метода SetAll!!!

Я использую Visual FoxPro 09.00.0000.2412 for Windows.
Пишите у кого какие на сей счет будут соображения!
Интересно так же мнение автора...

Влад Колосов
09.12.05 13:01:57

Непонятно в чем смысл класть картинку в контейнер в гриде.
Seeker
09.12.05 14:41:48

to Влад Колосов
Чтоб самому контролировать ее положение иначе фокс сам будет выбирать в каком углу ее показать.
Seeker
09.12.05 14:53:20

to Roman Koltsov
Честно говоря не понял в чем бага. Попытался воспроизвести ситуацию но ничего сверхестественного
не увидел. Сейчас у меня стоит 9-ка правда и классы уже местами подправленны. На сайте последний
раз это решение обновлял когда вышла только 8-ка помоему. Изначально все было написанно под 7.
Поэтому может что-то и глючить на новых версиях фокса.
Seeker
09.12.05 15:36:51

to Roman Koltsov
Честно говоря не понял в чем бага. Попытался воспроизвести ситуацию но ничего сверхестественного
не увидел. Сейчас у меня стоит 9-ка правда и классы уже местами подправленны. На сайте последний
раз это решение обновлял когда вышла только 8-ка помоему. Изначально все было написанно под 7.
Поэтому может что-то и глючить на новых версиях фокса.
Seeker
09.12.05 16:30:31

to Roman Koltsov
Честно говоря не понял в чем бага. Попытался воспроизвести ситуацию но ничего сверхестественного
не увидел. Сейчас у меня стоит 9-ка правда и классы уже местами подправленны. На сайте последний
раз это решение обновлял когда вышла только 8-ка помоему. Изначально все было написанно под 7.
Поэтому может что-то и глючить на новых версиях фокса.
Seeker
09.12.05 17:15:18

Извените за предыдущие несколько одинаковых сообщений, что-то у меня глюкануло видимо.

to Roman Koltsov 2
Тоже извеняюсь, предыдущий ответ был по первой части :) Прочитав вторую часть, убедился что да,
проблемма действительно есть. Но проблемма это самого фокса т.ч. единственным тут решением будет
не пользоваться Protected при проектировании классов а то что сейчас с Protected перевести в Public

[Дополнить]



© 2000-2017 Fox Club 
При размещении любых материалов с сайта на других ресурсах- прямая ссылка на www.foxclub.ru обязательна
Яндекс.Метрика