哈哈!真凑巧.这几天一直为这个问题闹心.刚好下午把他解决了.
1.用DELPHI的PRINTSETUPDIALOG是不行的.
2.我自己做了一个打印设置对话框.结果有一个小小的BUG----
当在网络上,当用联想1+1打印机(hp)时,当运行十几次时---死机.
我调试了几天,百思不得其解,于是-------
3.我只有暂且调用打印机属性对话框了.请使用下面的函数:
function PrintSetup(hParent: THandle):Boolean;//参数为父窗的属性
const
MSG_NO_PRINT='系统没装打印设备!';
var
FHandle:THandle;
HPrt:THandle;
FDevice:array[0..79] of char;
FDriver:array[0..79] of char;
FPort:array[0..79] of char;
begin
try
FHandle:=0;
HPrt:=0;
Printer.GetPrinter(FDevice, FDriver, FPort, FHandle);
OpenPrinter(FDevice, HPrt, nil);
PrinterProperties(hParent,HPrt);
ClosePrinter(hPrt);
except
Application.MessageBox(MSG_NO_PRINTER,pChar(Application.Title),MB_OK+MB_ICONERROR);
Result:=False;
Exit;
end;
Result:=True;
end;
到这里,打印设置已经完成了.但仍然有一个问题:
由于函数中调用了PRINTER对象.而在一个应用程序中PRINTER
只在第一次调用时创建.所以,你现在访问PRINTER对象的属性时,
它仍然是设置以前的值.
所以,你需要一个变量.
var
pTemp:TPrinter;
begin
pTemp:=TPrinter.Create;
with pTempdo
begin
//YOU CODE HERE
end;
pTemp.Free;
end;
//到此为止,大功告成!