Страница 1 из 2

Скрытие столбцов датабэнда

Добавлено: 02 фев 2009, 06:40
BeraleX
Решил открыть все таки еще один топик.
Ситуация следующая.
Необходимо скрыть в зависимости от некоторых предварительных настроек один ли несколько столбцов в заголовке данных и самом датабэнде с соответствующим смещением остальных столбцов влево до заполнения освободившегося места.
То же самое приблизительно нужно сделать с чартом - скрыть график, соответствующий этому столбцу на датабэнде (т.е. строится по тем же данным что и скрываемая колонка).
Как бы с этим разобраться...
Спасибо огромное.

Скрытие столбцов датабэнда

Добавлено: 02 фев 2009, 07:36
Edward
Здравствуйте.

Любой компонент на странице или на бэнде можно скрыть при помощи установки свойства 'Enabled' этого компонента в false в BeforePrint событии родительского компонента. Можно снять галочку 'Component is enabled' в Сonditions этого компонента и указать соответствующее условие.

Для того, чтобы компоненты сдвигались, используйте, пожалуйста, свойство Dock.

Спасибо.

Скрытие столбцов датабэнда

Добавлено: 02 фев 2009, 10:28
BeraleX
Все это хорошо, но есть несколько неудобностей.
1)Если мы все поля на датабэнде или заголовке стыкуем по левому краю,
то непонятно, по какому принципу они выстраиваются. ПО порядку добавления на страницу?
2) Если мне нужно у колонки сделать подколонки (это касается заголовка), то как быть в таком случае?
Все просто ползет как ему заблагорассудится, одним выставлением свойсва Dock в значение Лево ничего добится невозможно.
Что делать в таком случае?
3) и Как же все таки скрыть один из графиков на чарте программно, чтобы он не отображался.

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

Скрытие столбцов датабэнда

Добавлено: 02 фев 2009, 14:52
Edward
Здравствуйте,
1)Если мы все поля на датабэнде или заголовке стыкуем по левому краю,
то непонятно, по какому принципу они выстраиваются. ПО порядку добавления на страницу?

Компоненты стыкуются в порядке добавления на страницу. Этот порядок можно отобразить:

Пункт меню View -> Show Order.

При помощи комманд 'Bring To Front', 'Send To Back' возможно изменять этот порядок.
2) Если мне нужно у колонки сделать подколонки (это касается заголовка), то как быть в таком случае?
Все просто ползет как ему заблагорассудится, одним выставлением свойсва Dock в значение Лево ничего добится невозможно.
Что делать в таком случае?

В этом случае нужно добавить панель, на которой будет расположены другие компоненты.

Сейчас прорабатывается механизм якорей, но пока конкретных сроков о готовности нет.
3) и Как же все таки скрыть один из графиков на чарте программно, чтобы он не отображался.

Вы можете отключить серию из события BeforePrint:

Код: Выделить всё

if (Chart1.Series.Contains(this.NameOfTheSeriesToSwitchOff)) Chart1.Series.Remove(this.NameOfTheSeriesToSwitchOff);
или добавить:

Код: Выделить всё

if !(Chart1.Series.Contains(this.NameOfTheSeriesToAdd))  Chart1.Series.Add(this.NameOfTheSeriesToAdd);
Спасибо.

Скрытие столбцов датабэнда

Добавлено: 03 фев 2009, 03:54
BeraleX
Спасибо за ответы.
Насчет 2-го вопроса буду ждать, т.к. якоря все таки нужны, ведь в принципе это стандартный и достаточно распространенный механизм. Да и колонки приходится часто скрывать, а просто не включать их в выборку и пользоваться кросстабами нельзя, так как эти колонки могут использоваться при достаточно сложном расчете значений других колонок, которые уже могут быть не скрыты. А пока все устроило и в моем способе решения и в Вашем.
По поводу 3-го вопроса в принципе я догадался и сам, просто потребовалось чуть больше времени. Эксперименты проводил на версии 2007.3.13, немного неудобно в плане редактора кода. Часто свойства и методы приходится у компонентов смотреть в Visual Studio, т.к. в редакторе генератора отчетов (в части закладки "Код", события формы и компонентов формы) они не подсвечиваются. Может быть в более поздних версиях это исправлено? Не могу проверить точно, т.к. версия работает с нашим софтом из дистрибутива, есть некоторые сложности с перекомпиливанием многих модулей.
Поэтому попутный вопрос. Почему каждый раз при замене dll-ок приходится перекомпиливать наши модули, связанные с Вашими, и это при условии что Specific Version выставлено в false? Есть какие-нибудь идеи или пути решения, может быть нами упущено что-то из виду?
Понимаю что версия старая, и скорее всего мы ее поменяем в самое ближайшее время. Это говорит о достаточной стабильности комопнентов уже на том этапе (2007 год) по крайней мере для нас.
Немного беспокоит вопрос совметимости текущих отчетов, их более 30 штук, есть какие либо предсказуемые проблемы в случае перехода на новую версию?
ПС
Попробовал новую версию (от 2 февраля 2009 года), сколько не пытался поменять в процессе выполнения название графика в легенде, ничего не получается. А в 2007 это получалось (менял через свойство title). Что делать с этим?

Скрытие столбцов датабэнда

Добавлено: 04 фев 2009, 02:29
BeraleX
Добрый день.
Может быть незаметили мои дополнительные вопросы.
Очень нужно получить рекомендации особенно на последний: как переименовать один или несколько графиков в легенде чарта перед его построением.

Скрытие столбцов датабэнда

Добавлено: 04 фев 2009, 19:58
Edward
Здравствуйте, Алексей,
BeraleX писал(а): на версии 2007.3.13, немного неудобно в плане редактора кода. Часто свойства и методы приходится у компонентов смотреть в Visual Studio, т.к. в редакторе генератора отчетов (в части закладки "Код", события формы и компонентов формы) они не подсвечиваются. Может быть в более поздних версиях это исправлено? Не могу проверить точно, т.к. версия работает с нашим софтом из дистрибутива, есть некоторые сложности с перекомпиливанием многих модулей.
К сожалению, эта возможность недоступна и в текущей версии генератора отчетов.
BeraleX писал(а): Поэтому попутный вопрос. Почему каждый раз при замене dll-ок приходится перекомпиливать наши модули, связанные с Вашими, и это при условии что Specific Version выставлено в false? Есть какие-нибудь идеи или пути решения, может быть нами упущено что-то из виду?
Нет, все правильно, это требования .Net Framework.
BeraleX писал(а):Понимаю что версия старая, и скорее всего мы ее поменяем в самое ближайшее время. Это говорит о достаточной стабильности комопнентов уже на том этапе (2007 год) по крайней мере для нас.
Немного беспокоит вопрос совметимости текущих отчетов, их более 30 штук, есть какие либо предсказуемые проблемы в случае перехода на новую версию?
Совместимость обеспечена, но проверить отчеты будет не лишним делом. В свойствах объекта "отчет" в редакторе свойств есть свойство EngineVersion. Для совместимости с прдыдущими версиями предусмотрено значение EngineV1, которое и будет выбрано по умолчанию для отчетов созданных в предыдущих версиях.
Попробовал новую версию (от 2 февраля 2009 года), сколько не пытался поменять в процессе выполнения название графика в легенде, ничего не получается. А в 2007 это получалось (менял через свойство title). Что делать с этим?
Очень нужно получить рекомендации особенно на последний: как переименовать один или несколько графиков в легенде чарта перед его построением.
Измените, пожалуйста, название графика следующим образом:

Код: Выделить всё

Chart1.Series[0].TitleValue  = "1234";
Спасибо.

Скрытие столбцов датабэнда

Добавлено: 05 фев 2009, 02:52
BeraleX

Код: Выделить всё

Chart1.Series[0].TitleValue  = "1234";
Не работает, такой вариант я уже проверял.
Может нужно еще дополнительные методы чарта после этого вызывать?
Вызов метода

Код: Выделить всё

Chart1.Series[0].TitleValue  = "1234";
происходит по событию нажатия кнопки Ok предварительной экранной формы (для некоторых настроек),
на которую повешен результат диалога Ok.
Пробовал вешать и на метод BeforePrint страницы и всего отчета - тот же результат

Скрытие столбцов датабэнда

Добавлено: 05 фев 2009, 04:26
Edward
Небольшое уточнение.

Название серии должно быть незаполнено. Тогда этот код сработает.

Спасибо.

Скрытие столбцов датабэнда

Добавлено: 05 фев 2009, 04:40
BeraleX
Годится :feelgood:.
Правда в будущем может понадобиться изменить уже названную серию, так что в этом случае стоит говорить скорее о первоначальном задании заголовка серии чем об изменении.
Но в данном случае меня все устраивает.
Спасибо.
ПС
Еще бы узнать результат по топику "Две колонки в итоге кросстаба", есть ли надежда или найдено ли решение,
и вообще будет все замечательно!