Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / вопросик / 18 сообщений из 18, страница 1 из 1
21.08.2007, 21:49
    #34743237
form
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопросик
вопрос скорее философский

в наших проектах приходится создавать множество форм

особенно достает создание форм для корректироки справочников

например 30 справочников, форма корректировки справочников состоит собственонно из

наименования, грида(1-2 колонки), кнопки добавить, кнопки удалить

и каждую форму рисую вручную

может есть какие нибудь методы для оптимизации этого процесса

например создал 1 форму и она сама подстраивается под все справочники которые нужно редактировать?
...
Рейтинг: 0 / 0
21.08.2007, 23:20
    #34743309
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопросик
Я имею на все простые справочники одну форму. Вызываю форму с параметром имени таблицы этого справочника. Далее все операции делаю одинаково используя вместо имени таблицы это свойство формы...

Если таблицы разные, то в свойстве INIT GRID прописываю разные столбцы в зависимости от имени таблицы etc...
...
Рейтинг: 0 / 0
22.08.2007, 07:26
    #34743489
form
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопросик
в том то и вопрос
таблицы разные
в одной нужно корректировать 1 поле
в другой 8
тут нужно не просто табличку в грид подставить, но и расчитать величину формы,
количество полей в гриде, название колонок в гриде, да и поля бывают разной величины и типа
например символьные до 50 или 100 позиций, что при отражении в грид влияет на длину поля
опять же нужно чтобы все уместилось на форме и было читабельным.

как вы это все решаете?
...
Рейтинг: 0 / 0
22.08.2007, 09:31
    #34743686
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопросик
formв том то и вопрос
таблицы разные
в одной нужно корректировать 1 поле
в другой 8
тут нужно не просто табличку в грид подставить, но и расчитать величину формы,
количество полей в гриде, название колонок в гриде, да и поля бывают разной величины и типа
например символьные до 50 или 100 позиций, что при отражении в грид влияет на длину поля
опять же нужно чтобы все уместилось на форме и было читабельным.

как вы это все решаете?
С Grid я писал - в Init в зависимости от того, что надо - формирую вручную столбцы. Форма как праило принимает максимально допустимый размер. Если полей всего 2 до отсается незаполненное пространство в Grid, если 8 - то прокрутка. Если Ваши клиенты большие эстеты, то в методе INIT формы в зависимости от имени таблицы можно задавать ширину формы и положение кнопок, цвет etc.... Все это очень просто - форма остается одна, но кода внутри ее довольно много
...
Рейтинг: 0 / 0
22.08.2007, 09:32
    #34743689
Peisov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопросик
Я вот извращался так (правда в связке VFP+MS SQL)... Для каждого справочника написал свою хранимку, которая возвращает собственно справочник и описание таблицы. Например:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE PROCEDURE dbo.GetDivSpr AS

select id,kod,name from divisions

select - 1  as len, '' as name, 'id' as source, 1  as returned
union all
select  30  as len, 'Код' as name, 'kod' as source,  0  as returned
union all
select  0  as len, 'Отдел' as name, 'name' as source,  1  as returned
GO

где len - ширина колонки в гриде, name - это заголовок колонки, а sourse - это имя поля, отбражаемого в колонке...

В фоксе соответствеено выполняю запрос, получаю два курсора и далее "на лету" формирую сам грид (т.е. определяю количество колонок, ширину, заголовки и привязку к данным).
...
Рейтинг: 0 / 0
22.08.2007, 10:07
    #34743810
form
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопросик
в связке с SQL еще не думал

а вот по поводу автоматизации процесса в фоксе идея такая:

создаю две таблички - главная и зависимая

в главной указываю характеристики формы - размер, название, источник грида, к-во полей

в зависимой поля - название столбцов, ширина столбцов, источник столбцов и т.д.

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

стоит ли того..
...
Рейтинг: 0 / 0
22.08.2007, 10:10
    #34743827
form
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопросик
в вычислениях тоже есть неопределенности

например символьное поле размером 50 символов должно иметь в гриде колонку какой ширины в пикселях?
...
Рейтинг: 0 / 0
22.08.2007, 10:37
    #34743931
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопросик
авторможет есть какие нибудь методы для оптимизации этого процесса


есть - это ООП

пишется библиотекчка с классом-шаблоном-заготовкай
и от него виз-но пораждаются наследники,
или динам-ки изм-ся класс при подъеме в завис-ти от каких-то настроечных сущностей
...
Рейтинг: 0 / 0
22.08.2007, 11:02
    #34744034
Peisov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопросик
form
а вот по поводу автоматизации процесса в фоксе идея такая:

создаю две таблички - главная и зависимая

в главной указываю характеристики формы - размер, название, источник грида, к-во полей

в зависимой поля - название столбцов, ширина столбцов, источник столбцов и т.д.

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

стоит ли того..

А зачем такие сложности? Может проще для каждого справочника все-таки свою форму наваять. С гридом я изголялся только из-за того, что задолбало писать много однотипного кода - вот и забабахал такой класс...
...
Рейтинг: 0 / 0
22.08.2007, 11:16
    #34744086
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопросик
автордля каждого справочника все-таки свою форму наваять

неоптимальный способ,
который приводит к большим трудозатратам при поддержке софта
(не говоря уже о размерах прилож-я)
...
Рейтинг: 0 / 0
22.08.2007, 11:54
    #34744253
form
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопросик
прошелмимо авторможет есть какие нибудь методы для оптимизации этого процесса


есть - это ООП

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

здесь суть:

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

в этом суть, как динамически изменяется класс?
используя что изменяется? где эти настроечные сущности?
...
Рейтинг: 0 / 0
22.08.2007, 12:34
    #34744463
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопросик
formстоит ли того..
После многих лет изысканий (в том числе создания визуальных классов с наследованием, хранением параметров форм в таблицах и генерацией их "на лету") я остановился на описанном варианте - проще и нагляднее поддержка...

Но все зависит от Вас и Ваших пристрастий - сегодня Вам нравится баловаться с ООП, завтра Вы захотите стать сторонником простоты для других людей, поддерживающих Ваш код...
...
Рейтинг: 0 / 0
22.08.2007, 12:47
    #34744519
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопросик
пример
фокспро 9
показано наследование, перегрузка классов
показана динам-я закрузка и изменение объектов ("на лету")
в зависим-ти от состояния свойств-настроек
...
Рейтинг: 0 / 0
22.08.2007, 12:48
    #34744524
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопросик
пример для того чтобы просто посмотреть принцип.
фанатизма не нужно - это не прямое указание на стиль прогр-я
...
Рейтинг: 0 / 0
22.08.2007, 13:37
    #34744733
Peisov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопросик
прошелмимо автордля каждого справочника все-таки свою форму наваять

неоптимальный способ

Это у меня " два пишем - три в уме" ....
Подразумевалось следующее :
Есть некий класс my_grid ( на основе грида) с параметром pQuery и методом mRequery. В указанном методе выполняется запрос, указанный в пераметре и на основе полученных данных "на лету" оформляется грид.

Для работы со справочником я создаю форму, в которую добавляется my_grid и прописывается текст запроса + оформление формы (иконка, заголовок и пр.).

Вот такая форма и подразумевается для каждого справочника...
...
Рейтинг: 0 / 0
22.08.2007, 19:29
    #34745870
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопросик
прошелмимо авторможет есть какие нибудь методы для оптимизации этого процесса


есть - это ООП

пишется библиотекчка с классом-шаблоном-заготовкай
и от него виз-но пораждаются наследники,
или динам-ки изм-ся класс при подъеме в завис-ти от каких-то настроечных сущностей + 1
У меня такая библиотека: класс BaseForm (производный от фоксового Form) там прописано: автоизменение размера шрифта и размеров контролов, управление меню для формы (появляется когда форма активна), методы для модального/немодального вызова. Все формы проекта на основе этого класса или его производных.

Класс BForm производный от BaseForm: содержит Grid и кнопки (Добавить, Правка, Печать, Просмотр и т.д.) используется для отображения простых справочников. Прописан Resize(), свойство для имени формы правки, прописаны все кнопки. Прописан быстрый поиск по текущему индексу. Прописана менюшка формы с клавишами дублирующими кнопки (Ins, Del, F4) Grid тоже хитрый, в header.click() прописано установка SET ORDER TO по колонке, если есть индекс, или создание индекса если источник открыт монопольно.

Класс EForm производный от BaseForm: содержит кнопки (Сохранить Отмена) используется для отображения/правки записи справочника. Прописана установка на запись переданную из BForm, буферизация, tableupdate(), tablerevert() на кнопках.

Еще правила ключ таблицы обычно называю n{Имя таблицы}Id, формы b{Имя таблицы}, e{Имя таблицы}, чтобы автоматом по имени одного определять имя другого.

Как этим пользуюсь: например таблица SPR (nSprId, cSpr)
Код: plaintext
CREATE FORM bSpr AS BForm FROM '...'
создание формы с гридом. Добавляю в DE таблицу SPR и ставлю Order по умолчанию. Настраиваю колонки в гриде.
Код: plaintext
CREATE FORM eSpr AS EForm FROM '...'
создание формы с гридом. Добавляю в DE таблицу SPR, перетаскиваю все поля на форму, подписываю Caption, задаю порядок обхода полей.
Пару минут и со справочником можно работать.

Это вкратце, еще есть поля ввода, которые привязываются к справочнику, хранят Id отображают заданное поле, по двойному клику открывают справочник для выбора. и еще много всякой всячины.
...
Рейтинг: 0 / 0
23.08.2007, 08:13
    #34746327
form
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопросик
создание формы с гридом. Добавляю в DE таблицу SPR, перетаскиваю все поля на форму, подписываю Caption, задаю порядок обхода полей.
Пару минут и со справочником можно работать.


перетаскиваю все поля на форму... - ручная работа получается

а нельзя ли так , чтобы форма анализировала отражаемую таблицу и по ее характеристикам размещала грид, устанавливала ширину полей, название полей и т.д.
...
Рейтинг: 0 / 0
23.08.2007, 08:33
    #34746351
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопросик
formа нельзя ли так , чтобы форма анализировала отражаемую таблицу и по ее характеристикам размещала грид, устанавливала ширину полей, название полей и т.д. Можно. Ты же спросил кто как делает.
Только на мой взгляд авторазмещение будет убого смотреться. Руками гораздо лучше форму с полями скомпоновать, где-то pageframe может понадобится, пара минут работы мышкой - не высокая цена. Да и человеческие подписи полей все-равно нужны. И как правило этим не ограничивается, обычно надо бывает что-то еще допрописать индивидуальное для конкретной формы, например, убирание двойных пробелов в наименовании или принудительная установка первой заглавной буквы.
Тут почитай, обсуждали необходимость и разумность использования подобных библиотек.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / вопросик / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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