Печать отчета на принтере сразу после его открытия

отредактировано 05:03 Раздел: FastScript
Можно ли сделать так:
1. отчет открылся;
2. послался сам на печать (с помощью скрипта - без дельфей и пр.);
3. закрылся.
??

Комментарии

  • отредактировано 05:03
    Показать отчет из скрипта можно с помощью Report.ShowReport, а чтобы отослать на печать нужно добавить к классу TfrxReport нужные методы (т.е. зарегистрировать их в скрипте).
  • отредактировано November 2006
    -=Den=- а не подскажете, как такое сделать: какие методы добавить, как их зарегистрировать?
    А можно ли через скрипт: не показывая отчета вывести его на принтер?? - Это интереснее и полезнее
  • отредактировано 05:03
    Вот, приблезительно так :
    type
      TForm1 = class(TForm)
        frxReport1: TfrxReport;
        frxDesigner1: TfrxDesigner;
        procedure FormCreate(Sender: TObject);
      private
        function DoMethod(Instance: TObject; ClassType: TClass;
           const MethodName: String; var Params: Variant): Variant;
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    uses fs_iinterpreter;
    
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
     with frxReport1.Script.FindClass('TfrxReport') do
     begin
       AddMethod('function PrepareReport(ClearLastReport:Boolean = True):Boolean',DoMethod);
       AddMethod('procedure SelectPrinter',DoMethod);
       AddMethod('function Print:Boolean',DoMethod);
       AddMethod('procedure ShowPreparedReport',DoMethod);
     end;
     frxReport1.PrepareReport;
    end;
    
    function TForm1.DoMethod(Instance: TObject; ClassType: TClass;
      const MethodName: String; var Params: Variant): Variant;
    begin
    if ClassType = TfrxReport then
      if MethodName = 'PREPAREREPORT' then
          Result := TfrxReport(Instance).PrepareReport(Params[0])
      else if MethodName = 'SELECTPRINTER' then
          TfrxReport(Instance).SelectPrinter
      else if MethodName = 'Print' then
          Result := TfrxReport(Instance).Print
      else if MethodName = 'SHOWPREPAREDREPORT' then
          TfrxReport(Instance).ShowPreparedReport
    end;
    
    end.
    

    В скрипте Report.Print;
    PrepareReport лучше не вызывать для объекта Report , а то повиснет все ;)
  • отредактировано 05:03
    Спасибо -=Den=-! ;) Но есть ОДНО НО:
    Как я понял это все пишется в дельфях. У меня ситуация такая: FR встроен в систему. Там доступен только дизайнер самого ФР. Т.е. отчет открываем на редактирование там есть вкладка с кодом (pascal script и пр.), а вкладки со страницами и пр. Т.е. дельфями там и не пахнет и у меня есть возможность оперировать только встроенным скриптом. Возмножно ли такое без участия дельфей?
  • отредактировано 05:03
    Нет, такие методо просто не добавлены.
    Если программный продукт которым вы пользуитесь поддерживается, то попробуйте написать в дехподдержку этой программы с просьбой добавить эти методы (тем более как показано выше это несложно). ;)
  • отредактировано 05:03
    Ok! Спасибо -=Den=-! ;)

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

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