Динамическое изменение элементов. События.
Динамическое изменение элементов. События.
Здравствуйте.
По задаче нужно скрывать некоторые поля в отчете (в зависимости от bool переменной). Проблема в том, что если скрывать эти поля через "Условие", то вместо них остается пустое место. Т.е. оставшиеся поля нужно сдвинуть выше. Пробовал добавить код в события "Перед печатью", но код не срабатывает. Часть отчета прилагаю во вложении. Что неправильно в коде? Или может можно сдвигать поля динамически другим способом?
---
GroupBand - пробовали, не подходит. Код события в элементе Text16.
По задаче нужно скрывать некоторые поля в отчете (в зависимости от bool переменной). Проблема в том, что если скрывать эти поля через "Условие", то вместо них остается пустое место. Т.е. оставшиеся поля нужно сдвинуть выше. Пробовал добавить код в события "Перед печатью", но код не срабатывает. Часть отчета прилагаю во вложении. Что неправильно в коде? Или может можно сдвигать поля динамически другим способом?
---
GroupBand - пробовали, не подходит. Код события в элементе Text16.
- Вложения
-
- Образец
- TempReport.png (8.29 КБ) 3099 просмотров
-
- TempReport.mrt
- Отчет
- (56.31 КБ) 304 скачивания
Re: Динамическое изменение элементов. События.
Здравствуйте.
Обычно в таких случая мы рекомендует добавить Панель с включенным свойством Can Shrink.
На неё класть компоненты, которые могут скрываться по условию. Если их нет, то панель будет уменьшаться и все компоненты ниже будут тоже сдвигаться.
Спасибо.
Обычно в таких случая мы рекомендует добавить Панель с включенным свойством Can Shrink.
На неё класть компоненты, которые могут скрываться по условию. Если их нет, то панель будет уменьшаться и все компоненты ниже будут тоже сдвигаться.
Спасибо.
Re: Динамическое изменение элементов. События.
Здравствуйте.
Даже при добавлении элементов в две разные панели, при скрытии 1-ой панели, все равно остается пустое место. Может это быть связанно с тем, что панели находятся в DataBand? У DataBand также стоит свойство Can Shrink.
Даже при добавлении элементов в две разные панели, при скрытии 1-ой панели, все равно остается пустое место. Может это быть связанно с тем, что панели находятся в DataBand? У DataBand также стоит свойство Can Shrink.
Re: Динамическое изменение элементов. События.
Добрый день!
Могу предложить немного другой вариант решения, без CanShrink.
1) Создаём 3 панели;
2) На Panel1 кладём верхние контролы, на Panel2 только текст (SubTest), и на Panel3 оставшиеся;
3) Устанавливаем свойство DockStyle у всех трёх панелей в Top;
4) В событии BeforePrint компонента DataBand пишем для теста такой код:[/list]
Что это даст? Как раз то, что вы и хотели, по условию будет скрываться средняя (Panel2) и контролы так же нужно скрывать, а нужны эти панельки для того, чтобы они шли друг за другом, используя DockStyle == Top.
Рабочий пример во вложении.
P.S. Забыл сказать. Можно так же в том же событии BeforePrint добавить "раскраску" текста, а Conditions убрать.
То есть, в вашем случае это будет так:
Могу предложить немного другой вариант решения, без CanShrink.
1) Создаём 3 панели;
2) На Panel1 кладём верхние контролы, на Panel2 только текст (SubTest), и на Panel3 оставшиеся;
3) Устанавливаем свойство DockStyle у всех трёх панелей в Top;
4) В событии BeforePrint компонента DataBand пишем для теста такой код:[/list]
Код: Выделить всё
if (true) // if (!RoleDataModel.IsPrintSubSystemName)
{
Text2.Height = 0;
Panel2.Height = 0;
}
Рабочий пример во вложении.
P.S. Забыл сказать. Можно так же в том же событии BeforePrint добавить "раскраску" текста, а Conditions убрать.
То есть, в вашем случае это будет так:
Код: Выделить всё
if (!RoleDataModel.IsPrintSubSystemName)
{
Stimulsoft.Base.Drawing.StiSolidBrush textBrush = new Stimulsoft.Base.Drawing.StiSolidBrush(System.Drawing.Color.Red);
Text30.TextBrush = textBrush;
Text47.TextBrush = textBrush;
Text31.TextBrush = textBrush;
... // перечислить остальные контролы
Text99.TextBrush = textBrush;
}
- Вложения
-
- TempReport_sample.mrt
- (31.38 КБ) 325 скачиваний
Re: Динамическое изменение элементов. События.
Здравствуйте.
Надо скрывать не сами панели, а их содержимое, тогда панели изменят свою высоту и всё остальное содержимое сдвинется.
Расположение компонентов изменяется, если изменяется высота других компонентов в ту или иную сторону, но не тогда, когда они скрываются по условию.
Спасибо.
Надо скрывать не сами панели, а их содержимое, тогда панели изменят свою высоту и всё остальное содержимое сдвинется.
Расположение компонентов изменяется, если изменяется высота других компонентов в ту или иную сторону, но не тогда, когда они скрываются по условию.
Спасибо.
Re: Динамическое изменение элементов. События.
Согласен, можно и так, в этом случае, можно установить флажок CanShrink у Panel2, а в коде писать:Надо скрывать не сами панели, а их содержимое, тогда панели изменят свою высоту и всё остальное содержимое сдвинется.
Код: Выделить всё
if (true) // if (!RoleDataModel.IsPrintSubSystemName)
{
Text2.Height = 0;
}
Код: Выделить всё
Panel2.Height = 0;
Re: Динамическое изменение элементов. События.
Здравствуйте.
Не надо никакого дополнительного кода, я забыл один важный момент.
Свойство Shift Mode панели, которая должна подниматься, должно быть установлено в значение Increasing Size, Decreasing Size Спасибо.
Не надо никакого дополнительного кода, я забыл один важный момент.
Свойство Shift Mode панели, которая должна подниматься, должно быть установлено в значение Increasing Size, Decreasing Size Спасибо.