trichview.com

trichview.support




how can i distinguish useful  network printer?


Return to index


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