Событие Startreport

отредактировано October 2009 Раздел: FastReport .NET
#1 вопрос,
вопрос такой, у меня в событии StartReport перед загрузкой и формированием отчёта, формируется довольно большой объем информации в коллекции, так как это занимает секунд 20 fast report на этот момент подвисает и не подает признаков жизни (что вполне логично). хотелось бы узнать, реально ли реализовать какой то прогресс бар или что то подобное?

#2 баг,
обнаружил в программе баг следующего характера, когда изменяешь курсор Default на Array (стрелку), Фаст репорт ни чего не делает, потому как для него стрелка и по умолчанию одно и тоже. хотя это разные вещи. в итоге я не могу задействовать стреку при наведение на различные объекты отчёта (то есть при попытки сохранить курсор "стрелка", фаст репорт его запоминает как "Default"

#3 баг или фича, :)
в целом я не очень врубился, но всё же. в событии StartReport объявляются 2 класса, в фильтре на бенде данных использую условие в котором присутствует этот класс (грубо говоря clsClass.Value = "значение"). Всё работает замечательно :) все счастливы.
Далее, в загаловке есть объект Checked которые изменяет фильм и обновляет отчет событием Report.Refresh, если галочка стоит, то в фильтре нет класса, когда не стоит есть.
При запуске отчета сперва использует фильтр с классом, потом пользователь может поставить галочку и его отключить (грубо говоря, при этом условие есть на поле в бд)

Теперь всё переворачиваем, при запуске остается только условие с полем из БД, и при нажатии на объект в фильтр добавляется условие аля &= (clsClass.Value = "значение"). и FastReport выдает ошибку, хотя 5 минут назад, этот же фильтр работал нормально. Кричит на то, что данный класс не объявлен)... Фича или что? :) как я понял, если в условии фильтра есть какие то классы, то они объявляются заранее и доступны от туда, если же их не объявлять там заранее, то болт ), выкрутился тем, что сделал сперва в фильтре условие с классом, а потом изменил его в событие StartReports )

#4 предложение,
очень хотелось бы, чтобы при Preview репорта, можно было бы выделять из него текст и копировать в буфер обмена (как вариант). так как

Комментарии

  • отредактировано 15:22
    1) стандартный фастрепортовский прогрессбар в этот момент еще не показывается - можете прикрутить свой.
    2) это стандартное поведение редактора св-ва типа Cursor. Попробуйте то же самое проделать в Visual Studio.
    3) пришлите, пожалуйста, отчет на tz@fast-report.com, буду смотреть.
    4) нет, это слишком сложно реализовать.
  • отредактировано 15:22
    1. ок
    2. а если мне нужна array, а не рука, что делать? стрелка просто тупо не выбирается :)
    3. как подготовлю сразу отправлю.
    4. в поиске (во время просмотра отчета, текст выделяется....
  • отредактировано October 2009
    Default и Arrow - это одно и то же. Это легко увидеть с помощью Reflector, в классе System.Windows.Forms.Cursors:
      public static Cursor Arrow
      {
        get
        {
          if (arrow == null)
          {
            arrow = new Cursor(0x7f00, 0);
          }
          return arrow;
        }
      }
    
      public static Cursor Default
      {
        get
        {
          if (defaultCursor == null)
          {
            defaultCursor = new Cursor(0x7f00, 0);
          }
          return defaultCursor;
        }
      }
    

    В любом случае, тут претензии к стандартному редактору типа Cursor.
  • отредактировано 15:22
    AlexTZ написал: »
    Default и Arrow - это одно и то же. Это легко увидеть с помощью Reflector, в классе System.Windows.Forms.Cursors:
    В любом случае, тут претензии к стандартному редактору типа Cursor.
    ясно :) короче проблема на в фаст репорте, а в классе поставляемым microsoft....
    может что то посоветуйте на тему 1 варианта...
  • отредактировано 15:22
    Что-то вроде
        private void _StartReport(object sender, EventArgs e)
        {
          Form progressForm = new Form();
          progressForm.FormBorderStyle = FormBorderStyle.FixedToolWindow;
          progressForm.StartPosition = FormStartPosition.CenterScreen;
          progressForm.TopMost = true;
          progressForm.Show();
          
          ...
          ...
          
          progressForm.Close();
        }
    
  • отредактировано 15:22
    вообще поработал я в вашей программе ) отличная штука, стоящая ) но есть 1 вещь, которая меня просто бесит, отсутствие нормальной отладки, приходится писать в VS, а потом переносить всё в FR, когда нибудь можно ожидать что то или если это реализовано, то где это юзать?
    а то выскакивает ошибка к примеру при формировании данных, там куча ни чего ))) конкретно сказать ни чего нельзя )
  • отредактировано 15:22
    Отладки не ждите... Это не сложно, а очень сложно. Могу посоветовать в нужные места вставлять вызов MessageBox.Show(...) с выводом всей интересующей информации.
  • отредактировано 15:22
    Косяк в том, что обработка зачастую идёт прямо в бенде и получаем 10000 боксов =)) даже прервать нельзя. я решил проблему через процедуру логирования. потом по файлу зырю... но желаю вам удачи в преодолении всех сложностей :)

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

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