Printer selected is not valid как исправить
Перейти к содержимому

Printer selected is not valid как исправить

Printer selected is not valid как исправить


YuriKoltsov   ( 2007-09-25 09:45 ) [0]

Здравствуйте уважаемые мастера! Столкнулся с проблемой.
Работаю с Delphi 2006, компонентами ADO, и системой построений отчетов FastReport 4.0, и наталкнулся на ситуацию, когда при нажатии в моем приложении кнопки "Печать" происходит ошибка "Printer selected is not valid", аналогичная происходит на другом компьютере. Делаю пустой проект, ставлю кнопку, на нее пишу Self.Print; — печать идет.
Так же в пустом проекте подключаю FastReport и делаю все по тойже схеме как надо построить отчет, блин, работает. В чем может быть причина в проекте. Наверняка, кто-то сталкивался с такой проблемой. Подскажите.


stone ©   ( 2007-09-25 09:49 ) [1]

TfrxReport.SelectPrinter;
Естественно на твоем компе  хотя бы один принтер должен быть зарегистрирован.


YuriKoltsov   ( 2007-09-25 09:52 ) [2]

Зарегистрирован, и не один. Делал и один принтер, но .


YuriKoltsov   ( 2007-09-25 10:29 ) [3]

Блин перепробовал все, подскажите если кто знает


alshtam ©   ( 2007-09-25 10:31 ) [4]

Ищи отличия между печатью в твоем проэкте и в пустом, они точно есть.

тоесть ты мне предлагаешь, 5 Мбайтный код сравнивать с кодом в 500байт?


Anatoly Podgoretsky ©   ( 2007-09-25 11:22 ) [6]

> YuriKoltsov  (25.09.2007 10:50:05)  [5]

А кому сейчас легко?
Ну смени профессию.


YuriKoltsov   ( 2007-09-25 14:46 ) [7]


> Anatoly Podgoretsky ©   (25.09.07 11:22) [6]

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

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

<!—fonto:Courier New—><span style="font-family:Courier New"><!—/fonto—>procedure TfrxPrinter.UpdateDeviceCaps;
begin

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;

Принтер не печатает (((

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

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;

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *