📄 print_temp.pas
字号:
//打印预览 源程序
//本版本开始设计于2002年5月初
//作者:肖扬
//本系统除了第三方控件或源程序外,所有代码均为作者本人独立完成
//如果你引用了本程序中的源代码,希望你能保留本信息
//如果你对本程序有何建议,请与作者联系
//联系方法:thinknet@china.com
//特别感谢:《Delphi 之葵花宝典2.7》、大富翁论坛,以及本程序中曾经(或正在)引用
// 或借鉴过的源程序代码的作者,对未保留原作者信息的源程序的作者表示歉意!
//如果本程序中的源代码侵犯了您的权益,请与作者联系,将立即删除
//本系统中的源程序只供您研究、开发个人软件或免费软件,
//任何商业使用均需经本系统作者同意!!!
unit PRINT_TEMP;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, ToolWin, qrprntr,Quickrpt,StdCtrls, ExtCtrls,qrextra, ImgList,
QREXPORT, Menus,frmmain,myself, XPMenu;
type
TFrm_Print_temp = class(TForm)
ControlBar1: TControlBar;
ToolBar_print: TToolBar;
ImageList_print: TImageList;
TB_allscr: TToolButton;
TB_100: TToolButton;
TB_auto: TToolButton;
TB_first: TToolButton;
ToolButton5: TToolButton;
TB_PRI: TToolButton;
TB_NEXT: TToolButton;
TB_LAST: TToolButton;
ToolButton9: TToolButton;
TB_PRINTSETUP: TToolButton;
TB_PRINT: TToolButton;
ToolButton12: TToolButton;
TB_OPEN: TToolButton;
TB_SAVE: TToolButton;
ToolButton15: TToolButton;
TB_EXIT: TToolButton;
StBar_print: TStatusBar;
QRP_print: TQRPreview;
Opendialog: TOpenDialog;
SaveDialog: TSaveDialog;
MM_show: TMainMenu;
showscal: TMenuItem;
show_10: TMenuItem;
show_20: TMenuItem;
show_50: TMenuItem;
show_75: TMenuItem;
show_100: TMenuItem;
show_150: TMenuItem;
show_200: TMenuItem;
show_400: TMenuItem;
TB_about: TToolButton;
procedure TB_allscrClick(Sender: TObject);
procedure TB_100Click(Sender: TObject);
procedure TB_autoClick(Sender: TObject);
procedure TB_firstClick(Sender: TObject);
procedure TB_PRIClick(Sender: TObject);
procedure TB_NEXTClick(Sender: TObject);
procedure TB_LASTClick(Sender: TObject);
procedure QRP_printPageAvailable(Sender: TObject; PageNum: Integer);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure TB_EXITClick(Sender: TObject);
procedure TB_PRINTSETUPClick(Sender: TObject);
procedure TB_PRINTClick(Sender: TObject);
procedure show_10Click(Sender: TObject);
procedure QRP_printMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure QRP_printMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure QRP_printMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure QRP_printDblClick(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure TB_aboutClick(Sender: TObject);
procedure TB_SAVEClick(Sender: TObject);
procedure TB_OPENClick(Sender: TObject);
procedure FormDeactivate(Sender: TObject);
private
{ Private declarations }
FPageCount : integer;
I_mouseX,I_mouseY:integer;
B_mouse:bool;
public
{ Public declarations }
CurRep : TQuickRep;
end;
var
frm_print_temp: Tfrm_print_temp;
implementation
uses FRMMESSAGE;
{$R *.DFM}
procedure TFrm_Print_temp.TB_allscrClick(Sender: TObject);
begin
QRP_print.ZoomToFit;
end;
procedure TFrm_Print_temp.TB_100Click(Sender: TObject);
begin
show_10.checked:=false;
show_20.checked:=false;
show_50.checked:=false;
show_75.checked:=false;
show_100.checked:=true;
show_150.checked:=false;
show_200.checked:=false;
show_400.checked:=false;
QRP_print.Zoom:=100;
end;
procedure TFrm_Print_temp.TB_autoClick(Sender: TObject);
begin
QRP_print.ZoomToWidth;
end;
procedure TFrm_Print_temp.TB_firstClick(Sender: TObject);
begin
QRP_print.PageNumber := 1;
self.FormShow(self);
end;
procedure TFrm_Print_temp.TB_PRIClick(Sender: TObject);
begin
QRP_PRINT.PageNumber := QRP_print.PageNumber-1;
if QRP_print.PageNumber =0 then
QRP_print.PageNumber:=1;
self.FormShow(self);
end;
procedure TFrm_Print_temp.TB_NEXTClick(Sender: TObject);
begin
QRP_print.PageNumber := QRP_print.PageNumber+1;
self.FormShow(self);
end;
procedure TFrm_Print_temp.TB_LASTClick(Sender: TObject);
begin
QRP_print.PageNumber := FPageCount;
self.FormShow(self);
end;
procedure TFrm_Print_temp.QRP_printPageAvailable(Sender: TObject;
PageNum: Integer);
begin
FPageCount := PageNum ;
self.FormShow(self);
end;
procedure TFrm_Print_temp.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
CurRep := nil;
Action := caFree;
end;
procedure TFrm_Print_temp.TB_EXITClick(Sender: TObject);
begin
close;
end;
procedure TFrm_Print_temp.TB_PRINTSETUPClick(Sender: TObject);
begin
try
QRP_print.QRPrinter.PrintSetup;
except
messagedlg('没有找到或系统没有安装默认打印机!',mtError,[mbok],0)
end;
end;
procedure TFrm_Print_temp.TB_PRINTClick(Sender: TObject);
begin
if messagedlg('确定要按当前设置进行打印吗?',
mtinformation,[mbok,mbcancel],0)=mrok then
begin
frm_message.Memo_message.Lines.Append(datetimetostr(now)+':'+USERNAME+' - 打印文件');
tb_print.Enabled :=false;
QRP_print.QRPrinter.Print;
tb_print.Enabled :=true;
end;
end;
procedure TFrm_Print_temp.show_10Click(Sender: TObject);
begin
show_10.checked:=false;
show_20.checked:=false;
show_50.checked:=false;
show_75.checked:=false;
show_100.checked:=false;
show_150.checked:=false;
show_200.checked:=false;
show_400.checked:=false;
(sender as TMenuItem).Checked :=true;
if sender=show_10 then
QRP_print.Zoom:=10
else if sender=show_20 then
QRP_print.Zoom:=20
else if sender=show_50 then
QRP_print.Zoom:=50
else if sender=show_75 then
QRP_print.Zoom:=75
else if sender=show_100 then
QRP_print.Zoom:=100
else if sender=show_150 then
QRP_print.Zoom:=150
else if sender=show_200 then
QRP_print.Zoom:=200
else if sender=show_400 then
QRP_print.Zoom:=400;
end;
procedure TFrm_Print_temp.QRP_printMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if button<>mbRight then
begin
I_mouseX:=x;
I_mouseY:=y;
b_mouse:=true;
end
else
begin
if QRP_print.Zoom>20 then QRP_print.Zoom:=QRP_print.Zoom-10;
show_10.checked:=false;
show_20.checked:=false;
show_50.checked:=false;
show_75.checked:=false;
show_100.checked:=false;
show_150.checked:=false;
show_200.checked:=false;
show_400.checked:=false;
end;
end;
procedure TFrm_Print_temp.QRP_printMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
if b_mouse then
begin
with qrp_print.HorzScrollBar do
begin
Position :=position+(I_mousex-x);
end;
with qrp_print.vertScrollBar do
begin
Position :=position+(I_mousey-y);
end;
end;
self.StBar_print.Panels.Items[1].Text:=' 第 '+inttostr(self.QRP_print.PageNumber)+
' 页 共 '+inttostr(self.FPageCount)+' 页';
end;
procedure TFrm_Print_temp.QRP_printMouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
b_mouse:=false;
end;
procedure TFrm_Print_temp.QRP_printDblClick(Sender: TObject);
begin
if QRP_print.Zoom<400 then QRP_print.Zoom:=QRP_print.Zoom+10;
show_10.checked:=false;
show_20.checked:=false;
show_50.checked:=false;
show_75.checked:=false;
show_100.checked:=false;
show_150.checked:=false;
show_200.checked:=false;
show_400.checked:=false;
end;
procedure TFrm_Print_temp.FormResize(Sender: TObject);
begin
toolbar_print.Width :=self.Width;
end;
procedure TFrm_Print_temp.FormShow(Sender: TObject);
begin
toolbar_print.Width :=self.Width;
frm_message.Memo_message.Lines.Append(datetimetostr(now)+':'+USERNAME+' - 打印预览');
Tb_print.Enabled :=Checkrights(USERRIGHTS,'报表打印');
TB_save.Enabled :=Checkrights(USERRIGHTS,'报表打印');
if qrp_print.pagenumber=1 then
begin
tb_first.enabled:=false;
tb_pri.Enabled :=false;
end;
if qrp_print.pagenumber>1 then
begin
tb_first.enabled:=true;
tb_pri.Enabled :=true;
end;
if QRP_print.PageNumber>=fpagecount then
begin
tb_next.Enabled :=false;
tb_last.Enabled :=false;
end
else
begin
tb_next.Enabled :=true;
tb_last.Enabled :=true;
end;
self.StBar_print.Panels.Items[1].Text:=' 第 '+inttostr(self.QRP_print.PageNumber)+
' 页 总 '+inttostr(self.FPageCount)+' 页';
end;
procedure TFrm_Print_temp.TB_aboutClick(Sender: TObject);
begin
messagedlg('ThinkNET报表专用打印预览程序中文增强版'+chr(13)+chr(13)
+'(当前版本:V1.03)'+chr(13)+chr(13)+'作者:杨效国 Thinknet@china.com'+chr(13)+chr(13)
+'Ver1.01新增了鼠标拖动预览的功能。'+chr(13)+chr(13)
+'Ver1.02新增了鼠标右键缩小比例的功能。'+chr(13)+chr(13)
+'本版新增打印权限检测的功能、禁止主窗口与本窗口切换功能。',
mtinformation,[mbok],0);
end;
procedure TFrm_Print_temp.TB_SAVEClick(Sender: TObject);
var
fn:string;
begin
SaveDialog.Filter :='ThinkNet打印文件(*.PRN)|*.PRN';
SaveDialog.Title :='保存 PRN格式文件';
SaveDialog.DefaultExt :='PRN';
if SaveDialog.Execute then
begin
fn:=SaveDialog.FileName;
if FileExists(fn) then
begin
if messagedlg('文件已经存在,是否覆盖?',mtinformation,[mbyes,mbno],0)=mrno then
begin
exit; //不保存退出
end;
end;
try
QRP_print.QRPrinter.Save(fn);
showmessage('PRN格式文件保存成功,文件名为“'+fn+'”');
except
showmessage('PRN格式文件保存失败!');
end;
end;
end;
procedure TFrm_Print_temp.TB_OPENClick(Sender: TObject);
var
fname:string;
begin
opendialog.Filter :='ThinkNet打印文件(*.PRN)|*.PRN';
opendialog.Title :='打开 PRN格式文件';
if opendialog.Execute then
begin
fname:=opendialog.FileName ;
if not fileexists(fname) then
begin
showmessage('ThinkNET打印数据文件不存在,请重新选择');
exit;
end;
try
QRP_print.QRPrinter.Load(fname);
showmessage('ThinkNET打印文件导入成功。');
except
showmessage('ThinkNET打印文件导入失败。');
end;
end;
end;
procedure TFrm_Print_temp.FormDeactivate(Sender: TObject);
var
mb: CARDINAL;
begin
mb:=$0FFFFFFFF; //发出提示音
if self.Showing then
begin
MessageBeep (mb);
self.SetFocus ;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -