只读很容易:DBGrid1.Columns[0].ReadOnly := True;
光标定位,我也没搞清楚,抱歉。

解决方案 »

  1.   

    一般我都用TMS的AdvanceStringGrid功能强大
    在advGrid你可以在它的
    procedure CanEditCell(Sender: TObject; ARow, ACol: Integer;
      var CanEdit: Boolean);
    里面写入相关判断就行了
    CanEdit := not(advcanceStringgrid.RowCount-1)
      

  2.   

    procedure TForm2.FormShow(Sender: TObject);
    begin  DBGridEh1.Col := DBGridEh1.Columns.Count;
      DBGridEh1.SetFocus;//千万别放在FormCreate中
      DBGridEh1.EditorMode := True;
    end;DBGridEh1.Columns[0].ReadOnly := True;
    DBGridEh1.Columns[0].Color := clInfoBk;
      

  3.   

    DBGrid1.SetFocus;
    DBGrid1.SelectedIndex:=4;   //光标停在第5列中其它的列,可以在设计阶段就让它们是只读的。
    或者写代码也可以
    DBGridEh1.Columns[0].ReadOnly := True;
    DBGridEh1.Columns[1].ReadOnly := True;
    DBGridEh1.Columns[2].ReadOnly := True;
    。。
    。。