用户注销时报Edatabaseerror错(50分)

  • 主题发起人 主题发起人 babyrun
  • 开始时间 开始时间
B

babyrun

Unregistered / Unconfirmed
GUEST, unregistred user!
用户注销时报Edatabaseerror错,经单步跟踪调试,发现程序运行时不断刷新dbgrid的背景显示,当注销用户时此处便会报“Edatabaseerror错”,大家帮忙看看如何解决?

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin

if Query1.FieldByName('Red').AsString = 'A' then //注销用户时,运行到这里就报错
DbGrid1.Canvas.Brush.color:=clRed;
......
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);

end;
 
错误原因:Query1要么处于非活动状态,要么被释放了
 
if Query1.Active then
begin
if Query1.FieldByName('Red').AsString = 'A' then
DbGrid1.Canvas.Brush.color:=clRed;
......
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
你试一下吧
 
试过了,还是不好用[:(!]
 
if not 窗体.showing then exit;
if not Query1.Active then exit;

if Query1.FieldByName('Red').AsString = 'A' then
DbGrid1.Canvas.Brush.color:=clRed;
......
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
 
不行啊!还是不好用。富翁们难道都没有遇到过类似问题?
 
Query1是否存在
检查一下是否为nil
 
在窗体的OnClose(或者是OnDestroy)里面写这样一句:
DBGrid1.OnDrawColumnCell := nil;
就OK了
 
问题依旧,难道真的没有解决的办法?
 
后退
顶部