⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datamodel.pas

📁 关于利用DELPHI来进行企业级方案解决的著作的附书源码
💻 PAS
字号:
unit dataModel;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  DBTables, Db,PubVar;

type
  TDM = class(TDataModule)
    qryTemp: TQuery;
    MDB: TDatabase;
    DataSource1: TDataSource;
    Table1: TTable;
    Query1: TQuery;
    procedure Table1NewRecord(DataSet: TDataSet);
    procedure Table1BeforeEdit(DataSet: TDataSet);
    procedure Table1AfterDelete(DataSet: TDataSet);
    procedure Table1AfterInsert(DataSet: TDataSet);
    procedure Table1AfterPost(DataSet: TDataSet);
    procedure Table1AfterEdit(DataSet: TDataSet);
    procedure Table1BeforeDelete(DataSet: TDataSet);
    procedure Table1BeforeInsert(DataSet: TDataSet);
    procedure Table1AfterCancel(DataSet: TDataSet);
  private
      procedure setFieldMask;
  public
    { Public declarations }
    
  end;

var
  DM: TDM;

implementation

uses frmMain;

{$R *.DFM}
var
mystate:string;




procedure TDM.Table1NewRecord(DataSet: TDataSet);
begin
  setFieldMask;
end;

{设置字段输入掩码。适合编码结构'122222'。
对于树节点新增时增加子节点,修改时只修改本级节点。
如果当前节点是# ## ## (例:10203)
增加时掩码为:# ## ## ??(例:10203??) EditMask:= '!\1\0\2\0\300;1;?'
修改时掩码为:# ## ??   (例:102??)   EditMask:= '!\1\0\200;1;?'
}
procedure TDM.setFieldMask;
var
i,j:integer;
maskStr:string;
setField:TField;
begin
  setField:=table1.FieldByName('dwbm');
  //根节点位特殊情况,只能增加子层记录
  if (gNode.Text=cTreeRootTxt)   and
     (setField.DataSet.State =dsInsert)  then
   begin
       setField.EditMask:='!0;1;?' ;
       exit;
  end;
  
  if (gNodeID<>'') and (gNodelevel<cTreeMaxLevel) then
  begin
    maskStr:='';
    if setField.DataSet.State =dsInsert then    j:=Length(gNodeID)
    else                  j:=Length(gNodeID)-2 ;
    for i:=1 to j do
    begin
      maskStr:=maskStr+'\'+gNodeID[i];
    end;
    setField.EditMask:='!'+maskStr+ '00;1;?' ;
  end
  else
  begin
    //输入无效,取消
    setField.DataSet.Cancel ;
  end;
end;
procedure TDM.Table1BeforeEdit(DataSet: TDataSet);
begin
       form1.FrameTree1.tree.Enabled:=false;
     setFieldMask;
end;

procedure TDM.Table1AfterDelete(DataSet: TDataSet);
begin
  form1.FrameTree1.UpdateTree(gNode,'','del');
    //节点删除后,必须重新确定当前节点(selected node)。
  form1.FrameTree1TreeClick(self);
  form1.FrameTree1.Tree.Enabled:=true;
end;

procedure TDM.Table1AfterInsert(DataSet: TDataSet);
begin
  mystate:='add';
end;

procedure TDM.Table1AfterPost(DataSet: TDataSet);
var
nodetext:string;
begin
 nodetext:=table1.FieldByName('dwbm').Text+'-'+table1.FieldByName('dwqc').Text;

 if  (mystate='add') then
   form1.FrameTree1.UpdateTree(gNode,nodetext,mystate );
 if  (mystate='edi') then
   form1.FrameTree1.UpdateTree(gNode,nodetext,mystate );

 mystate:='edi';
 TABLE1.Refresh;
 form1.FrameTree1.Tree.Enabled:=true;

end;

procedure TDM.Table1AfterEdit(DataSet: TDataSet);
begin
  mystate:='edi';
end;

procedure TDM.Table1BeforeDelete(DataSet: TDataSet);
begin
 { if Application.MessageBox('确定要删除吗?', '操作提示',
     MB_OKCANCEL)<> IDOK then
  TABLE1.Cancel;   }

end;

procedure TDM.Table1BeforeInsert(DataSet: TDataSet);
begin
    form1.FrameTree1.tree.Enabled:=false;
end;

procedure TDM.Table1AfterCancel(DataSet: TDataSet);
begin
 form1.FrameTree1.Tree.Enabled:=true;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -