我的打印机有多台台。 但是打印是有条件的,就是根据不同的条件,让不同的打印机去打印,为什么总是在默认打印机上打印呢,我在程序中更改默认打印机不成功,也不知为什么?原码如下,帮忙看看procedure TFrm_Main.Button1Click(Sender: TObject);
var
i ,j : integer;
p : string; Device: array[0..255] of Char;
Driver: array[0..255] of char;
Port: array[0..255] of char;
s1 : array[0..255] of Char;
hDeviceMode: THandle;
begin
s := TStrings.Create;
s := printer.Printers ;
ADOD_printer.First;
for j:= 0 to ADOD_printer.RecordCount -1 do //这里循环取得打印机打印
begin
p := ADOD_printer.FieldByName('PrinterName').AsString; //该字段保存了计算机名
printer.printerindex := Printer.Printers.IndexOf('p'); //p为打印机名
adod_test.Close;
adod_test.CommandText := 'select * from View_Printer where PrinterID = ' + Adod_printer.fieldByName('printerID').AsString; //取得该打印机要打的内容
adod_test.Open;
adod_test.First;
if not printer.Printing then //如果打印机没有工作,更改默认打印机
begin
Printer.GetPrinter (Device, Driver, Port, hDeviceMode);
StrCopy (s1, Device);
StrCat (s1, ',');
StrCat (s1, Driver);
StrCat (s1, ',');
StrCat (s1, Port);
WriteProfileString ('windows', 'device', s1);
StrCopy (s1, 'windows');
SendMessage (HWND_BROADCAST, WM_WININICHANGE, 0, LongInt(@s1));
end;
if not adod_test.eof then printer.begindoc; //开始设置打印内容
i:=0;
while not adod_test.eof do
begin
printer.canvas.textout(0,i*80,adod_test.FieldValues['GoodStylesName']);
inc(i);
if i = 50 then printer.newpage;
adod_test.next;
end;
if printer.printing then printer.enddoc;
ADOD_printer.Next;
end;end;
var
i ,j : integer;
p : string; Device: array[0..255] of Char;
Driver: array[0..255] of char;
Port: array[0..255] of char;
s1 : array[0..255] of Char;
hDeviceMode: THandle;
begin
s := TStrings.Create;
s := printer.Printers ;
ADOD_printer.First;
for j:= 0 to ADOD_printer.RecordCount -1 do //这里循环取得打印机打印
begin
p := ADOD_printer.FieldByName('PrinterName').AsString; //该字段保存了计算机名
printer.printerindex := Printer.Printers.IndexOf('p'); //p为打印机名
adod_test.Close;
adod_test.CommandText := 'select * from View_Printer where PrinterID = ' + Adod_printer.fieldByName('printerID').AsString; //取得该打印机要打的内容
adod_test.Open;
adod_test.First;
if not printer.Printing then //如果打印机没有工作,更改默认打印机
begin
Printer.GetPrinter (Device, Driver, Port, hDeviceMode);
StrCopy (s1, Device);
StrCat (s1, ',');
StrCat (s1, Driver);
StrCat (s1, ',');
StrCat (s1, Port);
WriteProfileString ('windows', 'device', s1);
StrCopy (s1, 'windows');
SendMessage (HWND_BROADCAST, WM_WININICHANGE, 0, LongInt(@s1));
end;
if not adod_test.eof then printer.begindoc; //开始设置打印内容
i:=0;
while not adod_test.eof do
begin
printer.canvas.textout(0,i*80,adod_test.FieldValues['GoodStylesName']);
inc(i);
if i = 50 then printer.newpage;
adod_test.next;
end;
if printer.printing then printer.enddoc;
ADOD_printer.Next;
end;end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货