Печать картинок

отредактировано 18:56 Раздел: FreeReport
Есть проблема при печати картинок - картинка или не выводиться на печать или печатаеться черный прямоугольник. На preview все отображается нормально. Система ХР. Принтер HP LaserJet 1100. Оптимизация печати отключена. Драйвера обновлены.

Код для печати следующий:
procedure TOrderRepModule.OrderOfferReportEnterRect(Memo: TStringList; View: TfrView);
var
  picture : TfrPictureView;
  bitmap : TBitmap;
begin
  if( View is TfrPictureView  ) then
  begin
    picture := TfrPictureView( View );

    if( View.Name = 'FramePicture' ) then
    begin
      bitmap := TBitmap.Create;
      bitmap.Width := 390;
      bitmap.Height := 195;

      PrintFrame( bitmap );
      try
        picture.Picture.Assign( bitmap );
      finally
        FreeAndNil( bitmap );
      end;
    end;
  end;
end;

Комментарии

  • gpigpi
    отредактировано 18:56
    написал:
    Попробуйте убрать комментарий со строки {$DEFINE PRN_RESET} в файле FR_Prntr.pas и перекомпилировать пакет FR и ваш проект.
  • отредактировано 18:56
    У меня FreeReport 2.33 и $DEFINE PRN_RESET вообще отсутствует...????
  • отредактировано 18:56
    Может подскажете что лечит $DEFINE PRN_RESET??? А я как-нибудь сам уже подправлю... :-)
  • gpigpi
    отредактировано 18:56
    procedure TfrPrinter.SetPrinterIndex(Value: Integer);
    begin
      if FPrinterIndex = Value then Exit;
    
      FPrinterIndex := Value;
      if Value = FDefaultPrinter then
        SetSettings
      else if FPrinter.Printers.Count > 0 then
      begin
        FPrinter.PrinterIndex := Value;
    {$IFDEF PRN_RESET}
        FPrinter.GetPrinter(FDevice, FDriver, FPort, FDeviceMode);
        FPrinter.SetPrinter(FDevice, FDriver, FPort, 0);
    {$ENDIF}
        GetSettings;
      end;
    end;
    
  • отредактировано 18:56
    Спасибо. :-)
  • отредактировано 18:56
    Добавленный код ничем не помог :-(
    Помогло следующее - сделал картинку монохромной :-)
    Пример:
    procedure TOrderRepModule.OrderOfferReportEnterRect(Memo: TStringList; View: TfrView);
    var
     picture : TfrPictureView;
     bitmap : TBitmap;
    begin
     if( View is TfrPictureView  ) then
     begin
       picture := TfrPictureView( View );
    
       if( View.Name = 'FramePicture' ) then
       begin
         bitmap := TBitmap.Create;
         bitmap.Monochrome := true;   // Монохромная картинка
         bitmap.PixelFormat := pf1Bit;  // Монохромная картинка
         bitmap.Width := 390;
         bitmap.Height := 195;
    
         PrintFrame( bitmap );
         try
           picture.Picture.Assign( bitmap );
         finally
           FreeAndNil( bitmap );
         end;
       end;
     end;
    end;
    

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

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