?? print_temp.pas
字號:
//打印預覽 源程序
//本版本開始設計于2002年5月初
//作者:肖揚
//本系統(tǒng)除了第三方控件或源程序外,所有代碼均為作者本人獨立完成
//如果你引用了本程序中的源代碼,希望你能保留本信息
//如果你對本程序有何建議,請與作者聯系
//聯系方法:thinknet@china.com
//特別感謝:《Delphi 之葵花寶典2.7》、大富翁論壇,以及本程序中曾經(或正在)引用
// 或借鑒過的源程序代碼的作者,對未保留原作者信息的源程序的作者表示歉意!
//如果本程序中的源代碼侵犯了您的權益,請與作者聯系,將立即刪除
//本系統(tǒng)中的源程序只供您研究、開發(fā)個人軟件或免費軟件,
//任何商業(yè)使用均需經本系統(tǒng)作者同意!!!
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('沒有找到或系統(tǒng)沒有安裝默認打印機!',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; //發(fā)出提示音
if self.Showing then
begin
MessageBeep (mb);
self.SetFocus ;
end;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -