在自己的开发过程中碰到要动态创建Dataset数据集,并且能够响应各类事件,例如AfterDelete事件。具体如下:
第一部分:创建DataSet
function TMainForm.CreateDataSet: TDataSet;
var
dsTemp:TDataSet;
cdsTemp: TClientDataSet;
begin
//初始化
dsTemp := TDataSet.Create(Application);
try
//字段名设置
with dsTemp.FieldDefs do
begin
Add('STID',ftInteger);
//其他字段根据要求定义
end;
//创建DataSet
cdsTemp := TClientDataSet.Create(Application);
if dsTemp.FieldDefs <> nil then
begin
cdsTemp.FieldDefs.Assign(dsTemp.FieldDefs);
cdsTemp.CreateDataSet;
result := (cdsTemp as TDataSet);
end;
finally
//内存释放
dsTemp.Free;
end;
end;
第二部分:添加记录
Function TMainForm.AddDataToSet(AdsData: TDataSet): TDataSet;
begin
//打开数据集
AdsData.Open;
with AdsData do
begin
Append;//添加
FieldByName('STID').AsInteger := 2 ;
post;//提交
end;
end; }
第三部分:调用和事件的响应
BDataSet:=CreateDataSet;
BDataSet.AfterDelete:=BAfterDelete;
事件:
produce BAfterDelete(DataSet:TDataSet);
begin
showmessage('Hello world');
end;