Прерывания события печати отчёта (утечка памяти)

отредактировано 09:53 Раздел: FastReport 4.0
Задача: при печати отчёта проверить, разрешена ли печать на данном (выбранном) принтере.
Проблема: как таковой её нет, но есть утечка памяти.
Пример:
type
  TfmPrint = class(TForm)
    frxReport: TfrxReport;
    procedure frxReportPrintReport(Sender: TObject); // процедура для обработки события OnPrintReport
    ...
  end;

implementation

procedure TfmPrint.frxReportPrintReport(Sender: TObject);
var
  IsAccess: Boolean;
begin
  ... // как то проверяем принтер на разрешения.
  if not IsAccess then
  begin
    ... // выводим сообщение пользователю о том, что ему печать на этом принтере запрещена
    Abort;
  end;
  ... // когда всё ОК, то продолжаем дальше.
end;
Если при выполнении процедуры хоть раз вызвался Abort (принтер не прошёл проверку), то, после закрытия приложения, FastMM4 обнаруживает утечки памяти (см. файл к сообщению).

Комментарии

  • отредактировано 09:53
    Что за Abort ?
    Вы печатаете методами отчета. следовательно и прерывать печать нужно методами того же отчета.
    Вам нужно событие OnProgressStart:
    procedure TfmPrint.OnProgressStart(Sender: TfrxReport;
        ProgressType: TfrxProgressType; Progress: Integer);
    begin
    
    if  ProgressType = ptPrinting then
    begin
    //start printing
      if not IsAccess then
      begin
        ... // выводим сообщение пользователю о том, что ему печать на этом принтере запрещена
        frxReport.Terminated := True;
      end;
    
    end;
    
    end;
    

  • отредактировано 09:53
    Я делал как привык в событиях обычных компонентов. Про этот способ я не знал.

    P.S. Спасибо за разъяснения.

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

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