Исправил баг 'printer Selected Is Not Valid' при печати на сетевом принтере

отредактировано May 2009 Раздел: FastReport 4.0
Здравствуйте!

Судя по результатам поиска в google сей баг не редок. Здесь тоже обсуждалось

Исключение "Printer selected is not valid" вылетает при попытке печати на сетевом принтере. Возникает не у всех и не всегда. Вот код, который (в моем случае) исправил баг:


<!--fonto:Courier New--><span style="font-family:Courier New"><!--/fonto-->procedure TfrxPrinter.UpdateDeviceCaps;
begin
if FDC=0 then RecreateDC(); //Simon Kroik (kroiksm@gmx.de) 27.04.2009 <<<<<<<<<<<<<

FDPI := Point(GetDeviceCaps(FDC, LOGPIXELSX), GetDeviceCaps(FDC, LOGPIXELSY));

if (FDPI.X = 0) or (FDPI.Y = 0) then
raise Exception.Create('Printer selected is not valid');

FPaperHeight := Round(GetDeviceCaps(FDC, PHYSICALHEIGHT) / FDPI.Y * 25.4);
FPaperWidth := Round(GetDeviceCaps(FDC, PHYSICALWIDTH) / FDPI.X * 25.4);
FLeftMargin := Round(GetDeviceCaps(FDC, PHYSICALOFFSETX) / FDPI.X * 25.4);
FTopMargin := Round(GetDeviceCaps(FDC, PHYSICALOFFSETY) / FDPI.Y * 25.4);
FRightMargin := FPaperWidth - Round(GetDeviceCaps(FDC, HORZRES) / FDPI.X * 25.4) - FLeftMargin;
FBottomMargin := FPaperHeight - Round(GetDeviceCaps(FDC, VERTRES) / FDPI.Y * 25.4) - FTopMargin;
end;<!--fontc--></span><!--/fontc-->

Комментарии

  • отредактировано 22:19
    Здравствуйте,

    Думал уже о добавлении проверки контекста, только помогает не всегда и не на всех принтерах.
  • отредактировано 22:19
    написал: »
    Здравствуйте,

    Думал уже о добавлении проверки контекста, только помогает не всегда и не на всех принтерах.

    А как можно еще решить данную проблему?

    FR_4.13 в данный момент

    Спасибо

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

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