2010-06-12 46 views
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被设置好的吧),此时的事件必须解雇(如果你有一个设计时组件会)

感谢答案, 维杰

+0

这就是你要做的吗? OnCalcFields将不会被解雇,直到您实际将数据集放在表中的一条记录上... – 2010-06-12 09:39:38

+0

对于较少代码感到抱歉,我编辑了我的文章。 – 2010-06-12 10:00:12

+0

我不知道它是否相关,但对于创建具有所有者应用程序的数据集似乎很奇怪。通常这将是一种形式或数据模块。 – 2010-06-12 12:19:46

回答

0

的代码没有计算字段。