trichview.support
how can i distinguish useful network printer? |
Author |
Message |
news.trichview.com |
Posted: 07/01/2003 7:45:33 I want to get the printer info in my application. if (Printer.Printers.Count>0) means there are some printer . when the printer is local,I can get the pinter's info . but ,when i install a network printer and the printer can not be used. I can not get the right info of the network printer . how can distinguish the printer is useful and i can get the right info.? //the printers number. if Printer.Printers.Count>0 then begin GetScreenPageSize(RVPrint, PageWidth, PageHeight); FilePrint.Enabled := True; FilePrintPreview.Enabled := True end else begin PageWidth := 643; PageHeight:= 971; FilePrint.Enabled := False; end; //get the ScreenPageSize correspond to the current printer procedure GetScreenPageSize(RVPrint: TRVPrint; var Width, Height: Integer); var DC: HDC; phoX, phoY, phW, phH, lpy, lpx, LM, TM, RM, BM: Integer; begin DC := RV_GetPrinterDC; // from PtblRV unit Width := GetDeviceCaps(DC, HORZRES); Height := GetDeviceCaps(DC, VERTRES); lpy := GetDeviceCaps(DC, LOGPIXELSY); lpx := GetDeviceCaps(DC, LOGPIXELSX); phoX := GetDeviceCaps(DC, PHYSICALOFFSETX); phoY := GetDeviceCaps(DC, PHYSICALOFFSETY); phW := GetDeviceCaps(DC, PHYSICALWIDTH); phH := GetDeviceCaps(DC, PHYSICALHEIGHT); LM := MulDiv(RVPrint.LeftMarginMM, 5 * lpx, 127) - phoX; TM := MulDiv(RVPrint.TopMarginMM, 5 * lpy, 127) - phoY; RM := MulDiv(RVPrint.RightMarginMM, 5 * lpx, 127) - (phW - (phoX + Width)); BM := MulDiv(RVPrint.BottomMarginMM, 5 * lpy, 127) - (phH - (phoY + Height)); if LM < 0 then LM := 0; if TM < 0 then TM := 0; if RM < 0 then RM := 0; if BM < 0 then BM := 0; dec(Width, LM + RM); dec(Height, TM + BM); DeleteDC(DC); DC := GetDC(0); Width := MulDiv(Width, GetDeviceCaps(DC, LOGPIXELSX), lpx); Height := MulDiv(Height, GetDeviceCaps(DC, LOGPIXELSY), lpy); ReleaseDC(0, DC); end; |
Powered by ABC Amber Outlook Express Converter