basicdata.pas
来自「delphi框架可以学习, 写的很好的」· PAS 代码 · 共 172 行
PAS
172 行
unit BasicData;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Basic, ActnList, ImgList, RzPanel, RzButton, ExtCtrls, Grids,
DBGridEh, DB, Menus, ppEndUsr, ppBands, ppCache, ppClass, ppProd,
ppReport, ppDB, ppComm, ppRelatv, ppDBPipe;
type
TfrmBaseData = class(TfrmBasic)
dbgridList: TDBGridEh;
RzPanel1: TRzPanel;
ppBasicData: TppDBPipeline;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure doAfterPost(DataSet: TDataSet);
procedure dbgridListTitleBtnClick(Sender: TObject; ACol: Integer; Column: TColumnEh);
private
{ Private declarations }
procedure doMyOpen(Sender: TObject; var _EventNote, _State: String); override;
procedure doNewData(Sender: TObject; var _EventNote, _State: String); override;
procedure doSave(Sender: TObject; var _EventNote, _State: String); override;
procedure doCancel(Sender: TObject; var _EventNote, _State: String); override;
procedure doDelete(Sender: TObject; var _EventNote, _State: String); override;
public
{ Public declarations }
end;
var
frmBaseData: TfrmBaseData;
implementation
uses MyPublic, dm32;
{$R *.dfm}
procedure TfrmBaseData.doMyOpen(Sender: TObject; var _EventNote, _State: String);
var ls_SQL, ls_Err: String;
begin
_EventNote := '打开'+ _Para2;
_State := EV_OK;
ls_SQL := 'SELECT * FROM CODER WHERE FZLX = ''' + _Para1 + ''' ORDER BY NUMBER,CODE';
ls_Err := OpenDataSet(dm.qryBasicData, ls_SQL);
if ls_Err <> '' then
begin
ShowMess('系统错误','打开基础数据'+ _Para2 +'时失败,具体为:'+ls_Err, MB_ICONERROR);
_State := EV_FAIL;
Exit;
end;
end;
procedure TfrmBaseData.doNewData(Sender: TObject; var _EventNote, _State: String);
begin
_EventNote := '新增'+ _Para2;
_State := EV_OK;
with dm.qryBasicData do
try
if not Active then actOpenExecute(nil);
if State in [dsEdit, dsInsert] then Post;
Append;
dbgridList.SetFocus;
except
_State := EV_FAIL;
end;
end;
procedure TfrmBaseData.FormCreate(Sender: TObject);
begin
inherited;
Caption := Caption + ' 之 ' + _Para2;
UseDataSet := dm.qryBasicData;
UseDataSet.AfterPost := doAfterPost;
UseDataSet.BeforeEdit := doBeforeEdit;
actOpenExecute(nil);
end;
procedure TfrmBaseData.FormClose(Sender: TObject; var Action: TCloseAction);
begin
dm.qryBasicData.Close;
inherited;
end;
procedure TfrmBaseData.doAfterPost(DataSet: TDataSet);
var ls_num: String;
begin
//保存后的数据处理
with dm.qryBasicData do
try
AfterPost := nil;
Edit;
//处理序号
if FieldByName('NUMBER').IsNull then
begin
GetFieldVal('CODER','MAX(NUMBER)+1','FZLX='''+_Para1+'''', ls_num);
if ls_num = '' then FieldByName('NUMBER').AsString := '0'
else FieldByName('NUMBER').AsString := ls_num;
end;
if FieldByName('ISOK').IsNull then FieldByName('ISOK').AsInteger := 1;
FieldByName('FZLX').AsString := _Para1;
FieldByName('SRRQ').AsDateTime := Now;
FieldByName('CZY').AsString := CurrentUser.UserCode;
Post;
finally
AfterPost := doAfterPost;
end;
end;
procedure TfrmBaseData.doSave(Sender: TObject; var _EventNote, _State: String);
begin
_EventNote := '保存'+ _Para2;
_State := EV_OK;
try
if dm.qryBasicData.State in [dsEdit, dsInsert] then
dm.qryBasicData.Post;
except
_State := EV_FAIL;
end;
end;
procedure TfrmBaseData.doCancel(Sender: TObject; var _EventNote, _State: String);
begin
if not ShowMess('询问','确定要取消刚才对数据的修改吗?', MB_OKCANCEL) then Exit;
_EventNote := '取消'+ _Para2;
_State := EV_OK;
try
if dm.qryBasicData.State in [dsEdit, dsInsert] then
dm.qryBasicData.Cancel;
except
_State := EV_FAIL;
end;
end;
procedure TfrmBaseData.doDelete(Sender: TObject; var _EventNote, _State: String);
begin
if not ShowMess('询问','确定要删除下面所选择的数据吗?', MB_OKCANCEL) then Exit;
_EventNote := '删除'+ _Para2 +'[' +dm.qryBasicData.FieldByName('CODE').AsString+']';
_State := EV_OK;
try
if dm.qryBasicData.State in [dsEdit, dsInsert] then
dm.qryBasicData.Post;
dm.qryBasicData.Delete;
except
_State := EV_FAIL;
end;
end;
procedure TfrmBaseData.dbgridListTitleBtnClick(Sender: TObject;
ACol: Integer; Column: TColumnEh);
begin
DBGridTitleBtnClick(Sender, ACol, Column);
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?