谢谢

解决方案 »

  1.   

    在ADOQuery的BeforeEdit事件中写:
    if ADOQuery1.FieldByName('PrimaryKey').AsString = 'YourValue' then
    abort;
      

  2.   

    在BeforePost中写。
    if Query1.FieldBYName('字段名').AsString='指定行的数据的值' then
    begin
       Query1.FieldByname('字段1').AsValue:=Query1.FieldByname('字段1').OldValue;
       Query1.FieldByname('字段2').AsValue:=Query1.FieldByname('字段2').OldValue;
       ........
    end;
      

  3.   

    不好意思写错了。这样
    在BeforePost中写。
    if Query1.FieldBYName('字段名').AsString='指定行的数据的值' then
    begin
       Query1.FieldByname('字段1').value:=Query1.FieldByname('字段1').OldValue;
       Query1.FieldByname('字段2').value:=Query1.FieldByname('字段2').OldValue;
       ........
    end;
      

  4.   

    当DBGrid中到了满足你的要求的时候,你将整个DBGrid多设定为ReadOnly,如果离开这条记录的时候你将ReadOnly去掉,代码可以在TDataset的AfterScrool中去写
      

  5.   

    if query.fieldbyname('field1').asvalue=yourvalue then
    dbgrid.readonly:=true
    else dbgrid.readonly:=false;
      

  6.   

    在数据集的afterscroll事件中加入语句:
    dbgrid1.readonly := not 你的条件