如果在window xp或2000的打印机中的服务器属性中创建新格式,也就是自定义纸张的大小,必须用程序加入 ( 积分: 100 )

  • 主题发起人 主题发起人 huhongru
  • 开始时间 开始时间
H

huhongru

Unregistered / Unconfirmed
GUEST, unregistred user!
打印机
[文件]
服务器属性
创建新格式
 
打印机
[文件]
服务器属性
创建新格式
 
//这个函数能够添加你要的任何纸型。它首先检查你添加的纸型是否存在,不存在就添加,返回值为纸型的索引号
uses WinSpool, Printers;
//pFormName: 自定义纸型的名称(不要与已有的重名,否则不会添加,只返回索引号);
nPaperWidth, nPaperLength: 纸宽和纸高;
function AddCustomPaperSize(pFormName: PChar;
nPaperWidth, nPaperLength: Longint): Longint;
var
phPrinter, dwNeeded, dwReturned, i: LongWord;
pBuf: PChar;
pFormInfo: PFormInfo1A;
begin
Result := -1;
if OpenPrinter(PChar(Printer.Printers[0]), phPrinter, nil) then
begin
EnumForms(phPrinter, 1, nil, 0, dwNeeded, dwReturned);
pBuf := AllocMem(dwNeeded);
EnumForms(phPrinter, 1, pBuf, dwNeeded, dwNeeded, dwReturned);
for i := 0 to dwReturned - 1do
if PFormInfo1A(pBuf + i*SizeOf(_FORM_INFO_1A)).pName = String(pFormName) then
begin
Result := i;
Break;
end;
FreeMem(pBuf);
if Result < 0 then
begin
New(pFormInfo);
with pFormInfo^do
begin
Flags := FORM_USER;
pName := pFormName;
Size.cx := nPaperWidth;
Size.cy := nPaperLength;
ImageableArea.Left := 0;
ImageableArea.Top := 0;
ImageableArea.Right := Size.cx;
ImageableArea.Bottom := Size.cy;
end;
AddForm(phPrinter, 1, pFormInfo);
Dispose(pFormInfo);
Result := dwReturned;
end;
end;
ClosePrinter(phPrinter);
end;
2、通过索引号选中自定义纸型即可:
QuickRep1.Page.PaperSize := AddCustomPaperSize('huhongru 同志的纸型', 1024, 768);
 
谢谢您的回答
 
给分啊 ~~__~~
 
谢谢你,分数我全给你的!可你给的函数的长度与宽度的单位是什么啊!我照你给我试了一下,给得出是0.1cm与0.08cm!
 
以 0.001mm 为 1 个单位,例如宽 20cm 的纸应设成 20cm/0.001mm = 200000。
 
接受了,谢谢!
 
To vvyang:
为什么你的函数在xp的操作系统没有用呢!我会另外给分的
 
能用啊,我就是在 XP 下调试的。98 下倒是没用。
 
To vvyang:
谢谢你的帮忙!我改了那个函数,把
    ImageableArea.Left := 0;
ImageableArea.Top := 0;
ImageableArea.Right := Size.cx;
ImageableArea.Bottom := Size.cy
   的四个值变成自定义的值就不行!
后来我改了回来就可以的!但我想再向你请教一个问题,为什么在本机安装任何一个网络打印机就不行了!你能否实现对网络上的一个打印机增加一个打印的格式呢!再次谢谢你的帮忙!
 
QuickRep1.Page.PaperSize := AddCustomPaperSize('huhongru 同志的纸型', 1024, 768);
怎么会老是出错,怎么用这呢?
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部