DELPHI 指定打印机打印

COMPUTERZZZ 2010-03-25 02:30:47
有两台打印机A,B
我打印报表1时,用A打印机打印,打印报表2时,用B打印机打印

我是这样写的:

打印A时,调用SETPRINTER(0)
打印B时,调用SETPRINTER(1)
可是第一次先打报表1时,再打报表2,就总是打到打印机1
如果第一次先打报表2时,再打报表1,就总是打到打印机2
不知是什么问题?

procedure TPayFrm.SetPrinter(serno:integer);
var
Mydevice,Mydriver,MyPort:array[0..255] of char;
MyHandle:THandle;
i:integer;
begin
if printer.Printers.Count=1 then exit;
printer.PrinterIndex:=Serno;
Printer.GetPrinter(Mydevice,
MyDriver,
MyPort,
MyHandle);
StrCat(MyDevice,',');
StrCat(MyDevice,MyDriver);
StrCat(MyDevice,',');
StrCat(Mydevice,MyPort);
//write win.ini
WriteProfileString('WINDOWS','DEVICE',Mydevice);
//tell all application that windows ini file has changed ,
//this will cause them all to recheck default printer
SendMessage(HWND_BROADCAST,
WM_WININICHANGE,
0,
LongInt(pChar('windows'))
);

end;
...全文
954 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
mjp1234airen4385 2010-03-26
  • 打赏
  • 举报
回复
楼主做的复杂了。
把A报表的打印机的配置参数设置为打印1,
把B报表的打印机的配置参数设置为打印2,

打印A的时候找到所有的打印机,在其中找到打印机1,
把打印机设置为当前打印机,直接输出就行了。
这些在Delphi的Pinters单元里都有,不用调用WindowsAPI处理的。
zhutaozhi53 2010-03-26
  • 打赏
  • 举报
回复
每次去检索打印机了,还有可以设置打印到那个打印机上的了
COMPUTERZZZ 2010-03-25
  • 打赏
  • 举报
回复
用户就是要默认的,不想选择!

建立报表和打印机的对应关系如何做呢?
亮剑_ 2010-03-25
  • 打赏
  • 举报
回复
建立报表和打印机的对应关系,放在数据库或配置文件中
最好再提供前端设置界面,可以由用户选择

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧