вызвать функцию расположенную в коде формы из отчета
Добрый день!
Как из кода отчета
public class ReportScript {
.....
.....
}
вызвать не static функцию расположенную в коде формы (на форме расположен FastReport.Preview.PreviewControl)?
Спасибо!
Как из кода отчета
public class ReportScript {
.....
.....
}
вызвать не static функцию расположенную в коде формы (на форме расположен FastReport.Preview.PreviewControl)?
Спасибо!
Комментарии
Беда в том что контрол (FastReport.Preview.PreviewControl) лежит на child MDI форме . И надо както сообщать основному меню
от событиях в репорте ( сформирован, количество строк и пр.)
report.SetParameterValue("my_instance", this);
Далее, надо добавить имя сборки приложения в список report.ReferencedAssemblies (это можно сделать в дизайнере, меню Отчет/Свойства).
В скрипте вызываем ф-ю примерно так:
((Demo.Form1)Report.GetParameterValue("my_instance")).MyMethod();
где (Demo.Form1) - полное имя класса, MyMethod - вызываемый метод.
Спасибо за ответ !
Я могу использовать LINQ (FW3.5 )в скрипте отчета ?
есть еще 1 проблема, не знаю даже, мне кажется это всё таки баг, так как не логично работает кнопка "Закрыть" на панели инструментов в компоненте PreviewReport. Она вызывает закрытие формы родителя (то есть формы, на которой лежит объект класса PreviewReport)
имхо, но было бы на много логичнее создать событие ReportClosing, ReportClose в данном классе и закрывать не форму, а отрытый отчёт. А программист уже обработав событие сам решит, закрывать ему форму или отставить как есть )) или что то еще.
с нетерпением жду ответа
Примерный вариант на VB:
CType(Report.GetParameterValue("my_instance"), Demo.Form1).MyMethod()
Кнопка "Закрыть" закрывает форму, на которой лежит компонент. Сделано это исключительно для удобства пользования стандартным окном preview. В кастомных окнах эту кнопку лучше прятать, как сделано в demo.exe.