指定打印机打印的问题 ( 积分: 80 )

  • 主题发起人 主题发起人 sun100
  • 开始时间 开始时间
S

sun100

Unregistered / Unconfirmed
GUEST, unregistred user!
ComboBox2.Items := Printer.Printers;
ComboBox2.ItemIndex := Printer.PrinterIndex;
Printer.PrinterIndex:=ComboBox2.ItemIndex;
QuickRep1.Print;
我想指定使用ComboBox2中选着的打印机去打印,可以执行上面的时候还是使用默认的打印机去打印,怎么样去指定打印机打印?而不是把指定的打印机改成默认打印机?
这个问题很多人都提问过,可是结贴时都没有给出具体的解决办法
 
好像要指针打印机所在的路径,名称才行!ComboBox2在发生变化时要给出路径和名称!
 
我见网上的资料全是
Printer.PrinterIndex:=ComboBox2.ItemIndex;
就说可以指定打印机打印了,
可我这里不行.为什么?
 
添加 ComboBox1、Button1 控件。。
------------------
uses
printers, WinSpool;
.
.
.
procedure TForm1.FormCreate(Sender: TObject);
begin
ComboBox1.Items := Printer.Printers;
{populates ComboBox}
ComboBox1.ItemIndex := Printer.PrinterIndex;
{sets display to current printer}
end;

procedure TForm1.Button1Click(Sender: TObject);
var
Device: array[0..255] of Char;
Driver: array[0..255] of char;
Port: array[0..255] of char;
s: array[0..255] of Char;
hDeviceMode: THandle;
begin

Printer.PrinterIndex := ComboBox1.ItemIndex;
Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
StrCopy(s, Device);
StrCat(s, ',');
StrCat(s, Driver);
StrCat(s, ',');
StrCat(s, Port);
WriteProfileString('windows', 'device', s);
StrCopy(s, 'windows');
SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, LongInt(@s));
end;
 
Printer.PrinterIndex := ComboBox2.ItemIndex;
printer.begin
doc;
printer.canvas.moveto(0, 0);
printer.canvas.lineto(300, 300);
printer.canvas.textout(20, 20, '11111111111');
printer.enddoc;
这个可以根据ComboBox2选择的打印机打印
Printer.PrinterIndex := ComboBox2.ItemIndex;
printer.begin
doc;
dhdbb.QuickRep1.Print;
printer.enddoc;
用这个的时候ComboBox2选择的不是默认打印机时,ComboBox2选择的打印机进纸,不打印任何内容,而QuickRep1的内容在默认打印机上打印,什么原因?谢谢
 
3楼的代码是把选择的打印机改为默认打印机.我想实现的是,根据初始的时候选择的打印机打印,而不一定是默认打印机
 
急啊,请帮忙
 
还是嫌分少啊
 
后退
顶部