DBGrid1DrawDataCell这个事件的问题

解决方案 »

  1.   

    在DBGrid1DrawDataCell事件中你又重新融发了DBGrid1DrawDataCell事件,而你的Table1.FieldByName('area').AsInteger 值却没变,所以产生了死循环。建议你在事件外用一个变量取得该字段的值来做条件。用完后将该变量置为一个非零值。
      

  2.   

    procedure TForm1.Table1AfterPost(DataSet: TDataSet);
    begin
     if DateSet.FieldByName('area').AsInteger = 0 then
       showmessage('error');
    end;
      

  3.   

    设置一个Flag变量
    弹出后将Flag标志位重新致空
      

  4.   

     if Table1.FieldByName(dbgrid1.SelectedField.DisplayName).Asstring = '0'then
          begin
          showmessage('error');//就是这里
           showmessage(dbgrid1.SelectedField.DisplayName );
         //DBGrid1.DefaultDrawDataCell(Rect;dbgrid1.SelectedField.DisplayName , State);
           end;
    你看一看这个行不行
      

  5.   

    对了,刚刚那个是在procedure TForm1.DBGrid1DblClick(Sender: TObject);
    这个事件里发生的:)
    你试一下,保证会好的,而且可以对任以一个字段的值进行检查;
      

  6.   

    建议你不要用“  showmessage('error');”出现红色字体就是给别人一个提示了!
    否则在procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
    这个事件中很难做到你的要求。