在win2000的Delphi5中QuickRP设置自定义纸张(多台打印机) ( 积分: 100 )

  • 主题发起人 主题发起人 kudzu23
  • 开始时间 开始时间
K

kudzu23

Unregistered / Unconfirmed
GUEST, unregistred user!
在win2000的Delphi5中QuickRP设置自定义纸张(多台打印机),怎么设定?
 
在win2000的Delphi5中QuickRP设置自定义纸张(多台打印机),怎么设定?
 
什么系统还不一样吗?
程序里设定
uses qrprntr;
quickrep1.page.papersize := custom;//自定义
quickrep1.page.width := 纸张宽度
quickrep1.page.length := 纸张高度
quickrep1.page.leftmargin := 左边距
quickrep1.page.rightmargin := 右边距
quickrep1.page.topmargin := 上边距
quickrep1.page.bottommargin := 下边距
 
和操作系统有没关系我不太清楚
我是用win2000的
有多台打印机的
比如说是两台
它打的QR是不同的长度和宽度
所以...
好象设了自定义纸张就会两台打出来的长度和宽度一样的
 
2000/XP 跟 98 当然不一样。
1、这个函数能够添加你要的任何纸型。它首先检查你添加的纸型是否存在,不存在就添加,返回值为纸型的索引号:
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('kudzu23同志的纸型', 1024, 768);
 
判断之后分别设置就可以了:
uses qrprntr;
quickrep1.page.papersize := custom;//自定义
case quickrep1.PrinterSettings.PrinterIndex of
0://第一台打印机
begin
quickrep1.page.width := 纸张宽度
quickrep1.page.length := 纸张高度
quickrep1.page.leftmargin := 左边距
quickrep1.page.rightmargin := 右边距
quickrep1.page.topmargin := 上边距
quickrep1.page.bottommargin := 下边距
end;
1://第2台打印机
begin
quickrep1.page.width := 纸张宽度
quickrep1.page.length := 纸张高度
quickrep1.page.leftmargin := 左边距
quickrep1.page.rightmargin := 右边距
quickrep1.page.topmargin := 上边距
quickrep1.page.bottommargin := 下边距
end
else
//其它打印机
begin
quickrep1.page.width := 纸张宽度
quickrep1.page.length := 纸张高度
quickrep1.page.leftmargin := 左边距
quickrep1.page.rightmargin := 右边距
quickrep1.page.topmargin := 上边距
quickrep1.page.bottommargin := 下边距
end
end;
 
我回去试试啊!
 
落是能解决问题就都给你了!!
 
我还没有试过
不过这么长时间了
散分了
 
For Win98: Custom Size
For WinNT: Default Size
 
后退
顶部