如何指定打印机打印

COMPUTERZZZ 2010-05-13 09:15:35
一台电脑安装了两台打印机(A和B )
要打印机两种报表,一种报表指定用A打印机打,一种报表指定用B打印机打
可是打印时,打印机是切换过来了,可是纸张不对
一个月前还是好的,突然一下,就不行了!

procedure TPayFrm.N6Click(Sender: TObject);
var strsql:string;
DaXie:string;
printno:integer;
begin
inherited;
//是否已交费
if not IsPay(adomst.fieldbyname('yhyear').AsString,
adomst.fieldbyname('yhmonth').AsString,
adomst.fieldbyName('yhcode').AsString ) then
begin
{ Messagedlg('用户:<'+adomst.FieldByName('yhcode').AsString+'>'+
adomst.FieldByName('yhyear').AsString+'年'+
adomst.FieldByName('yhmonth').AsString+'月,未交费,不能打印!' ,mtWarning,[mbok],0);
}
exit;
end;
SetPrinter(0);//设置打印机0
if adomst.IsEmpty then exit;

strsql:='select * from v_payvoince where yhyear='+
adomst.fieldbyname('yhyear').AsString+
' and yhmonth='+adomst.fieldbyname('yhmonth').AsString+
' AND YHCODE='''+adomst.fieldbyname('yhcode').AsString+'''';
// showmessage(strsql);

quyprint.Connection:=FrmQCDM.ADOCon;
quyprint.Close;
quyprint.SQL.Clear;
quyprint.SQL.Text:=strsql;
quyprint.Open;

// SetPaper(0);
DaXie:=XiaoXieToDaXie( FormatFloat('#.00', quyprint.FieldByName('payamount').AsFloat) );
With PrintFrm do
begin
BASIC_USE.DataSet:=quyprint;
RMReport1.LoadFromFile('.\report\Payvoince.rmf');
Diaxie:=DaXie;
RMReport1.PrinterName:=printer.Printers[printer.PrinterIndex];

RMReport1.ShowReport;

end;
end;



//污水费收据
procedure TPayFrm.N8Click(Sender: TObject);
var strsql:string;
sda:widestring;
P:Boolean;
digits:array[0..6] of string;
DaXie:array[0..8] of string;
i,n:integer;
begin
inherited;
if adomst.IsEmpty then exit;
SetPrinter(1); //设置打印机1
P:=IsPayPWF(adomst.fieldbyname('yhcode').AsString,
adomst.fieldbyname('yhyear').AsInteger,
adomst.fieldbyname('yhmonth').AsInteger);
if (P=False) AND (MessageDlg('你确认已收到< '+adomst.fieldbyname('yhcode').AsString+' >'+
adomst.fieldbyname('yhyear').AsString+'年'+adomst.fieldbyname('yhmonth').AsString+'月的污水费吗?',
mtInformation,[mbYes,mbNO],0) =mrNo) then exit;
UpdatePWF_LOCK(adomst.fieldbyname('yhcode').AsString,
adomst.fieldbyname('yhyear').AsInteger,
adomst.fieldbyname('yhmonth').AsInteger
);

strsql:=' select dbo.CalLast(a.yhyear,a.yhmonth) as PrevDate,a.yhaddress,a.pwf,PWFSFBQ,a.pwfprice,b.kaipiaoren,b.soukuangren '+
' from v_usedatabymonth a inner join yh_paydata b '+
' on a.serno=b.ref_useno '+
' where b.yhyear='+adomst.fieldbyname('yhyear').AsString+' and b.yhmonth='+
adomst.fieldbyname('yhmonth').AsString+
' AND b.YHCODE='''+adomst.fieldbyname('yhcode').AsString+'''';
//showmessage(strsql);

quyprint.Connection:=FrmQCDM.ADOCon;
quyprint.Close;
quyprint.SQL.Clear;
quyprint.SQL.Text:=strsql;
quyprint.Open;

// DaXie:=XiaoXieToDaXie( FormatFloat('0.00', quyprint.FieldByName('pwf').AsFloat) );
n:=0;
for i:=0 to High(DaXie) do
DaXie[i]:='0';

sda:=Small2Big(quyprint.fieldbyname('pwf').AsFloat );
// showmessage(sda[1]);
DaXie[Length(sda)]:='¥';
for i:=Length(sda) downto 1 do
begin
// showmessage(sda[i]);
DaXie[n]:=sda[i];
Inc(n);
end;



With PrintFrm do
begin
BASIC_USE.DataSet:=quyprint;

RMReport1.LoadFromFile('.\report\PWFVoince.rmf');
// Diaxie:=DaXie;

baiwan:=DaXie[8];
shiwan:=DaXie[7];
wang :=Daxie[6];
qian :=Daxie[5];
bai :=DaXie[4];
shi :=Daxie[3];
yuan :=Daxie[2];
jiao :=Daxie[1];
feng :=Daxie[0];
RMReport1.PrinterName:=printer.Printers[printer.PrinterIndex];
RMReport1.ShowReport;

end;
end;



procedure TPayFrm.SetPrinter(serno:integer);
var
Mydevice,Mydriver,MyPort,s:array[0..255] of char;
MyHandle:THandle;
i:integer;
pDMode:PDevMode;
begin

if printer.Printers.Count=1 then exit;
//printer.SetPrinter();
printer.Refresh;
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(@MyDevice)
);


end;
...全文
239 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhy 2010-05-13
  • 打赏
  • 举报
回复
那你就再设置一次纸张呗

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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