|
|
|
Динамические интерфейсы
|
|||
|---|---|---|---|
|
#18+
Кто-нибудь имеет опыт работы с динамическиме интерфейсами, т.е. когда не известно как должна выглядеть форма и она создается сторонним кодом из Access. Поделитесь опытом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2003, 22:56 |
|
||
|
Динамические интерфейсы
|
|||
|---|---|---|---|
|
#18+
Давайте немного уточним суть вопроса. Что значит сторонний код из Access? И будем ориентироваться на MDB/ADP или MDE/ADE? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2003, 23:24 |
|
||
|
Динамические интерфейсы
|
|||
|---|---|---|---|
|
#18+
давайте уточним: mdb или adp (на Ваш выбор) сторонний по отношению к создаваемой форме (я это подчеркунул, так как можно писать код в форме, который модифицирует сам себя), т.е. распологается в том же файле. все инструменты есть (собственно с их помощью встроенные мастера создают формы) пока есть время, хочу понять насколько это будет сложно, есть альтернатива web формы не dotnet. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2003, 23:30 |
|
||
|
Динамические интерфейсы
|
|||
|---|---|---|---|
|
#18+
Тут выбор не между ADP и MDB, а между MDB и MDE. Дело в том, что некие функции в MDE/ADE недоступны. Там нельзя открыть форму в режиме конструктора и создать элемент управления, но можно изменить уже созданные. Поэтому идеология будет отличаться. Все таки думаю надо ориентироваться на скомпилированный файл. В принципе нет разности размещать код в самой форме или вынести ее в отдельный модуль, кроме как код в форме будет копироваться для каждого нового экземпляра формы, а код модуля будет всегда в одном экземпляре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 00:19 |
|
||
|
Динамические интерфейсы
|
|||
|---|---|---|---|
|
#18+
Тут выбор не между ADP и MDB, а между MDB и MDE не нужно додумывать того, что не написано, вы спросили какой файл, я ответил mdb или adp, это раз. Второе, вы предлагаете бред, в скомпилированном файле нельзя создавать новые формы, зачем мне менять свою идеологию с создания на изменение, если я могу работать с mdb (adp), зачем лезть в более ограниченный формат, тем более, когда нужно программно создавать объекты? В принципе нет разности размещать код в самой форме или вынести ее в отдельный модуль, кроме как код в форме будет копироваться для каждого нового экземпляра формы, а код модуля будет всегда в одном экземпляре. мне кажется, вы не поняли вопроса, если поняли, приведете пример кода, который модифицирует сам себя (достаточно идеологию показать) P.S. я просил поделиться опытом, тех, кто с этим работал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 01:55 |
|
||
|
Динамические интерфейсы
|
|||
|---|---|---|---|
|
#18+
2-=Alexey=- Опишите задачу. Возможно вы взялись за проблему не стого конца. ИМХО, динамически ничего строить в программе не надо, если программа сделана правильно. Вот насоздовать готовых объектов и менять их свойства - это пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 09:24 |
|
||
|
Динамические интерфейсы
|
|||
|---|---|---|---|
|
#18+
в сторону: Да вам, батенька, вирусы писать надо (с) знакомый сишный программер во время консультаций... Имхо, некрасиво задавать вопросы, а потом еще и беззастенчиво наезжать на ответивших, тем более если ответивший - сторожильный сторожила форума :) //не вынесла душа поэта для -=Alexey=-: > ...т.е. когда не известно как должна выглядеть форма Очень просто! Герерите случайные числа и создаете по результатам контролы, заполняете их свойства опять же случайными числами - вуаля! Получится то, не известно что Или все же известно? Т.е. нечто или некто должен все-таки настраивать заранее определенный костяк? Задача действительно не ясна. То ли создание собственных мастеров (действительно, иногода оч.полезная штука), то ли создание интерфейса "на лету" (а юзер ждать не запарится?), то ли еще что... >P.S. я просил поделиться опытом, тех, кто с этим работал С чем? Уточните пжалста... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 10:01 |
|
||
|
Динамические интерфейсы
|
|||
|---|---|---|---|
|
#18+
Второе, вы предлагаете бред, в скомпилированном файле нельзя создавать новые формы, зачем мне менять свою идеологию с создания на изменение, если я могу работать с mdb (adp), зачем лезть в более ограниченный формат, тем более, когда нужно программно создавать объекты? Все зависит от того, для чего все делается. Если Вы делаете что-то вроде собственного мастера создания форм для разработчика - это одно. Если для юзера настройка внешнего вида формы - это другое (это ответ зачем лезть в более ограниченный формат). Я делал и тот и тот вариант. Опишите подробнее конечную цель создания динмаических интерфейсов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 10:41 |
|
||
|
Динамические интерфейсы
|
|||
|---|---|---|---|
|
#18+
Нуф-нуф Да не, вирусы ту не причем. Код модифицирующий сам себя писал чтобы зашифровать форму, т.е. чтобы на вид выглядела как абракадабра, и тем неменее работала. Но это так, извращения молодости были :) сейчас разговор не об этом. To All Абсолютно правильно коллеги по форуму требуют конкретизировать, рассказываю откуда такая нужда взялась и как хотелось бы ее решить. На данные момент мне известен один пример такого интерфейса, но в будущем им скорее всего не ограничится. Поиск по базе объектов разбитых на группы, где в каждой группе свой набор атрибутов (поиск объектов по атрибутам). Нарисовать n-кол-во форм не могу, хотя бы потому что набор атрибутов объектов является расширяемым. У этой задачи есть решение стандартными средствами - кросс запрос и затем фильтр Access, но данное решение не устраивает Заказчика. Если уж решать задачу, то хотелось бы следующее сделать класс по созданию новой формы в качестве костяка берется какой-то шаблон (нужно определиться что такое костяк) у класса есть методы позволящие добавлять контролы разных типов на форму, с возможнотью приделать обработчики событий и источники данных поставить, эти же методы должны заботиться о корректном размещении контролов на форме (нужно решить, что делать если их слишком много будет) если костяк в недостаточной степени определяет вид формы, значит еще нужны методы прилепляющие стандартные "бантики". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 12:08 |
|
||
|
Динамические интерфейсы
|
|||
|---|---|---|---|
|
#18+
Таким образом заказчик получает незакрытый MDB/ADP файл? И все юзеры работают с файлом, в который можно внести изменения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 12:19 |
|
||
|
Динамические интерфейсы
|
|||
|---|---|---|---|
|
#18+
Еще немного Поделится опытом решения подобной задачи могу, но боюсь Вас такой вариант не устроит. Прежде всего нужна нормализация: атрибуты хранятся не "горизонтально" а "вертикально", т.е. в одной таблице группа, вид/тип атрибута, наименование, значение. Для каждой группы есть кнопка с нередактируемым списком атрибутов и формой редактирования/добавления атрибута. Форма редактирования может быть разной для каждого вида/типа атрибута (в этом случае перед добавлением нового атрибута необходимо указать его вид/тип). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 12:34 |
|
||
|
Динамические интерфейсы
|
|||
|---|---|---|---|
|
#18+
Это не нормализация, а вертикализация Идея вертикального хранения свойств, конечно, хороша (в нескольких проектах так и сделал), но не надо забывать о недостатках такой структуры - "значение" получается нетипизированным. В одном поле хранится информация разная не только по смыслу, но и по типу, что противоречит всем правилам построения баз данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 12:59 |
|
||
|
Динамические интерфейсы
|
|||
|---|---|---|---|
|
#18+
2 Лох Позорный Согласен, если кол-во атрибутов фиксированное, то каждый должен хранится в своем поле согласно правилам построения баз данных :) Но если количество атрибутов плавает, то уж лучше вертикализация, чем постоянно расширять таблицу и динмаически генерить формы. ... ИМХО, конечно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 13:08 |
|
||
|
Динамические интерфейсы
|
|||
|---|---|---|---|
|
#18+
вертикализация не катит, только не хватало еще динамически в таблицу поля добавлять (или я чего-то не понял) атрибуты уже типизированны, 5 типов. один из них представляет набор значений (массив), еще один имеет два значения верхнее и нижнее, остальные представляют одно поле, только типом отличаются. Когда я писал про класс и методы добавляющие контролы на форму, не имел в виду только поле и комбобокс, возможны также конторолы логика которых определена на уровне класса, например атрибут диапазон представляет два текстовых поле, где первое <= второго и оба представляют собой числа; набор значений - подчиненая форма, ... суть не в этом, кол-во атрибутов ничем не ограничено, так же админ в праве завести сколько угодно объектов и приделать к ним атрибуты на свой вкус, т.е. модель должна быть расширяема. что вы привязались к mde, ade это к делу не относиться, спросили же про формат файла, был ответ mdb или adp (на вкус) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 14:35 |
|
||
|
Динамические интерфейсы
|
|||
|---|---|---|---|
|
#18+
2Лоху > В одном поле хранится информация разная не только по смыслу, но и по типу, что противоречит всем правилам построения баз данных Лох, никаких правил не будет нарушено. Пример, Количество. У него есть признак ЕдиницаИзмерения. Таким образом в одной месте храняться Мухи и Котлеты. Что если и на что-то влияет, то только на аппетит Таким образом, если у атрибута есть признак "ЕдиницаИзмеренияАтрибута", то проблем (вроде) с хранением разнотипных (вернее сказать разноединицоизмеряемых :) )значений быть не должно. === Стандартная отпискка: ИМХО :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 14:39 |
|
||
|
Динамические интерфейсы
|
|||
|---|---|---|---|
|
#18+
Нервных попросю удалиться... (Программерам со стажем более 3-х лет читать не рекомендуется :) Вариант 1: Динамически создавать форму по принципу мастеров, при этом в период времени между "открывающими" фому действиями юзверя и непосредственным открытием формы - показывать юзверю мультики... Достоинства: "и нефик голову ломать"... Недостатки: только mdb/adp, тормознутость (в момент создания и в момент исполнения кода формы, который останется некомпиленым), глючность (создать форму в скрытом виде, повтыкать контролы в форму и код в модуль, завязать события - навряд ли получится решить в лоб и без глюков), постоянный рост файла интерфейсной части БД и т.п. Вариант 2: Создаем "костяк" - несколько форм с заранее (с запасом) понавтыкнутых в них нужных контролов, которые на лету настраиваются в соответствии со списком атрибутов. Достоинства: Побыстрее (на несколько порядков) 1-го варианта. Недостатки: Недостаточная гибкость при мало-типизированных НАБОРАХ атрибутов в сущностях. Вариант 3: Формируем на лету текстовое представление атрибутов и их свойств, вываливаем юзверю на форму (в ричтекстбоксе) и позволяем просматривать что-угодно и, соответственно, менять что угодно. Достоинства: Аб-со-лют-на-я гибкость :) Недостатки: необходимость организовывать синтаксический разбор и... объяснять юзверю, что менять нужно только то, что написано жирным (курсивом и т.п.). Вариант 4: Создаем форму (главную форму) с понавтыкаными в нее не связанными подчиненными формами, т.е. просто контролы подчиненной формы, не привязанные к конкретным формам. Создаем формы с какими угодно фильдеперсовыми контролами (формы-контролы), отображающими ОДИН атрибут (на одну форму - один "контрол/составной_контрол"). В момент открытия главной формы втыкиваем в наделанные с запасом контролы подчиненных форм какие угодно формы-контролы. Достоинства: максимальная гибкость до момента, пока кол-во атрибутов не превысит кол-ва заготовленных на главной форме подчиненных "окошек". Недостатки: и как эти самые формы-контролы подключать к данным? Программно, наверно... Вариант 5: ТриВью :) Отображать значения атрибутов прям в дереве, а по двойному клику открывать всплывающую форму с необходимым контролом (для редактирования значения атрибута) Вариант 6: Объяснить "админу", что его вкус компутер понимать отказывается и... поступить по 7-му варианту, который, не сомневаюсь, предложит All :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 16:18 |
|
||
|
Динамические интерфейсы
|
|||
|---|---|---|---|
|
#18+
Я, конечно, человек малограмотный и дремучий, но мне кажется, что заданный вопрос чрезвычайно интересен. Лично мне надоело рисовать формы (и отчеты) в графическом интерфейсе, тем более, что они почти все одинаковые (или похожие). Единственное, чем они отличаются - источниками данных для связанных контролов и процедурами обработки событий. Было бы гораздо интереснее создавать формы кодом на основе каких -то шаблонов. Формы ведь для чего нужны? Чтобы показать/засунуть то что лежит/не лежит в БД. Нуф-Нуф, А нет ли у Вас варианта кода форматирования к-л формы ( на основе к-л случайной структуры данных) из предложенных Вами вариантов для оценки реальности применения данной методики? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 16:41 |
|
||
|
Динамические интерфейсы
|
|||
|---|---|---|---|
|
#18+
Вариант 7: Вставить в форму IE-вийвер и формировать html на лету, подсовывая его потом в этот самый активХ - и контролы какие хош и скока хош и оформление на уровне и скрипты, опять же. Самый-пре-самый клевый вариант, кажется :) А? з.ы. а сервак только для меня упал или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 16:54 |
|
||
|
Динамические интерфейсы
|
|||
|---|---|---|---|
|
#18+
2 Сенин Виктор И все таки они нарушаются. Если мне в одном поле придется хранить цвет, вес, страну, цену и наименование - беда будет. По уму они должны быть какие-то числовыми, какие-то строковыми, какие-то ссылками на справочные таблицы. А в случае вертикального хранения - все текст, и то только потому, что Variant в базе нельзя хранить. Никаких проверок, никакой ссылочной целостности, никакого индексирования. Можно пытаться что-то ручками воссоздать, для каждого атрибута указывать его тип, для каждого типа - его специфику (диапазон и т.п.). Но все равно получается, что в поле хранится НЕЧТО неопределенное, пусть даже и с единицей измерения :) А то что в одном месте хранятся мухи и котлеты - не совсем корректный пример. В одном месте (поле) хранится кол-во чего-то (неопределенно конечно звучит, но это хоть точно количество, а не абстрактное НЕЧТО), в другом месте (поле) - расшифровка этого чего-то (наименование, ссылка) , в третьем - единица измерения и т.п. 2 Алексей вертикализация не катит, только не хватало еще динамически в таблицу поля добавлять (или я чего-то не понял) Ты все понял. Но с точностью до наоборот. Добавлять поля в таблицу, тем более динамически - это какая-то горизонтализация получается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 16:58 |
|
||
|
Динамические интерфейсы
|
|||
|---|---|---|---|
|
#18+
Вариант 7 - наиболее прикольный (имхо) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 17:00 |
|
||
|
Динамические интерфейсы
|
|||
|---|---|---|---|
|
#18+
2wara Во-во (про одинаковые формы). Я в своём междумордии через несколько дней поддержку .mdb сделаю и сюда ссылку кину. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 17:07 |
|
||
|
Динамические интерфейсы
|
|||
|---|---|---|---|
|
#18+
> з.ы. а сервак только для меня упал или нет? У меня тоже падал. :^) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 17:29 |
|
||
|
Динамические интерфейсы
|
|||
|---|---|---|---|
|
#18+
>Я, конечно, человек малограмотный и дремучий, но мне кажется, что заданный вопрос чрезвычайно интересен. Лично мне надоело рисовать формы (и отчеты) в графическом интерфейсе, тем более, что они почти все одинаковые (или похожие). Единственное, чем они отличаются - источниками данных для связанных контролов и процедурами обработки событий. Было бы гораздо интереснее создавать формы кодом на основе каких -то шаблонов. Формы ведь для чего нужны? Чтобы показать/засунуть то что лежит/не лежит в БД. Нуф-Нуф, А нет ли у Вас варианта кода форматирования к-л формы ( на основе к-л случайной структуры данных) из предложенных Вами вариантов для оценки реальности применения данной методики? Для wara: Сразу должен оговориться, что предложенные варианты - не более чем "мозговой штурм". Любое универсальное решение, предложенное для решения конкретно поставленной задачи будет так или иначе уступать узконаправленному (на эту задачу) решению. Поэтому, если вам необходимо выполнить простую задачу, то не стоит пользовать "динамические интерфейсы". А вот в контексте данного топика (покажи то, еще толком не знаю что) простые (типовые) решения мало применимы, поэтому и приходится "штурмовать". Хотя, имхо, любую задачу необходимо пытаться свести к типовой (например: Задача: Разделить поровну 0,8 л водки на троих. Решение: налить каждому по 100 гр, после чего задача приводится к типовой, т.е. 0,5 л на троих :) >...тем более, что они почти все одинаковые (или похожие) Лично я для "почти одинаковых" форм и отчетов создаю шаблоны, которые активно и пользую - копирую их в БД, переименовываю и вперед... И без всяких там мастеров :) >...гораздо интереснее создавать формы кодом... Именно так и поступают супер-крутые программеры, которые лобают непосредственно на ВинАПИ. Но только представьте себе, что для создания элементарной кнопочки на форме вместо клика-перемещения-клика вам необходимо написать десяток строк кода, с описанием где-что-как-какое! Графический интерфейс призван не столько облегчить разработку программ, сколько увеличить ее эффективность (имеется в виду экономическая эффективность). >А нет ли у Вас варианта кода... Дык... Какую его часть из десятка модулей (классов)? Т.е. вобще-то я в большинстве случаев пользую самый не динамичный интерфейс, но у меня есть грид на основе ленточной формы, который полностью настраивается динамически (от, в некоторых случаях, связывания контролов с источником данных, до цвета границы контролов). Сия система реализована по второму варианту (см.выше), при этом только настройка внешнего вида грида в соответствии с настройками Разработчика и Юзера производится посредством примерно 700 строк кода (естественно, не все выполняется, поэтому работает быстро даже на приторможенных машинах), а ведь еще надо: Хранить настройки Разработчика/Администратора/Юзера Загружать настройки в комутер (формирование объектной модели) Подключать Целевой грид к одной из Опорных форм грида Настраивать Опорную форму в соответствии с настройками Целевого грида И т.д и т.п... Шо-нить конкретно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 17:41 |
|
||
|
Динамические интерфейсы
|
|||
|---|---|---|---|
|
#18+
мля :((( Сорри за полное цетирование wara - так получилось :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 17:44 |
|
||
|
Динамические интерфейсы
|
|||
|---|---|---|---|
|
#18+
Нуф-нуф, Спасибо за обстоятельный ответ. Всегда интересно услышать мнение человека, который хорошо разобрался в вопросе и имеет по нему конкретные наработки. К сожаленнию, в данный момент у меня не будет возможности "наваять" что-нибудь по этой теме, чтобы затем задать Вам конкретный вопрос. Так что на данном этапе сообщенных Вами сведений для меня вполне достаточно. "Лично я для "почти одинаковых" форм и отчетов создаю шаблоны, которые активно и пользую - копирую их в БД, переименовываю и вперед" - я тоже так делаю, но мне это совсем не нравится, поскольку это увеличивает количество объектов БД, что, как мне кажется, не есть хорошо. Вот повторно используемые макеты - более красивый вариант. Если б можно было сократить их количество хотя бы до 10 - какая бы была красота!10 форм на все случаи жизни - возможно ли такое? Или жизнь бесконечно разнообразна? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 18:06 |
|
||
|
|

start [/forum/topic.php?fid=45&fpage=1793&tid=1681126]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 359ms |

| 0 / 0 |
