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;