我现在要实现用户自定义纸张打印。想法:在后台建一个表,保存用户‘页面设置’中的参数,表如下。现在是怎么调用这个表来改变打印机的纸张设置?基础不好,代码不会,上来问问?给例子参考佳!
create table PrintFormat
(ModuleID int Null,                                 --模块编号
Printer varchar(2000) not Null default '默认打印机', --打印机
Type varchar(255) not Null default 'A4',            --纸张大小
Width dec(12,2) not Null default '21.6',            --宽度
Highth dec(12,2) not Null default '14',             --高度
direction varchar(255) not Null default '纵向');    --打印方向
多多帮忙!!!!  

解决方案 »

  1.   

    //设置打印机参数
    procedure UpdatePrinterParameters;
    var
      DevMode: PDevMode;
      DeviceMode: THandle;
      Device, Driver, Port: array[0..255] of Char;
    begin
      if Printer.Printers.Count <= 0 then
        Exit;
      if not (Printer.PrinterIndex in [0..Printer.Printers.Count - 1]) then
        Printer.PrinterIndex := -1;
      Printer.GetPrinter(Device, Driver, Port, DeviceMode);
      DevMode := PDevMode(GlobalLock(DeviceMode));
      with DevMode^ do
      begin
        dmFields := dmFields or DM_PAPERSIZE;
        dmPaperSize := FPrintParam.PaperParam.DMPaperIndex;//纸张
        if dmPaperSize = DMPAPER_USER then//自定义纸张
        begin
          dmFields := dmFields or DM_PAPERWIDTH;//宽
          dmPaperWidth := FPrintParam.PaperParam.PaperSize.x;
          dmFields := dmFields or DM_PAPERLENGTH;//长
          dmPaperLength := FPrintParam.PaperParam.PaperSize.y;
        end
        else
        begin//标准纸张 需要设置方向
          dmFields := dmFields or DM_ORIENTATION;
          if FPrintParam.PaperParam.PaperOrientaion then
            dmOrientation := DMORIENT_PORTRAIT
          else
            dmOrientation := DMORIENT_LANDSCAPE;
        end;
      end;
      GlobalUnlock(DeviceMode);
      Printer.SetPrinter(Device, Driver, Port, DeviceMode);
    end;