|
|
|
Переменное количество контролов на форме.
|
|||
|---|---|---|---|
|
#18+
Идея в следующем. Есть база под Ораклом. При добавлении/удалении полей под Ораклом надо переделывать форму. А не хочется. Возможно-ли сделать универсальную форму с переменным количеством контролов. Текстбоксов или комбо к примеру. То есть выбираем количество колонок из вьювера или таблицы, анализируем дилну поля, имя, тип и выстраиваем форму "динамически". Заодно и "облегчаем" проект от ненужных форм. Примеры крайне приветствуются! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2005, 09:34:24 |
|
||
|
Переменное количество контролов на форме.
|
|||
|---|---|---|---|
|
#18+
Передавайте в форму имя Оракл-таблицы, далее в .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С. Иногда полезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2005, 17:15:29 |
|
||
|
Переменное количество контролов на форме.
|
|||
|---|---|---|---|
|
#18+
форма обычно рисуется под правильно спроектированную, нормализованную базу ( у Вас разве не так?). Тогда откуда постоянная смена структуры таблиц? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2005, 07:55:53 |
|
||
|
Переменное количество контролов на форме.
|
|||
|---|---|---|---|
|
#18+
автор Тогда откуда постоянная смена структуры таблиц? всё меняется. Раньше поля инн не было, теперь есть. В договоре указывался отдел а теперь нужно указывать конкретного сотрудника. И пр. Реализуемо. Делал пару лет назад (но оракл не поддерживается) http://sss1024.narod.ru/ver.htm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2005, 14:36:05 |
|
||
|
Переменное количество контролов на форме.
|
|||
|---|---|---|---|
|
#18+
Hi semenar! IMHO в 99% случаев проще, быстрее и надёжнее при изменении структуры поправить саму форму, нежели рисовать совсем нетривиальный код по "автоматическому" созданию формы, и в результате к тому-же получить какое-нить убожество типа создаваемых фоксовым Form Wizard форм :( А чтоб не морочится вопросом "не хочу постоянно перекомпилировать exe" - просто не включай эту форму внутрь - оставь как есть - scx+sct оно без вопросов запускается из рантайма (т.е. из простого exe-загрузчика). Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2005, 00:03:18 |
|
||
|
Переменное количество контролов на форме.
|
|||
|---|---|---|---|
|
#18+
это слишком упрощённый подход. Когда форм много то редактировать каждую накладно. Для поддержки легче сделать что-то универсальное. Много это, скажем, 50 форм на 1 разработчика. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2005, 11:15:06 |
|
||
|
Переменное количество контролов на форме.
|
|||
|---|---|---|---|
|
#18+
Hi 1024! IMHO если у тебя одно и то-же поле из одной таблицы используется во ВСЕХ формах, причём это не оформлено как класс (формы, или грида, или контейнера какого-нить) - это наводит на нехорошие мысли. Также нехорошие мысли навевает собственно перманентная модификация структур - видимо изначально что-то упущено было, что теперь так много менять приходится... Обычно ввод нового поля сказывается на 1-2 формах или классах. А проблема автогенерации в том, что в пределе состав реквизитов мета-информации стремится к ровно тому-же набору, что и хранится в scx/vcx файле в виде свойств объектов. Т.е. мы получаем дубль scx - но в своей структуре, со своими глюками, необходимостью делать свой редактор и т.п. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2005, 01:16:46 |
|
||
|
Переменное количество контролов на форме.
|
|||
|---|---|---|---|
|
#18+
Дак в том -то и идея. Чтобы сделать универсальную форму на приложение. Есть предположим под Ораклом 60 view. Так неохота писать 60 форм! Проже сделать одну. Ведь ввод, корректировка, удаление поиск имеет один синтаксис практически. Меняется только название таблицы или вьювера. Задача "облегчить" жизнь программиста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2005, 12:10:10 |
|
||
|
Переменное количество контролов на форме.
|
|||
|---|---|---|---|
|
#18+
semenarДак в том -то и идея. Чтобы сделать универсальную форму на приложение. Не ты первый, не ты последний "загорелся" этой идеей. Только вот она не выдерживает столкновения с "прозой жизни". semenarЕсть предположим под Ораклом 60 view. Так неохота писать 60 форм! Проже сделать одну. Ведь ввод, корректировка, удаление поиск имеет один синтаксис практически. Меняется только название таблицы или вьювера. Задача "облегчить" жизнь программиста. Ну, ты "крут". Это у тебя 60 абсолютно одинаковых форм? Т.е. никаких новых взаимосвязей между объектами? Если выписываешь накладную или счет-фактуры - никакой разницы в процессе ввода? Ничего не надо проверять ДО попытки сохранения внесенных изменений? Ты попробуй создать "обычные" формы и посмотри какие взаимосвязи между объектами этой формы тебе придется организовывать. Ни за что не поверю, что у тебя будет "все одинаково". Наверняка начнуться проблемы типа "если вот эта форма, то при нажатии вот этой птички надо выделить цветом вот это, а если другая форма, то вот это". Сделать "универсальный" интерфейс в принципе можно, но за счет резкого ограничения этого самого интерфейса. При этом "сопровождение" этого универсального интерфейса выльется в сплошную головную боль. Надо каждое пожелание пользователя в одной конкретной форме увязывать с тем, а как это его пожелание отразится на остальных 59 формах. Т.е. ты не облегчишь, а резко усложнишь жизнь программиста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2005, 12:36:12 |
|
||
|
Переменное количество контролов на форме.
|
|||
|---|---|---|---|
|
#18+
Ты попробуй создать "обычные" формы и посмотри какие взаимосвязи между объектами этой формы тебе придется организовывать. Ни за что не поверю, что у тебя будет "все одинаково". Наверняка начнуться проблемы типа "если вот эта форма, то при нажатии вот этой птички надо выделить цветом вот это, а если другая форма, то вот это". ====================== не "одинаково" а "унифицировано". В большинстве случаев формы содержат одинаковые элементы. Пример - 1ц Сделать "универсальный" интерфейс в принципе можно, но за счет резкого ограничения этого самого интерфейса. При этом ================================ на счёт "резкого" ограничения - наверна не всё так плохо. "сопровождение" этого универсального интерфейса выльется в сплошную головную боль. Надо каждое пожелание пользователя в одной конкретной форме увязывать с тем, а как это его пожелание отразится на остальных 59 формах. =================================== непонятно как это связано. У меня например интерфейс может быть разным для каждого пользователя а данные и логика едины для всех и всегда Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2005, 14:27:19 |
|
||
|
Переменное количество контролов на форме.
|
|||
|---|---|---|---|
|
#18+
1024 не "одинаково" а "унифицировано". В большинстве случаев формы содержат одинаковые элементы. Пример - 1ц Я не в курсе, разве формы 1С построены по приведенной технологии? Есть некий универсальный класс "построитель", которому передается вся информация по метаданным и он что-то там у себя строит? Если под "унификацией" понимается единный стиль оформления форм, то это вовсе не значит, что для организации одинакового стиля в каждом конкретном случае потребуется однаковый код его формирования. 1024на счёт "резкого" ограничения - наверна не всё так плохо. Зависит от круга решаемых задач. Если интерфейс - дело второстепенное (например, при подготовке отчетов), то пожалуйста. А если интерфейс - это существенная часть работы (заполнение документов), то при таком "универсальном" интерфейсе будешь спотыкаться на каждом шагу и материть разработчика этого безобразия. 1024"сопровождение" этого универсального интерфейса выльется в сплошную головную боль. Надо каждое пожелание пользователя в одной конкретной форме увязывать с тем, а как это его пожелание отразится на остальных 59 формах. =================================== непонятно как это связано. У меня например интерфейс может быть разным для каждого пользователя а данные и логика едины для всех и всегда Я имел в виду, что если в процессе развития приложения потребуется добавить не просто новое поле, но некий взимосвязанный с этим полем интерфейс, то это приведет к большим проблемам. К ветвлению интерфейса по логину пользователя это не имеет отношения. Там обычно просто блокировка доступа в зависимости от прав. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2005, 14:55:24 |
|
||
|
Переменное количество контролов на форме.
|
|||
|---|---|---|---|
|
#18+
Я имел в виду, что если в процессе развития приложения потребуется добавить не просто новое поле, но некий взимосвязанный с этим полем интерфейс, то это приведет к большим проблемам. =============== не так уж это и сложно реализовать К ветвлению интерфейса по логину пользователя это не имеет отношения. Там обычно просто блокировка доступа в зависимости от прав. ================== у кого-то обычно там одно, у кого-то другое Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2005, 15:15:37 |
|
||
|
Переменное количество контролов на форме.
|
|||
|---|---|---|---|
|
#18+
1024 Я имел в виду, что если в процессе развития приложения потребуется добавить не просто новое поле, но некий взимосвязанный с этим полем интерфейс, то это приведет к большим проблемам. =============== не так уж это и сложно реализовать Да. Один раз. А если надо в каждой из этих 60 форм? Напомню, речь идет об универсальном классе. Т.е. все возможное многообразие интерфейса необходимо "впихнуть" в один класс. PS: Кстати, насчет "облегчения работы программиста". А как будут обстоять дела с позиционированием новых объектов (координаты)? Я уже как-то привык к дизайнерам. Мышкой поставил обект куда надо и все. А при такой "унификации" опять высчитывать позицию на калькуляторе? PPS: Если это все настолько просто, то почему до сих пор такой подход не реализован в промышленных ERP-системах? Или я просто не в курсе? Имею в виду не элементы такого подхода для второстепенных фором (вроде подготовки отчетов), а именно реализация для основных рабочих форм (заполнение основных документов). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2005, 15:43:48 |
|
||
|
Переменное количество контролов на форме.
|
|||
|---|---|---|---|
|
#18+
Да. Один раз. А если надо в каждой из этих 60 форм? Напомню, речь идет об универсальном классе. Т.е. все возможное многообразие интерфейса необходимо "впихнуть" в один класс. =================================== чесн говоря не знаю что о чём речь у вас а у меня речь о том что это реализуется не так уж и сложно. Будут какие-то потери в гибкости но будет выигрыш в поддержке когда меняется база данных (т.е. логика системы). Решается в каждом отдельном случае. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2005, 17:22:42 |
|
||
|
Переменное количество контролов на форме.
|
|||
|---|---|---|---|
|
#18+
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","Имя таблицы") Плюсы... Интересная работа, Программы накидываются легко... Весь интерфейс одинаковый и думаешь только о данных... и отчетах... Минусы... Когда напишешь... и захочется что-нибудь этакого... будешь ограничен рамками своей же технологии... которую рушить жаль, да и смысла нет... а добавлять к ней больше всяких возможностей не стоит, забываешь как потом своими же функциями пользоваться... :) Правы наверное те - кому легче на форму че-то набросать... Хотя очень редко их экраны выглядят удобными для пользователей, надежными и единообразными что-ли... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2005, 11:01:56 |
|
||
|
Переменное количество контролов на форме.
|
|||
|---|---|---|---|
|
#18+
Друзья, но может я как-то некорректно выразился ио кто-то меня не совсем так понял. Что я имел ввиду: Есть n-таблиц на сервере Оракловском.. Есть k- представлений из n таблиц. (view). Вставка, удаление, редактирование обрабатывается триггером вьювера. Так же и поиск. Ну пусть учавствуют на форме текстбоксы , комбо и лейблы. С этой стороны безусловно какое-то ограничение. Зато простой и понятный интерфейс. Передавая в качестве параметра имя вьвера, выгружаем с Оракла курсорчик со структурой, анализируем, выстраиваем контролы и работаем. Насчет позиционирования тоже вполне можно красиво все обыграть... Это мне кажется не проблема. А насчет перехода между формами, то канечно же одной формой не обойтись. Можно вделать в _screen форму с деревом и по нему шагать... Сорри, если коряво излогаю( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2005, 13:09:33 |
|
||
|
Переменное количество контролов на форме.
|
|||
|---|---|---|---|
|
#18+
Hi semenar! > Насчет позиционирования тоже вполне можно красиво все обыграть... Нет нельзя. В этом и проблема. Если уж совсем ломает формы рисовать - пользуй грид в режиме Edit - всё равно принципиально лучше ты авторасстановку не сделаешь. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2005, 16:11:16 |
|
||
|
Переменное количество контролов на форме.
|
|||
|---|---|---|---|
|
#18+
Пытался сделать когда то подобную весч, казалось что все просто. В результате на этапе проектирования столкнулся с тем что разработка подобного класса значительно более трудоемко (а значит невыгодно), чем создание всего набора форм вручную, в результате сделал несколько базовых классов форм и от них унаследовал остальные. Сделать одну универсальную форму имхо не возможно для чего то серьезного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2005, 15:29:42 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33353139&tid=1593093]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
460ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 806ms |

| 0 / 0 |
