0
我已经创建了一个动态的TClientDataSet组件,并试图触发OnCalcFields事件....它一直没有工作。该代码看起来像这样...无法激发动态创建组件的事件
table := TClientDataset.Create(Application);
table.OnCalcFields := tableCalcFields; //where 'tablecalcfields' is the method defined by me.
table.FieldDefs := Query1.FieldDefs;
table.CreateDataSet;
table.Open;
Query1.First;
while not Query1.Eof do
begin
table.Append;
for I := 0 to Query1.FieldList.Count - 1 do
begin
table.FieldValues[table.FieldList[i].DisplayName] :=
Query1.FieldValues[Query1.FieldList[i].DisplayName];
end;
Query1.next;
table.Post;
end;
DataSource2.DataSet := table;
table.First;
在此之后,我将编辑在DBGrid中的信息(datasource2被设置好的吧),此时的事件必须解雇(如果你有一个设计时组件会)
感谢答案, 维杰
这就是你要做的吗? OnCalcFields将不会被解雇,直到您实际将数据集放在表中的一条记录上... – 2010-06-12 09:39:38
对于较少代码感到抱歉,我编辑了我的文章。 – 2010-06-12 10:00:12
我不知道它是否相关,但对于创建具有所有者应用程序的数据集似乎很奇怪。通常这将是一种形式或数据模块。 – 2010-06-12 12:19:46