如何实现DBGrid中某行某列只读,即只是这个单元格只读,该列其他单元格不受影响.

解决方案 »

  1.   

    是不是可以在dbgrid的oncellclick事件中做一下判断是不是只读的行,是的话就把dbgrid的read only属性设置成true  其他的就设置成false
      

  2.   

    在onclick事件中判断选定的单元格坐标是不是要求只读的单元格,如果是,readonly:=true,else false。
      

  3.   

    动态指定
    if dbgird.columns[列数(integer)].readonly := false then
    dbgird.columns[列数(integer)].readonly := true;
      

  4.   

    更正:
    if...... then 中间的冒号去掉
      

  5.   

    我的要求如下:
    GRID是下面的结构序号  费用   审核  成本
    1     3000    是   360
    2     2000    否   400
    ....
    10     300    是   500如果审核为“是”,则该行对应的“费用”这个单元格只读,其他不影响。上面的表格中要求
    columns[1,2]和columns[10,2]这两个单元格只读,其余单元格不影响。
      

  6.   

    不让修改某行(客户信誉度=极差时不让其修改):
    procedure TCustmanaFrm.dbgridColEnter(Sender: TObject);
    begin
      if Vartostr(Qry_Dbgrid['Cust_Grade'])='极差' then
       {only remove dgediting from the (dbgrid)options  }
       dbgCustmanaBrowse.Options:=[dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgRowSelect,dgConfirmDelete,dgCancelOnExit]
      else
        dbgCustmanaBrowse.Options:=[dgediting,dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgRowSelect,dgConfirmDelete,dgCancelOnExit];
        {only add dgediting to the options  }
    end;
    某列也可以按照类似方法
      

  7.   

    DBGrid1.Columns[i].ReadOnly:=True;