OnDrawDataCell事件:
  if (...) then
    grid->Options << dgEditing;
  else
    grid->Options >> dgEditing;

解决方案 »

  1.   

    这是BCB的你可以自己转成DELPHI
      

  2.   

    更加你的条件在AfterScroll事件中,控制Dbgrid包含字段的ReadOnly属性
    用一个循环即可完成。
      

  3.   

    你可以在DataSet的AfterScroll事件中控制,比如以下代码只允许用户编辑新行procedure TForm1.Table1AfterScroll(DataSet: TDataSet);
    var
      Index : Integer;
    begin
      with Table1.Fields do
      for Index := 0 to count - 1 do
        Fields[Index].ReadOnly := (DataSet.State <> dsInsert);
    end;