一台电脑安装了两台打印机(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 exit;
end;
SetPrinter(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; 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); //设置打印机
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;
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;
要打印机两种报表,一种报表指定用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 exit;
end;
SetPrinter(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; 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); //设置打印机
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;
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;
ComboBox1.ItemIndex:=Printer.PrinterIndex; //获得当前默认打印机
//设任意一个打印机为默认打印机
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));
2 设置Printer1的打印输出格式。
3 程序生成Printer0要打印的报表。
4 选择Printer0打印
5 清除现有的报表。
6 程序生成Printer1要打印的报表。
7 选择Printer1打印