你很走运,有97年写的代码一定可行
http://www.chinaprogrammer.com/softshow/program/index.asp(5。0报表)有我写的控件中就有以下代码,不过你自己得优化一下
Procedure TFrmprint.prisetup(Var Msg : TMessage);
VAR BOOL_1:BOOLEAN;
devmode1:pdevmode;
begin
// exit;
//showmessage(inttostr(mrsource.dataset.recno));
if panel4.visible=true then
begin
exit;
end;
//1.22
hdevmode1:=copydata(hdevmode);
hdevnames1:=copydata(hdevnames); setprinter(hdevmode1,hdevnames1);
//1.22if frmprint<>nil then
if frmprint.pri1.execute then
begin
//1.22
GetPrinter(DevHandle, hDevNames);
hdevmode:=copydata(devhandle);
//1.22 BOOL_1:=TRUE ;//pri1.execute;
IF BOOL_1 THEN
BEGIN
frmprint.report.Page.Orientation:=printer.Orientation;
{
if frmprint.report.Page.Orientation=poPortrait then
begin
if (printer.pagewidth>100)and(printer.pagewidth<170) then
frmprint.report.Page.papersize:=A5
else
begin
if (printer.pagewidth>250) then
frmprint.report.Page.papersize:=A3
else
frmprint.report.Page.papersize:=A4; end; //a5
end //height
else //横向
begin
if (printer.pageheight>100)and(printer.pageheight<170) then
frmprint.report.Page.papersize:=A5
else
begin
if (printer.pageheight>250) then
frmprint.report.Page.papersize:=A3
else
frmprint.report.Page.papersize:=A4; end; //a5 end; //横向
}
devmode1:=pdevmode(globallock(hdevmode)); if devmode1^.dmpapersize=dmpaper_a3 then
frmprint.report.Page.papersize:=A3;
if devmode1^.dmpapersize=dmpaper_a4 then
frmprint.report.Page.papersize:=A4;
if devmode1^.dmpapersize=dmpaper_a5 then
frmprint.report.Page.papersize:=A5;
if devmode1^.dmpapersize=DMPAPER_LETTER then
frmprint.report.Page.papersize:=LETTER;
if devmode1^.dmpapersize=DMPAPER_LETTERSMALL then
frmprint.report.Page.papersize:=LETTERSMALL;
if pricount>1 then
prinumber:=0
else
prinumber:=1; progressbar1.position:=0;
LblPageNumber.Caption := IntToStr(1);
QRPreview.PageNumber:=1;
timer1.enabled:=true;
panel4.visible:=true;
report.preview;
END; //bool_1
end; //execute
end;
http://www.chinaprogrammer.com/softshow/program/index.asp(5。0报表)有我写的控件中就有以下代码,不过你自己得优化一下
Procedure TFrmprint.prisetup(Var Msg : TMessage);
VAR BOOL_1:BOOLEAN;
devmode1:pdevmode;
begin
// exit;
//showmessage(inttostr(mrsource.dataset.recno));
if panel4.visible=true then
begin
exit;
end;
//1.22
hdevmode1:=copydata(hdevmode);
hdevnames1:=copydata(hdevnames); setprinter(hdevmode1,hdevnames1);
//1.22if frmprint<>nil then
if frmprint.pri1.execute then
begin
//1.22
GetPrinter(DevHandle, hDevNames);
hdevmode:=copydata(devhandle);
//1.22 BOOL_1:=TRUE ;//pri1.execute;
IF BOOL_1 THEN
BEGIN
frmprint.report.Page.Orientation:=printer.Orientation;
{
if frmprint.report.Page.Orientation=poPortrait then
begin
if (printer.pagewidth>100)and(printer.pagewidth<170) then
frmprint.report.Page.papersize:=A5
else
begin
if (printer.pagewidth>250) then
frmprint.report.Page.papersize:=A3
else
frmprint.report.Page.papersize:=A4; end; //a5
end //height
else //横向
begin
if (printer.pageheight>100)and(printer.pageheight<170) then
frmprint.report.Page.papersize:=A5
else
begin
if (printer.pageheight>250) then
frmprint.report.Page.papersize:=A3
else
frmprint.report.Page.papersize:=A4; end; //a5 end; //横向
}
devmode1:=pdevmode(globallock(hdevmode)); if devmode1^.dmpapersize=dmpaper_a3 then
frmprint.report.Page.papersize:=A3;
if devmode1^.dmpapersize=dmpaper_a4 then
frmprint.report.Page.papersize:=A4;
if devmode1^.dmpapersize=dmpaper_a5 then
frmprint.report.Page.papersize:=A5;
if devmode1^.dmpapersize=DMPAPER_LETTER then
frmprint.report.Page.papersize:=LETTER;
if devmode1^.dmpapersize=DMPAPER_LETTERSMALL then
frmprint.report.Page.papersize:=LETTERSMALL;
if pricount>1 then
prinumber:=0
else
prinumber:=1; progressbar1.position:=0;
LblPageNumber.Caption := IntToStr(1);
QRPreview.PageNumber:=1;
timer1.enabled:=true;
panel4.visible:=true;
report.preview;
END; //bool_1
end; //execute
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货