我搞紧一个打印的软件,设置打印的时候遇到麻烦。Edit的字体,比如是10号字,它的宽和高是几多,我要的是毫米位。打印机又是以什么单位来计算的。

解决方案 »

  1.   

    看看这个
    procedure Tbjz.PrintRes;
    var
      y1,m1,d1:word;
      i:integer;
      plx,ply:double;
    begindecodedate(tjsj,y1,m1,d1);
    with printer do
    begin
      if printer.printers.text<>'' then
      begin
        printer.printerindex:=printer.printerindex;//打印机复位
        getprinter(device,driver,port,ph);//取得当前打印机号
        if ph<>0 then
        begin
        //置打印纸类型
          pdv:=globallock(ph);
          if pdv<>nil then
          begin
            pdv^.dmpapersize:=dmpaper_user;
            pdv^.dmpaperlength:=940;
            pdv^.dmpaperwidth:=2100;
            pdv^.dmfields:=pdv^.dmfields or dm_papersize;
            pdv^.dmfields:=pdv^.dmfields or dm_paperlength;
            pdv^.dmfields:=pdv^.dmfields or dm_paperwidth;
            globalunlock(ph);
            printer.printerindex:=printer.printerindex;
          end;
          begindoc;
          plx:=getdevicecaps(printer.canvas.handle,logpixelsx)/72;
          ply:=getdevicecaps(printer.canvas.handle,logpixelsy)/72;
          canvas.font.PixelsPerInch:=getdevicecaps(printer.canvas.handle,logpixelsy);
          canvas.font.size:=10;
          canvas.font.name:='draft';
          .......
          canvas.textout(round(plx*240),round(ply*220),'营业员:  '+yyy);
          enddoc;
        end
        else
          messagebox(bjz.clienthandle,'无打印机,不能打印!','警告信息',mb_iconwarning+mb_systemmodal);
      end;
    end;
    end;