Как обратиться в значению компанентa Text1
Как обратиться в значению компанентa Text1
Как обратиться в значению компанентa Text1 при задании выражения для Text2?
У меня есть два текстовых компонента на странице Text1 и Text2.
В первом выводится буква "В" или буква "Я" или компонент остается пустым в зависимости от дня недели
(мы пытаемся создать табель). (рис. прикреплен)
Во втором текстовом компоненте необходимо выполнить алгоритм :
Если Text1 - это пустое поле, то к переменной SUM прибавляем единицу и выводим ее в Text2, если в Text1 - буква, то ничего не делаем.
Я не могу догнать, как во втором текстовом компоненте обратиться к первому?
В дальнейшем у меня будет аж 30 ячеек, подобных Text1, и в Text2 нужно будет пройти по всем ним и отразить такую сумму - переменную SUM
Подскажите, пожалуйста, я впервые сталкиваюсь в программными элементами в Стимулсофте, не могу понять как и где их применять.
У меня есть два текстовых компонента на странице Text1 и Text2.
В первом выводится буква "В" или буква "Я" или компонент остается пустым в зависимости от дня недели
(мы пытаемся создать табель). (рис. прикреплен)
Во втором текстовом компоненте необходимо выполнить алгоритм :
Если Text1 - это пустое поле, то к переменной SUM прибавляем единицу и выводим ее в Text2, если в Text1 - буква, то ничего не делаем.
Я не могу догнать, как во втором текстовом компоненте обратиться к первому?
В дальнейшем у меня будет аж 30 ячеек, подобных Text1, и в Text2 нужно будет пройти по всем ним и отразить такую сумму - переменную SUM
Подскажите, пожалуйста, я впервые сталкиваюсь в программными элементами в Стимулсофте, не могу понять как и где их применять.
- Вложения
-
- Скриншот 16-08-2016 152608.jpg (3.88 КБ) 5038 просмотров
-
- Скриншот 16-08-2016 152550.jpg (76.67 КБ) 5038 просмотров
Re: Как обратиться в значению компанентa Text1
Здравствувйте.
Хочу сразу вам пояснить, что существует два типа компонентов. Один компонент -- это компонент шаблона отчёта. Он содержит выражение и получить какое-либо зхначение здесь невозможно.
Второй тип компонента -- это компонент построенного отчёта. Они собержат конечное значение, но таких компонентов может быть очень много.
Поэтому единственный выход это получить значение в процессе построения отчёта.
Есть несколько вариантов, чтобы получит значение текстового компонента.
1. Это использовать такое же выражение. Это самый простой и очевидный вариант. Подходит при простых выражениях.
2. Сохраянть значение в переменную. Это вариант для случая, когда надо просуммировать какие-то значения, но можно и использовать значение переменной в других компонентах. Выражение может иметь следующий вид:
Значение будет присвоено и переменной, и компоненту.
3. Значение можно получить в событии Get Value. Ho значение будет уже в виде строки.
4. Более сложный вариант. В некоторых случаях только этот вартант помогает выйти из положения. Особенно когда надо изменить значение компонента, который уже помтроен.
Это захранить sender в событии Get Value в переменную типа object. Это будет ссылка наконкретный экземпляр построенного отчёта. После этого можно обращаться к этому экземпляру и изменять его значение.
Можно хранить значения в переменной типа List, создавать HashTable с компонентами их значениями и т.д.
Надеюсь один из вариантов вам подойдёт.
Спасибо.
Хочу сразу вам пояснить, что существует два типа компонентов. Один компонент -- это компонент шаблона отчёта. Он содержит выражение и получить какое-либо зхначение здесь невозможно.
Второй тип компонента -- это компонент построенного отчёта. Они собержат конечное значение, но таких компонентов может быть очень много.
Поэтому единственный выход это получить значение в процессе построения отчёта.
Есть несколько вариантов, чтобы получит значение текстового компонента.
1. Это использовать такое же выражение. Это самый простой и очевидный вариант. Подходит при простых выражениях.
2. Сохраянть значение в переменную. Это вариант для случая, когда надо просуммировать какие-то значения, но можно и использовать значение переменной в других компонентах. Выражение может иметь следующий вид:
Код: Выделить всё
{Variable1 = DataSource1.Columnn1}
3. Значение можно получить в событии Get Value. Ho значение будет уже в виде строки.
4. Более сложный вариант. В некоторых случаях только этот вартант помогает выйти из положения. Особенно когда надо изменить значение компонента, который уже помтроен.
Это захранить sender в событии Get Value в переменную типа object. Это будет ссылка наконкретный экземпляр построенного отчёта. После этого можно обращаться к этому экземпляру и изменять его значение.
Можно хранить значения в переменной типа List, создавать HashTable с компонентами их значениями и т.д.
Надеюсь один из вариантов вам подойдёт.
Спасибо.
Re: Как обратиться в значению компанентa Text1
Спасибо за развернутый ответ!
Мне показалось, что можно поиграть с выражениями и максимально упростить логику, чтобы не влезать в GetValue и прочие премудрости.
вроде бы даже красиво всё бы работало, но возникла проблема.
Как в ячейке Text ничего не выводить, но при этом произвести операцию SUM=SUM+1
Приведу упрощенный пример проекта во вложении.
В ячейках написаны выражения, где в зависимости от даты, выводится "0" (в выходной) или НУЖНО ВЫВОДИТЬ "" (null) в будний день и произвести суммирование SUM=SUM+1. Но при такой записи это не работает, суммирование происходит абсолютно всегда, даже если выражение попадает под другое условие - под выходной. А если попадает под условие буднего дня, то надо просуммировать и вывести в ячейку "" , что никак не получается.
В крайней правой ячейке, которая стоит отдельно, выводим саму переменную SUM (по сути это сумма пустот).
Сейчас там выводится 3, а мне при текущих входных параметрах надо получить там 1
Подскажите, как заставить работать код правильно?
Мне показалось, что можно поиграть с выражениями и максимально упростить логику, чтобы не влезать в GetValue и прочие премудрости.
вроде бы даже красиво всё бы работало, но возникла проблема.
Как в ячейке Text ничего не выводить, но при этом произвести операцию SUM=SUM+1
Приведу упрощенный пример проекта во вложении.
В ячейках написаны выражения, где в зависимости от даты, выводится "0" (в выходной) или НУЖНО ВЫВОДИТЬ "" (null) в будний день и произвести суммирование SUM=SUM+1. Но при такой записи это не работает, суммирование происходит абсолютно всегда, даже если выражение попадает под другое условие - под выходной. А если попадает под условие буднего дня, то надо просуммировать и вывести в ячейку "" , что никак не получается.
В крайней правой ячейке, которая стоит отдельно, выводим саму переменную SUM (по сути это сумма пустот).
Сейчас там выводится 3, а мне при текущих входных параметрах надо получить там 1
Подскажите, как заставить работать код правильно?
- Вложения
-
- test_tabel1.mrt
- (10.16 КБ) 446 скачиваний
Re: Как обратиться в значению компанентa Text1
Уважаемые, гуру, подскажите, пожалуйста! Растолкуйте...
У меня никак не получается решить эту задачу.
У меня никак не получается решить эту задачу.
Re: Как обратиться в значению компанентa Text1
Здравствуйте.
Все аргументы функций вычисляются перед её вызовом.
Попробуйте использовать событие Before Print компонентов.
Там вы можете писать любой код для суммирования.
Спасибо.
Все аргументы функций вычисляются перед её вызовом.
Попробуйте использовать событие Before Print компонентов.
Там вы можете писать любой код для суммирования.
Спасибо.
Re: Как обратиться в значению компанентa Text1
А вы не могли бы подсказать, как именно в свойстве Before Print, скажем, компонента Text2, сделать проверку, какое значение у Text1, что-то вроде:
if (this.Text1.Text=="X") { }
Но наверное, я неправильно обращаюсь к Text1.Text, потому что это не работает.
Благодарю за помощь!
if (this.Text1.Text=="X") { }
Но наверное, я неправильно обращаюсь к Text1.Text, потому что это не работает.
Благодарю за помощь!
Re: Как обратиться в значению компанентa Text1
Здравствуйте.
В данном случае, нужно обратиться или к выражению, которое выичсляется в свойстве Text. Например, if (Customers.Name == "X"). Или воспользоваться событием GetValue компонента текст:
if (e.Value == "X")...
Спасибо.
В данном случае, нужно обратиться или к выражению, которое выичсляется в свойстве Text. Например, if (Customers.Name == "X"). Или воспользоваться событием GetValue компонента текст:
if (e.Value == "X")...
Спасибо.