2,507
社区成员




//然后 ClientDataSet1slChange 事件里统计数量和
//要增加开关,否则会死循环,并报错
var
bLock:Boolean = false;
procedure TFormScmbAdd.ClientDataSet1slChange(Sender: TField);
var
a:double;
begin
a:=0;
if ClientDataSet1.IsEmpty then Exit;
if (ClientDataSet1.FieldByName('sl').isnull) or (ClientDataSet1.FieldByName('sl').asString='') then exit;
if bLock then exit;//判断锁状态
bLock := true;//加锁
//记录的滚动,也会触发Change事件,所以你下面的这句话,会造成死循环
ClientDataSet1.First;//去掉这句就没有错误,但去掉后就统计不出来
while not ClientDataSet1.Eof do
begin
a:=a+strtoint(ClientDataSet1.FieldByName('sl').AsString);
ClientDataSet1.Next;
end;
bLock := false;//解锁
Label5.Caption:=floattostr(a);
end;