powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Переменное количество контролов на форме.
18 сообщений из 18, страница 1 из 1
Переменное количество контролов на форме.
    #33351537
semenar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Идея в следующем. Есть база под Ораклом. При добавлении/удалении полей под Ораклом надо переделывать форму. А не хочется. Возможно-ли сделать универсальную форму с переменным количеством контролов. Текстбоксов или комбо к примеру.
То есть выбираем количество колонок из вьювера или таблицы, анализируем дилну поля, имя, тип и выстраиваем форму "динамически". Заодно и "облегчаем" проект от ненужных форм. Примеры крайне приветствуются!
...
Рейтинг: 0 / 0
Переменное количество контролов на форме.
    #33351708
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Передавайте в форму имя Оракл-таблицы, далее в .Init узнаете с помощью
Sqlcolumns(lnConnHandle,"TableName") типы полей таблицы. Далее моделируйте как душе угодно типы контролов в зависимости от типов полей. Но это только для учебника.

На практике все сложнее.
Если есть foreign_key's в таблице, то примерно с помощью такого запросика

select t.table_name,t.column_name,s.r_constraint_name,q.table_name,q.column_name
from sys.all_cons_columns t, sys.all_constraints s, sys.all_cons_columns q
where t.table_name='TableName' and
t.constraint_name = s.constraint_name and s.constraint_type='R' and
q.constraint_name= s.r_constraint_name

можно узнать из каких таблиц эти ключи, т.е. можно подготовить свои контролы со свойством .Foreign_key (в .Init формы заполнить там где надо), чтобы по нажатию определенной клавиши (событие KeyPress() контрола) можно было вызвать этот справочник для выбора.

Советую заглянуть в структуру таблиц и связей в 1С. Иногда полезно.
...
Рейтинг: 0 / 0
Переменное количество контролов на форме.
    #33352079
foxwizard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
форма обычно рисуется под правильно спроектированную, нормализованную базу ( у Вас разве не так?).
Тогда откуда постоянная смена структуры таблиц?
...
Рейтинг: 0 / 0
Переменное количество контролов на форме.
    #33353139
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
Тогда откуда постоянная смена структуры таблиц?


всё меняется. Раньше поля инн не было, теперь есть. В договоре указывался отдел а теперь нужно указывать конкретного сотрудника. И пр.

Реализуемо. Делал пару лет назад (но оракл не поддерживается) http://sss1024.narod.ru/ver.htm
...
Рейтинг: 0 / 0
Переменное количество контролов на форме.
    #33354240
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi semenar!

IMHO в 99% случаев проще, быстрее и надёжнее при изменении структуры
поправить саму форму, нежели рисовать совсем нетривиальный код по
"автоматическому" созданию формы, и в результате к тому-же получить
какое-нить убожество типа создаваемых фоксовым Form Wizard форм :(
А чтоб не морочится вопросом "не хочу постоянно перекомпилировать exe" -
просто не включай эту форму внутрь - оставь как есть - scx+sct оно без
вопросов запускается из рантайма (т.е. из простого exe-загрузчика).

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Переменное количество контролов на форме.
    #33354738
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это слишком упрощённый подход. Когда форм много то редактировать каждую
накладно. Для поддержки легче сделать что-то универсальное.

Много это, скажем, 50 форм на 1 разработчика.



Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Переменное количество контролов на форме.
    #33356385
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi 1024!

IMHO если у тебя одно и то-же поле из одной таблицы используется во ВСЕХ
формах, причём это не оформлено как класс (формы, или грида, или контейнера
какого-нить) - это наводит на нехорошие мысли. Также нехорошие мысли
навевает собственно перманентная модификация структур - видимо изначально
что-то упущено было, что теперь так много менять приходится...
Обычно ввод нового поля сказывается на 1-2 формах или классах. А проблема
автогенерации в том, что в пределе состав реквизитов мета-информации
стремится к ровно тому-же набору, что и хранится в scx/vcx файле в виде
свойств объектов. Т.е. мы получаем дубль scx - но в своей структуре, со
своими глюками, необходимостью делать свой редактор и т.п.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Переменное количество контролов на форме.
    #33357133
semenar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дак в том -то и идея. Чтобы сделать универсальную форму на приложение. Есть предположим под Ораклом 60 view. Так неохота писать 60 форм! Проже сделать одну. Ведь ввод, корректировка, удаление поиск имеет один синтаксис практически. Меняется только название таблицы или вьювера. Задача "облегчить" жизнь программиста.
...
Рейтинг: 0 / 0
Переменное количество контролов на форме.
    #33357234
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semenarДак в том -то и идея. Чтобы сделать универсальную форму на приложение.
Не ты первый, не ты последний "загорелся" этой идеей. Только вот она не выдерживает столкновения с "прозой жизни".

semenarЕсть предположим под Ораклом 60 view. Так неохота писать 60 форм! Проже сделать одну. Ведь ввод, корректировка, удаление поиск имеет один синтаксис практически. Меняется только название таблицы или вьювера. Задача "облегчить" жизнь программиста.
Ну, ты "крут". Это у тебя 60 абсолютно одинаковых форм? Т.е. никаких новых взаимосвязей между объектами? Если выписываешь накладную или счет-фактуры - никакой разницы в процессе ввода? Ничего не надо проверять ДО попытки сохранения внесенных изменений?

Ты попробуй создать "обычные" формы и посмотри какие взаимосвязи между объектами этой формы тебе придется организовывать. Ни за что не поверю, что у тебя будет "все одинаково". Наверняка начнуться проблемы типа "если вот эта форма, то при нажатии вот этой птички надо выделить цветом вот это, а если другая форма, то вот это".

Сделать "универсальный" интерфейс в принципе можно, но за счет резкого ограничения этого самого интерфейса. При этом "сопровождение" этого универсального интерфейса выльется в сплошную головную боль. Надо каждое пожелание пользователя в одной конкретной форме увязывать с тем, а как это его пожелание отразится на остальных 59 формах.

Т.е. ты не облегчишь, а резко усложнишь жизнь программиста.
...
Рейтинг: 0 / 0
Переменное количество контролов на форме.
    #33357602
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты попробуй создать "обычные" формы и посмотри какие взаимосвязи между
объектами этой формы тебе придется организовывать. Ни за что не поверю, что
у тебя будет "все одинаково". Наверняка начнуться проблемы типа "если вот
эта форма, то при нажатии вот этой птички надо выделить цветом вот это, а
если другая форма, то вот это".

======================
не "одинаково" а "унифицировано". В большинстве случаев формы содержат
одинаковые элементы. Пример - 1ц




Сделать "универсальный" интерфейс в принципе можно, но за счет резкого
ограничения этого самого интерфейса. При этом
================================
на счёт "резкого" ограничения - наверна не всё так плохо.



"сопровождение" этого универсального интерфейса выльется в сплошную головную
боль. Надо каждое пожелание пользователя в одной конкретной форме увязывать
с тем, а как это его пожелание отразится на остальных 59 формах.
===================================
непонятно как это связано. У меня например интерфейс может быть разным для
каждого пользователя а данные и логика едины для всех и всегда





Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Переменное количество контролов на форме.
    #33357740
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1024
не "одинаково" а "унифицировано". В большинстве случаев формы содержат
одинаковые элементы. Пример - 1ц
Я не в курсе, разве формы 1С построены по приведенной технологии? Есть некий универсальный класс "построитель", которому передается вся информация по метаданным и он что-то там у себя строит?

Если под "унификацией" понимается единный стиль оформления форм, то это вовсе не значит, что для организации одинакового стиля в каждом конкретном случае потребуется однаковый код его формирования.

1024на счёт "резкого" ограничения - наверна не всё так плохо.
Зависит от круга решаемых задач. Если интерфейс - дело второстепенное (например, при подготовке отчетов), то пожалуйста. А если интерфейс - это существенная часть работы (заполнение документов), то при таком "универсальном" интерфейсе будешь спотыкаться на каждом шагу и материть разработчика этого безобразия.

1024"сопровождение" этого универсального интерфейса выльется в сплошную головную
боль. Надо каждое пожелание пользователя в одной конкретной форме увязывать
с тем, а как это его пожелание отразится на остальных 59 формах.
===================================
непонятно как это связано. У меня например интерфейс может быть разным для
каждого пользователя а данные и логика едины для всех и всегда
Я имел в виду, что если в процессе развития приложения потребуется добавить не просто новое поле, но некий взимосвязанный с этим полем интерфейс, то это приведет к большим проблемам.

К ветвлению интерфейса по логину пользователя это не имеет отношения. Там обычно просто блокировка доступа в зависимости от прав.
...
Рейтинг: 0 / 0
Переменное количество контролов на форме.
    #33357850
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я имел в виду, что если в процессе развития приложения потребуется добавить
не просто новое поле, но некий взимосвязанный с этим полем интерфейс, то это
приведет к большим проблемам.



===============
не так уж это и сложно реализовать




К ветвлению интерфейса по логину пользователя это не имеет отношения. Там
обычно просто блокировка доступа в зависимости от прав.
==================
у кого-то обычно там одно, у кого-то другое



Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Переменное количество контролов на форме.
    #33357955
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1024
Я имел в виду, что если в процессе развития приложения потребуется добавить
не просто новое поле, но некий взимосвязанный с этим полем интерфейс, то это
приведет к большим проблемам.
===============
не так уж это и сложно реализовать
Да. Один раз. А если надо в каждой из этих 60 форм? Напомню, речь идет об универсальном классе. Т.е. все возможное многообразие интерфейса необходимо "впихнуть" в один класс.

PS:
Кстати, насчет "облегчения работы программиста". А как будут обстоять дела с позиционированием новых объектов (координаты)? Я уже как-то привык к дизайнерам. Мышкой поставил обект куда надо и все. А при такой "унификации" опять высчитывать позицию на калькуляторе?

PPS:
Если это все настолько просто, то почему до сих пор такой подход не реализован в промышленных ERP-системах? Или я просто не в курсе?

Имею в виду не элементы такого подхода для второстепенных фором (вроде подготовки отчетов), а именно реализация для основных рабочих форм (заполнение основных документов).
...
Рейтинг: 0 / 0
Переменное количество контролов на форме.
    #33358352
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Один раз. А если надо в каждой из этих 60 форм? Напомню, речь идет об
универсальном классе. Т.е. все возможное многообразие интерфейса необходимо
"впихнуть" в один класс.
===================================

чесн говоря не знаю что о чём речь у вас а у меня речь о том что это
реализуется не так уж и сложно. Будут какие-то потери в гибкости но будет
выигрыш в поддержке когда меняется база данных (т.е. логика системы).
Решается в каждом отдельном случае.


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Переменное количество контролов на форме.
    #33359460
Фотография MaestroEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2: Semenar .... Приятно увидеть Ваш вопрос.
Я тоже, обнаружив закономерность, конечнсть и т.п., необходимых и достаточных экранных элементов управления сваял такую вещь.

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

1. Задаем все в строке...
aaa=CreateObject("Former","","Имя формы",
"поле1(тип);русское название;класс;функцияW;функцияV;отображение",
"поле2(тип);русское название;класс;функцияW;функцияV;отображение")

2. Есть контейнер таблиц.. В нем хранится описание полей...
Ну и далее все просто ...
aaa=CreateObject("Former","Имя таблицы","Добавление") или
aaa=CreateObject("Former","Имя таблицы","Редактирование") или
aaa=CreateObject("Former","Имя таблицы","Удаление")

Поднимается класс, который строит форму...

Да и еще.. Grid и Форма - БЛИЗНЕЦЫ БРАТЬЯ... Просто выглядят по разному, поэтому у меня и с Гридом также...

aaa=CreateObject("grider","Имя таблицы")

Плюсы... Интересная работа, Программы накидываются легко... Весь интерфейс одинаковый и думаешь только о данных... и отчетах...

Минусы... Когда напишешь... и захочется что-нибудь этакого... будешь ограничен рамками своей же технологии... которую рушить жаль, да и смысла нет... а добавлять к ней больше всяких возможностей не стоит, забываешь как потом своими же функциями пользоваться... :)

Правы наверное те - кому легче на форму че-то набросать... Хотя очень редко их экраны выглядят удобными для пользователей, надежными и единообразными что-ли...
...
Рейтинг: 0 / 0
Переменное количество контролов на форме.
    #33359923
semenar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Друзья, но может я как-то некорректно выразился ио кто-то меня не совсем так понял. Что я имел ввиду:
Есть n-таблиц на сервере Оракловском.. Есть k- представлений из n таблиц. (view). Вставка, удаление, редактирование обрабатывается триггером вьювера. Так же и поиск. Ну пусть учавствуют на форме текстбоксы , комбо и лейблы. С этой стороны безусловно какое-то ограничение. Зато простой и понятный интерфейс. Передавая в качестве параметра имя вьвера, выгружаем с Оракла курсорчик со структурой, анализируем, выстраиваем контролы и работаем. Насчет позиционирования тоже вполне можно красиво все обыграть... Это мне кажется не проблема. А насчет перехода между формами, то канечно же одной формой не обойтись. Можно вделать в _screen форму с деревом и по нему шагать...
Сорри, если коряво излогаю(
...
Рейтинг: 0 / 0
Переменное количество контролов на форме.
    #33364521
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi semenar!

> Насчет позиционирования тоже вполне можно красиво все обыграть...

Нет нельзя. В этом и проблема.
Если уж совсем ломает формы рисовать - пользуй грид в режиме Edit - всё
равно принципиально лучше ты авторасстановку не сделаешь.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Переменное количество контролов на форме.
    #33373994
Пытался
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытался сделать когда то подобную весч, казалось что все просто.
В результате на этапе проектирования столкнулся с тем что разработка подобного класса значительно более трудоемко (а значит невыгодно), чем создание всего набора форм вручную, в результате сделал несколько базовых классов форм и от них унаследовал остальные.
Сделать одну универсальную форму имхо не возможно для чего то серьезного.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Переменное количество контролов на форме.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]