情况是这样的.我建立了一个dbgrid,设为只读属性,通过单元格后面的edit按钮去操作一个inputquery.确定后修改对应单元格数据,
原本我以为这样可以直接修改,因为我通过DBGrid1.DataSource.DataSet.Fields[sDBGrid1.SelectedIndex].Value确定值的.
但是post时候他会从第一个单元格开始,一直到当前单元格都修改,所以我想肯定是我没有指定当前指针了吧,那么问题来了,难不成我每次修改的时候我都要first,next去判断是否当前单元格,这样效率肯定很低的,我不知道各位是怎么做到的,能否给个参考?
这是我的问题的代码,没有指定当前指针位置.
procedure TFrm_User.sDBGrid1EditButtonClick(Sender: TObject);
var
s: string
begin
try
     with sDBGrid1.DataSource.DataSet do
     begin
        Open;
         Edit;
         if InputQuery('编辑>>', '请输入 :', s) then
          sEdit3.Text := s;
         Fields[sDBGrid1.SelectedIndex].Value:=s;
         sDBGrid1.DataSource.DataSet.Post;
         Close;
      end;
    Except
       ShowMessage(inttostr(GetLastError));
    end;
  end;
感激不尽!我目前不想没修改一次都要去一行一行的判断.能否有更高效率的办法?该怎么修改,还请各位指教,

解决方案 »

  1.   

    没看懂。
    是点DBGrid中某个单元格,然后在Edit中显示此单元格的值,然后修改这个值,再点“保存”按钮保存??
    还是点DBGrid中某个单元格,然后在Edit输入一个值,再点“保存”按钮保存这个值到DBGrid中当前行的某一个字段中??另外,你代码中有一句“Open;”,怎么点修改按钮时才打开DataSet啊,通常都是先打开DataSet,然后再输入值,再点保存按钮啊。
    如果之前没有打开DataSet,在点修改按钮时打开,那就会自动跳到第一条记录。这里输入了值,再点保存按钮,就不知道是在修改哪条记录的值了。
      

  2.   

    不是,你细心看会发现事件是DBGrid1EditButtonClick.所以我是用编辑按钮打开一个InputQuery.然后确定后去修改对应单元格的值
      

  3.   

    dbgrid的属性中有一个option>dgEditing,