вызвать функцию расположенную в коде формы из отчета

отредактировано 17:14 Раздел: FastReport .NET
Добрый день!

Как из кода отчета


public class ReportScript {
.....
.....
}

вызвать не static функцию расположенную в коде формы (на форме расположен FastReport.Preview.PreviewControl)? :)
Спасибо!

Комментарии

  • отредактировано 17:14
    имхо ни как, может проще сделать библиотеку в которой будет эта функция или метод и подключить её в VS и в Fast Report's?

  • отредактировано 17:14
    Oloth Teken написал: »
    имхо ни как, может проще сделать библиотеку в которой будет эта функция или метод и подключить её в VS и в Fast Report's?

    Беда в том что контрол (FastReport.Preview.PreviewControl) лежит на child MDI форме . И надо както сообщать основному меню
    от событиях в репорте ( сформирован, количество строк и пр.) :)
  • отредактировано 17:14
    Можно в отчет передать параметр - ссылку на экземпляр класса, метод которого надо вызвать.

    report.SetParameterValue("my_instance", this);

    Далее, надо добавить имя сборки приложения в список report.ReferencedAssemblies (это можно сделать в дизайнере, меню Отчет/Свойства).
    В скрипте вызываем ф-ю примерно так:

    ((Demo.Form1)Report.GetParameterValue("my_instance")).MyMethod();
    где (Demo.Form1) - полное имя класса, MyMethod - вызываемый метод.
  • отредактировано 17:14
    AlexTZ написал: »
    Можно в отчет передать параметр - ссылку на экземпляр класса, метод которого надо вызвать.

    report.SetParameterValue("my_instance", this);

    Далее, надо добавить имя сборки приложения в список report.ReferencedAssemblies (это можно сделать в дизайнере, меню Отчет/Свойства).
    В скрипте вызываем ф-ю примерно так:

    ((Demo.Form1)Report.GetParameterValue("my_instance")).MyMethod();
    где (Demo.Form1) - полное имя класса, MyMethod - вызываемый метод.


    Спасибо за ответ !
    Я могу использовать LINQ (FW3.5 )в скрипте отчета ?
  • отредактировано 17:14
    Нет, конструкции из C# 3.0 в скрипте использовать нельзя.
  • отредактировано 17:14
    есть вариант для VB подобного? как это работает в с++ я понял )) но как это реализовать в VB я честно говоря не знаю, а переделывать всё на c++ просто анреал. нужно тоже самое.

    есть еще 1 проблема, не знаю даже, мне кажется это всё таки баг, так как не логично работает кнопка "Закрыть" на панели инструментов в компоненте PreviewReport. Она вызывает закрытие формы родителя (то есть формы, на которой лежит объект класса PreviewReport)
    имхо, но было бы на много логичнее создать событие ReportClosing, ReportClose в данном классе и закрывать не форму, а отрытый отчёт. А программист уже обработав событие сам решит, закрывать ему форму или отставить как есть )) или что то еще.

    с нетерпением жду ответа
  • отредактировано 17:14
    Здравствуйте,

    Примерный вариант на VB:
    CType(Report.GetParameterValue("my_instance"), Demo.Form1).MyMethod()
    Кнопка "Закрыть" закрывает форму, на которой лежит компонент. Сделано это исключительно для удобства пользования стандартным окном preview. В кастомных окнах эту кнопку лучше прятать, как сделано в demo.exe.
  • отредактировано February 2010
    ясно, проще таск бар вообще отрубить и нафигачить свой . спасибо )
  • отредактировано 17:14
    Ну тулбар-то стандартный не помешает. Просто мне непонятно, что значит "закрывать не форму, а открытый отчёт".

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.