procedure TForm1.DBGrid1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
     edit1.Text:=dbgrid1.DataSource.DataSet.Fields[i].AsString
end;

解决方案 »

  1.   

    呵呵,谢谢你,不过这样的话,只能响应在上面字段的单击啊,单击表格或者左边代表记录的方块都没有用。
    我刚才试验了一下响应DBGrid1CellClick,发现这个效果更好一点,不过也只能响应单击表格。
      

  2.   

    而且还有一个问题,这两种方法都不是针对改变当前记录的响应,我的意思是改变当前记录的话,不一定保证触发这两个响应。这就会给后面修改记录再Post到数据库中带来问题。
      

  3.   

    在于dbgrid相连的记录集中写afterscroll事件
      

  4.   

    不用DBEdit是因为不够灵活,很多人都不推荐用DBEdit
      

  5.   

    TDBEdit相当于是在TEdit与DataSet之间加入了一个DataLink,并且在上面增加了水平对齐方式,和一些其他的属性,其唯一(可能)的缺点是在DataSet在非激活状态下,不能进行编辑。不过你可以拿其源代码进行改造,这样比用Tedit好用多了
      

  6.   

    我觉得TDBEdit最大的缺点是在TDBEdit中修改了字段值之后,如果转移到别的记录的话,不经过确认就把记录post到表中了,如果这个可以克服的话,当然是用TDBEdit方便了
    不过怎么克服呢?
      

  7.   

    你可以在BeforePost里面写入相应的控制代码来处理未经确认的Post操作。
      

  8.   

    procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
    begin
         edit1.text:=table1.fieldbyname('name').asstring;
    end;
      

  9.   

    edit1.Text:=DBGrid1.Fields[1].Value这样行吗!