Tfrxrichview.allowexpressions
Tarnish
Киев
Доброго времени суток.
Собственно интересуют подробности механизма TfrxRichView.AllowExpressions. Т.е. я то исходник объекта посмотрел и там все очевидно. Менее очевидно, но все же понятно как frxEngine зовет метод GetData компонента, в котором собственно и происходит преобразование выражений в их значения. Вопрос собственно больше касается того как это было реализовано в 3 версии. Сорца у меня нет, изучить не могу.
Пример.
Есть Rich1: TfrxRichView у которого Rich1.AllowExpressions = True и содержимое лайнсов Rich1.RichEdit.Lines.Text = '[q."Template"]', где q это датасет соответственно в поле Template находиться некий шаблон документа.
При выполнении отчета в Rich1 получаем содержимое поля Template. Если в содержимом поля Template тоже есть выражения (ведь в этом случае они так и останутся, ни на что не заменяться), что делать? Да вроде просто.
Мы не прописываем Rich1.RichEdit.Lines.Text, а назначаем Rich1.DataSet = q и Rich1.DataField = Template
Тогда при выполнении в Rich1 видим содержимое поля Template, а все выражения, которые в нем были заменены значениями. В таком случае, вроде бы нужный с позиции моей логики результат получаем.
Но вот товарищи указывают на то, что первый метод (который Rich1.RichEdit.Lines.Text = '[q."Template"]') в третьем фасте давал такой же результат как во втором случае, т.е. когда Rich1.IsDataField = True.
Спрашивается могло ли такое быть? Товарищи утверждают это настойчиво, т.к. раньше у них была отчетная система на тройке и все отчеты были выполнены по принципу Rich1.RichEdit.Lines.Text = '[q."Template"]', а вот совершили переход на четверку, и по их словам чудо фича отвалилась))
ПС. Еще раз: вопрос задаю потому, что сорца 3 в распоряжении нет, и логику формирования посмотреть не могу. 4 есть, смотрел, и знаю почему первый указанный метод в 4 не работает (т.е. не происходит вторичная замена выражений). Но в 3 ведь работало. Потому, реально ли в 3 работало? И почему в 4 отвалилось? Или в 3 это была случайная фича, а не заложенный функционал?
Собственно интересуют подробности механизма TfrxRichView.AllowExpressions. Т.е. я то исходник объекта посмотрел и там все очевидно. Менее очевидно, но все же понятно как frxEngine зовет метод GetData компонента, в котором собственно и происходит преобразование выражений в их значения. Вопрос собственно больше касается того как это было реализовано в 3 версии. Сорца у меня нет, изучить не могу.
Пример.
Есть Rich1: TfrxRichView у которого Rich1.AllowExpressions = True и содержимое лайнсов Rich1.RichEdit.Lines.Text = '[q."Template"]', где q это датасет соответственно в поле Template находиться некий шаблон документа.
При выполнении отчета в Rich1 получаем содержимое поля Template. Если в содержимом поля Template тоже есть выражения (ведь в этом случае они так и останутся, ни на что не заменяться), что делать? Да вроде просто.
Мы не прописываем Rich1.RichEdit.Lines.Text, а назначаем Rich1.DataSet = q и Rich1.DataField = Template
Тогда при выполнении в Rich1 видим содержимое поля Template, а все выражения, которые в нем были заменены значениями. В таком случае, вроде бы нужный с позиции моей логики результат получаем.
Но вот товарищи указывают на то, что первый метод (который Rich1.RichEdit.Lines.Text = '[q."Template"]') в третьем фасте давал такой же результат как во втором случае, т.е. когда Rich1.IsDataField = True.
Спрашивается могло ли такое быть? Товарищи утверждают это настойчиво, т.к. раньше у них была отчетная система на тройке и все отчеты были выполнены по принципу Rich1.RichEdit.Lines.Text = '[q."Template"]', а вот совершили переход на четверку, и по их словам чудо фича отвалилась))
ПС. Еще раз: вопрос задаю потому, что сорца 3 в распоряжении нет, и логику формирования посмотреть не могу. 4 есть, смотрел, и знаю почему первый указанный метод в 4 не работает (т.е. не происходит вторичная замена выражений). Но в 3 ведь работало. Потому, реально ли в 3 работало? И почему в 4 отвалилось? Или в 3 это была случайная фича, а не заложенный функционал?
Комментарии