当前位置:主页>销售管理软件> 列表

如何用程序添加自定义纸型 找万能档案管理软件

销售管理软件版1楼: 在打印excel文档时,需要自定义纸张大小,如何用程序实现自定义一个新纸型,就象在打印机的服务器属性中定义一个新纸型一样,还有不知是否可以通过在注册表里先添加一个新纸型,在程序打包后再安装时通过注册表自动添加新纸型?

2楼: //增加规格自定义纸张
//PaperName: 自定义纸张名称
//PaperWidth: 纸张的宽度,以0.1mm为单位
//PaperLength: 纸张的高度,以0.1mm为单位
procedure TDM.AddCustomPaper(const PaperName: string; PaperWidth, PaperLength:integer);
var
PrintDevice, PrintDriver, PrintPort : array[0..255] of Char;
hDMode : THandle;
hPrinter : THandle;
FormInfo : TFormInfo1;
begin
Printer.GetPrinter(PrintDevice, PrintDriver, PrintPort, hDMode);
OpenPrinter(PrintDevice, hPrinter, nil);
if hPrinter = 0 then
raise Exception.Create(''联接打印机失败!'');

with FormInfo do
begin
Flags := FORM_USER;
pName := PChar(PaperName);
Size.cx := PaperWidth*100;
Size.cy := PaperLength*100;
ImageableArea.Left := 0;
ImageableArea.Top := 0;
ImageableArea.Right := PaperWidth*100;
ImageableArea.Bottom := PaperLength*100;
end;

//修改纸型,如果没有就新增
if not SetForm(hPrinter, PChar(PaperName), 1, @FormInfo) then
AddForm(hPrinter, 1, @FormInfo);

ClosePrinter(hPrinter);
end;

//删除自定义规格纸张
//PaperName: 自定义纸张名称
procedure TDM.DeleteCustomPaper(const PaperName: string);
var
PrintDevice, PrintDriver, PrintPort : array[0..255] of Char;
hDMode : THandle;
hPrinter : THandle;
begin
Printer.GetPrinter(PrintDevice, PrintDriver, PrintPort, hDMode);
OpenPrinter(PrintDevice, hPrinter, nil);
if hPrinter = 0 then
raise Exception.Create(''联接打印机失败!'');
DeleteForm(hPrinter, PChar(PaperName));
ClosePrinter(hPrinter);
end; 如万能档案管理软件

3楼: 都用到哪些单元啊,谢谢.最好有个完成的例子[:)],学习中.....

4楼: 我也想知道!

5楼: FormInfo : TFormInfo1; 这个forminfo是个什么东东?

6楼: 我仔细看了一下delphi2006的帮助文档,了解了多一些的东西:其中要引用printers单元,以及一些函数的使用要加在{$ifndef win32}和{$endif}之间才编译的过去,但其间的代码并不执行...其中forminfo1是个结构体,可参看delphi的帮助文档.总的来说这个问题我还没有弄明白,最好有个好看的例子,哪位过路的大侠帮忙解释一下,谢过先..[:)]

销售管理软件版7楼: 帮顶!

╭=========================================╮

80G海量源代码,控件,书籍全免费狂下不停!

http://www.source520.com

╰=========================================╯