Сохранение в файл

BalBal
отредактировано 07:33 Раздел: FastReport 4.0
Доброго времени суток!
Использую FR 4.4 + BDS2006
Из приложения вызывается дизайнер...
Очень хотелось бы как-то добраться до диалога "Сохранить как" самого дизайнера и подсунуть ему имя которое дизайнер предложит по умолчанию
Помогите с реализацией.... :)

Комментарии

  • gpigpi
    отредактировано 07:33
    function TForm1.frxDesigner1SaveReport(Report: TfrxReport;
      SaveAs: Boolean): Boolean;
    begin
         if SaveAs then
           begin
             Report.FileName:='C:\myReport.fr3';
             Report.SaveToFile('C:\myReport.fr3');
           end;
    end;
    
  • BalBal
    отредактировано 07:33
    Спасибо) Всё классно! Только теперь в дизайнере диалог SaveAs не появляется вообще.. а хочется чтобы дизайнер таки выводил этот диалог и в нём по умолчанию уже было имя которое я ему подсунул)
    могу конечно по событию дизайнера рисовать свой диалог... но мне это кажется как-то не правильно... :)
    Может быть есть ещё какие-то вырианты?
  • отредактировано 07:33
    Предложение по изменению логики обработке события TfrxDesignerForm.OnSaveReport
    Почему бы не сделать так, что если TfrxDesignerForm.OnSaveReport вернул false отработал стандартный механизм.


    Измененный код:
    function TfrxDesignerForm.SaveFile(SaveAs: Boolean; UseOnSaveEvent: Boolean): Boolean;
    var
      Saved: Boolean;
    begin
      Result := True;
      Report.ScriptText := CodeWindow.Lines;
      Report.ReportOptions.LastChange := Now;
    
      if UseOnSaveEvent then
        if (frxDesignerComp <> nil) and Assigned(frxDesignerComp.FOnSaveReport) then
        begin
          if frxDesignerComp.FOnSaveReport(Report, SaveAs) then
          begin
            UpdateRecentFiles(Report.FileName);
            UpdateCaption;
            Modified := False;
            Exit;
          end;
        end;
    
      Saved := True;
      if SaveAs or (Report.FileName = '') then
      begin
        SaveDialog.DefaultExt := 'fr3';
        SaveDialog.Filter := frxResources.Get('dsRepFilter');
        if frxCompressorClass <> nil then
          SaveDialog.Filter := SaveDialog.Filter + '|' + frxResources.Get('dsComprRepFilter');
        if Report.ReportOptions.Compressed then
          SaveDialog.FilterIndex := 2 else
          SaveDialog.FilterIndex := 1;
        if frxDesignerComp <> nil then
          SaveDialog.InitialDir := frxDesignerComp.SaveDir;
        Saved := SaveDialog.Execute;
        if Saved then
        begin
          Report.ReportOptions.Compressed := SaveDialog.FilterIndex = 2;
          Report.FileName := SaveDialog.FileName;
          Report.SaveToFile(Report.FileName);
        end
      end
      else
        Report.SaveToFile(Report.FileName);
    
      UpdateRecentFiles(Report.FileName);
      UpdateCaption;
      if Saved then
        Modified := False;
      Result := Saved;
    end;
    

    Пример использования: Все шаблоны по умолчанию должны сохраняться в базу, поэтому пишем событие OnSaveReport которое сохраняет как нам нужно. Но хочеться оставить стандартной обработку сохранения если SaveAs = true.

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

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