我现在要实现用户自定义纸张打印。想法:在后台建一个表,保存用户‘页面设置’中的参数,表如下。现在是怎么调用这个表来改变打印机的纸张设置?基础不好,代码不会,上来问问?给例子参考佳!
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 '纵向'); --打印方向
多多帮忙!!!!
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 '纵向'); --打印方向
多多帮忙!!!!
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;