basic.pas
来自「delphi框架可以学习, 写的很好的」· PAS 代码 · 共 758 行 · 第 1/2 页
PAS
758 行
{*******************************************************}
{ }
{ 牛仔布信息系统 }
{ }
{ 版权所有 (C) 2006 前进牛仔布有限公司 }
{ }
{使用说明:所有工作窗口的父类 }
{单元名称:Basic.pas }
{建立信息:由 管理员 于 2006-10-8 4:35:38 }
{工程名称:JeansIM }
{*******************************************************}
unit Basic;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, RzPanel, RzButton, ImgList, ExtCtrls, ActnList, DateUtils, Menus, DB,
ppBands, ppCache, ppClass, ppProd, ppReport, ppRelatv, ppDB, ppDBPipe,
ppComm, ppEndUsr, DBGrideh;
type
//声明一个用户事件类型
TMyEvent = procedure (Sender: TObject; var _EventNote, _State: String) of Object;
TfrmBasic = class(TForm)
RzToolbar1: TRzToolbar;
imglToolsbar: TImageList;
btnOpen: TRzToolButton;
RzSpacer1: TRzSpacer;
BtnNew: TRzToolButton;
BtnSave: TRzToolButton;
BtnUndo: TRzToolButton;
BtnDelete: TRzToolButton;
RzSpacer2: TRzSpacer;
BtnCheck: TRzToolButton;
BtnUnCheck: TRzToolButton;
RzSpacer3: TRzSpacer;
BtnPreview: TRzToolButton;
BtnPrint: TRzToolButton;
BtnDesigen: TRzToolButton;
RzSpacer4: TRzSpacer;
BtnHelp: TRzToolButton;
BtnExit: TRzToolButton;
RzSpacer5: TRzSpacer;
Btn1: TRzToolButton;
Btn2: TRzToolButton;
Btn3: TRzToolButton;
Btn4: TRzToolButton;
Btn5: TRzToolButton;
Btn6: TRzToolButton;
Btn7: TRzToolButton;
actlBase: TActionList;
actClose: TAction;
actOpen: TAction;
actOther2: TAction;
actOther3: TAction;
actOther4: TAction;
actOther5: TAction;
actOther6: TAction;
actOther7: TAction;
actOther1: TAction;
actNew: TAction;
BtnOther: TRzToolButton;
pmOther: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
actDelete: TAction;
actCancel: TAction;
actCheck: TAction;
actUncheck: TAction;
actPreview: TAction;
actPrint: TAction;
actDesign: TAction;
actHelp: TAction;
actSave: TAction;
BtnSelReport: TRzToolButton;
pmReport: TPopupMenu;
actEditData: TAction;
N1005: TMenuItem;
miCalc: TMenuItem;
dpTemplate: TppDBPipeline;
RBMaster: TppReport;
ppHeaderBand1: TppHeaderBand;
ppDetailBand1: TppDetailBand;
ppFooterBand1: TppFooterBand;
RBBuild: TppDesigner;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormActivate(Sender: TObject);
procedure actOpenExecute(Sender: TObject);
procedure actNewExecute(Sender: TObject);
procedure actSaveExecute(Sender: TObject);
procedure actCancelExecute(Sender: TObject);
procedure actDeleteExecute(Sender: TObject);
procedure actCheckExecute(Sender: TObject);
procedure actUncheckExecute(Sender: TObject);
procedure actPreviewExecute(Sender: TObject);
procedure actPrintExecute(Sender: TObject);
procedure actDesignExecute(Sender: TObject);
procedure actHelpExecute(Sender: TObject);
procedure actCloseExecute(Sender: TObject);
procedure actOther1Execute(Sender: TObject);
procedure actOther2Execute(Sender: TObject);
procedure actOther3Execute(Sender: TObject);
procedure actOther4Execute(Sender: TObject);
procedure actOther5Execute(Sender: TObject);
procedure actOther6Execute(Sender: TObject);
procedure actOther7Execute(Sender: TObject);
procedure ReportMenuClick(Sender: TObject);
procedure miCalcClick(Sender: TObject);
procedure RBMasterPrintDialogCreate(Sender: TObject);
procedure RBMasterBeforePrint(Sender: TObject);
procedure RBBuildClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
procedure doAction(Sender: TObject; _CurrentAction: String; doSomething: TMyEvent);
function IsModified: Boolean;
function CheckRepState: String; virtual; //检查报表状态
procedure LoadReport(_Name: String);
procedure GetDBGridSet; //读取当前窗口中所有的DBGrid设置
procedure SaveDBGridSet; //保存当前窗口中所有的DBGrid设置
public
{ Public declarations}
UseDataSet: TDataSet;
ReportName: String;
procedure CreateParams(var Params: TCreateParams); override;
procedure SetButtonState(DataSet: TDataSet);
procedure ButtonState(_IsActive, _IsEmpty, _IsModify, _IsCheck :Boolean); virtual;
procedure doBeforeEdit(DataSet: TDataSet);
procedure doBeforePrint(Sender: TObject); virtual;
procedure doAfterPrint(Sender: TObject); virtual;
procedure doMyOpen(Sender: TObject; var _EventNote, _State: String); virtual;
procedure doNewData(Sender: TObject; var _EventNote, _State: String); virtual;
procedure doSave(Sender: TObject; var _EventNote, _State: String); virtual;
procedure doCancel(Sender: TObject; var _EventNote, _State: String); virtual;
procedure doDelete(Sender: TObject; var _EventNote, _State: String); virtual;
procedure doCheck(Sender: TObject; var _EventNote, _State: String); virtual;
procedure doUnCheck(Sender: TObject; var _EventNote, _State: String); virtual;
procedure doPreview(Sender: TObject; var _EventNote, _State: String); virtual;
procedure doPrint(Sender: TObject; var _EventNote, _State: String); virtual;
procedure doDesign(Sender: TObject; var _EventNote, _State: String); virtual;
procedure doHelp(Sender: TObject; var _EventNote, _State: String); virtual;
procedure doForLog1(Sender: TObject; var _EventNote, _State: String); virtual;
procedure doForLog2(Sender: TObject; var _EventNote, _State: String); virtual;
procedure doForLog3(Sender: TObject; var _EventNote, _State: String); virtual;
procedure doForLog4(Sender: TObject; var _EventNote, _State: String); virtual;
procedure doForLog5(Sender: TObject; var _EventNote, _State: String); virtual;
procedure doForLog6(Sender: TObject; var _EventNote, _State: String); virtual;
procedure doForLog7(Sender: TObject; var _EventNote, _State: String); virtual;
end;
var
frmBasic: TfrmBasic;
implementation
uses MyPublic, dm32, PrvDlg;
{$R *.dfm}
procedure TfrmBasic.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style := (Params.Style xor WS_SYSMENU);
end;
procedure TfrmBasic.doAction(Sender: TObject; _CurrentAction: String; doSomething: TMyEvent);
var
EventLog: TEventLog;
begin
//让子类可以有机会修改这个描述
if _CurrentAction <> '' then EventLog.Style := _CurrentAction
else EventLog.Style := '未知类型';
//记录日志
EventLog.STime := Now();
EventLog.Module := _CurrentModule;
EventLog.UseSQL := '';
EventLog.State := EV_NULL;
//子类执行自己的动作,必须传回一个成功与否的信息
doSomething(Sender, EventLog.Note, EventLog.State);
EventLog.ETime := Now();
if EventLog.Note <> '' then RecordUserAction(EventLog);
end;
procedure TfrmBasic.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//关闭窗口事件
if actSave.Enabled then
if ShowMess('询问', '尚有数据未保存!需要保存吗?', MB_OKCANCEL) then
actSaveExecute(nil);
//保存DBGrid
SaveDBGridSet;
UseDataSet.Close;
action := caFree;
end;
procedure TfrmBasic.FormCreate(Sender: TObject);
begin
//这样设计太死板!需要修改
if Pos('BASE', _Para1) = 0 then _CurrentModule := Self.Name
else _CurrentModule := Self.Name + _Para1;
//初始化窗口
actSave.Enabled := False;
actCancel.Enabled := False;
actDelete.Enabled := False;
actCheck.Enabled := False;
actUnCheck.Enabled:= False;
Btn1.Visible := False; Btn2.Visible := False;
Btn3.Visible := False; Btn4.Visible := False;
Btn5.Visible := False; Btn6.Visible := False;
Btn7.Visible := False;
RzSpacer5.Visible := False;
//设置报表变量
_PrintValue1 := '';
_PrintValue2 := '';
_PrintValue3 := '';
_PrintValue4 := '';
_PrintValue5 := '';
_PrintValue6 := '';
_PrintValue7 := '';
_PrintValue8 := '';
_PrintValue9 := '';
_PrintValue10:= '';
_PrintValue11:= '';
_PrintValue12:= '';
_PrintValue13:= '';
//初始化DBGrid
GetDBGridSet;
end;
procedure TfrmBasic.doMyOpen(Sender: TObject; var _EventNote, _State: String);
begin
//打开数据
end;
procedure TfrmBasic.doForLog1(Sender: TObject; var _EventNote, _State: String);
begin
//保留事件
end;
procedure TfrmBasic.doForLog2(Sender: TObject; var _EventNote, _State: String);
begin
//保留事件
end;
procedure TfrmBasic.doForLog3(Sender: TObject; var _EventNote, _State: String);
begin
//保留事件
end;
procedure TfrmBasic.doForLog4(Sender: TObject; var _EventNote, _State: String);
begin
//保留事件
end;
procedure TfrmBasic.doForLog5(Sender: TObject; var _EventNote, _State: String);
begin
//保留事件
end;
procedure TfrmBasic.doForLog6(Sender: TObject; var _EventNote, _State: String);
begin
//保留事件
end;
procedure TfrmBasic.doForLog7(Sender: TObject; var _EventNote, _State: String);
begin
//保留事件
end;
procedure TfrmBasic.doCancel(Sender: TObject; var _EventNote, _State: String);
begin
//取消当前修改
end;
procedure TfrmBasic.doNewData(Sender: TObject; var _EventNote, _State: String);
begin
//新增
end;
procedure TfrmBasic.doCheck(Sender: TObject; var _EventNote, _State: String);
begin
//审核数据
end;
procedure TfrmBasic.doDelete(Sender: TObject; var _EventNote, _State: String);
begin
//删除数据
end;
procedure TfrmBasic.doDesign(Sender: TObject; var _EventNote, _State: String);
var
OK: Boolean;
FCursor: Integer;
begin
if ReportName = '' then exit;
LoadReport(ReportName);
with RBBuild do
if Report = nil then Report:= RBMaster;
FCursor:= Screen.Cursor;
Screen.Cursor:= crSQLWait;
RBMaster.PageLimit:= 0;
RBBuild.Caption:= '报表编辑 - <[ '+ReportName+' ]>';
RBMaster.Modified:= False;
RBBuild.ShowModal;
Screen.Cursor:= FCursor;
end;
procedure TfrmBasic.doHelp(Sender: TObject; var _EventNote, _State: String);
begin
//帮助
end;
procedure TfrmBasic.doPreview(Sender: TObject; var _EventNote, _State: String);
var FCursor: Integer;
ls_State: String;
begin
//打开报表进行编辑
if ReportName = '' then exit;
LoadReport(ReportName);
ls_State := CheckRepState;
if ls_State <> '' then
begin
ShowMess('打印', '报表未准备完毕:'+ ls_State, MB_ICONERROR, 10);
exit;
end;
FCursor:= Screen.Cursor;
Screen.Cursor:= crSQLWait;
try
doBeforePrint(BtnPreview);
with RBMaster do
begin
//根据本地设置修改页边距等参数
if ReadIniInt(ReportName, 'Height', 0) <>0 then
begin
RBMaster.PrinterSetup.MarginBottom:= ReadIniInt(ReportName,'Bottom',0);
RBMaster.PrinterSetup.MarginLeft := ReadIniInt(ReportName,'Left',0);
RBMaster.PrinterSetup.MarginRight := ReadIniInt(ReportName,'Right',0);
RBMaster.PrinterSetup.MarginTop := ReadIniInt(ReportName,'Top',0);
RBMaster.PrinterSetup.PaperHeight := ReadIniInt(ReportName,'Height',0);
RBMaster.PrinterSetup.PaperWidth := ReadIniInt(ReportName,'Width',0);
end;
RBMaster.PageLimit:= 0;
end;
PrintReport(RBMaster, actDesign.Enabled, ReportName);
doAfterPrint(BtnPreview);
finally
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?