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 + -
显示快捷键?