📄 datamodel.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 + -