请问如何在运行态创建计算字段?(100分)

  • 主题发起人 主题发起人 xk
  • 开始时间 开始时间
有谁来帮帮忙?
 
能说的再细一些吗,创建什么样的字段?
 
TField类型,自己Create
 
在设计阶段,New一个普通型字段,
程序运行时根据条件,Close Dataset,把字段的Calculated设为True,Open DataSet,
这样不行吗?
 
sorry 我试了一下,好象 CREATE 不出来:((
自在己ONCACULATEFIELD中写代码,把计算结果写到某变量,然后用吧
 
试了一下, OK了.
procedure TForm1.Button1Click(Sender: TObject);
Var HHH : TStringField ;
begin
HHH:=TStringField.Create(Query1);
HHH.FieldName := 'Test1' ;
HHH.Size := 2 ;
HHH.Calculated := true ;
HHH.dataset := Query1 ;
QUery1.open ;
end;

procedure TForm1.Query1CalcFields(DataSet: TDataSet);
begin
with Dataset do begin
If fieldbyname('Weight').asinteger > 10 then
FieldByName('Test1').asstring := '重'
else
FieldByName('Test1').asstring := '轻';
end ;
end;
 
这个问题可以结束了。
 
XK : 快点结束这个问题吧, 我给我加不上分. 其他人都没有做出来. :((
 
将所需要的表的字段添加到Table控件永久字段中,写如下程式
procedure TForm1.Button1Click(Sender: TObject);
var
tt:TIntegerField;
begin
tt:=TIntegerField.Create(self);
tt.FieldName := 'Test1' ;
tt.FieldKind:=fkCalculated;
tt.DataSet:=table1;
table1.active:=true;
end;


procedure TForm1.Table1CalcFields(DataSet: TDataSet);
begin
table1.fieldbyname('test1').asinteger:=random(555);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
randomize;
end;
 
将所需要的表的字段添加到Table控件永久字段中,写如下程式
procedure TForm1.Button1Click(Sender: TObject);
var
tt:TIntegerField;
begin
tt:=TIntegerField.Create(self);
tt.FieldName := 'Test1' ;
tt.FieldKind:=fkCalculated;
tt.DataSet:=table1;
table1.active:=true;
end;


procedure TForm1.Table1CalcFields(DataSet: TDataSet);
begin
table1.fieldbyname('test1').asinteger:=random(555);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
table1.close;
randomize;
end;

 
抱歉,我这就加分,还望大家以后多多指教!
 
多人接受答案了。
 
后退
顶部