那就在keydown下做事件直接赋值给edit 

解决方案 »

  1.   

    写Table.AfterScroll或者DataSet.OnDataChange
      

  2.   

    你的Dbgrid肯定有一个Datasource属性,它指向一个Dataset,我们现在使用DataSet.OnDataChange事件就可以。在这个事件中写
    Edit1.Text := DBGrid1.DataSource.DataSet.FieldByName('yourfieldname').AsString;
    当然最好是判断一下这个DataChange是因为编辑还是数据移动引起的。
      

  3.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, Db, DBTables, Grids, DBGrids;type
      TForm1 = class(TForm)
        DBGrid1: TDBGrid;
        DataSource1: TDataSource;
        Table1: TTable;
        Edit1: TEdit;
        procedure DataSource1DataChange(Sender: TObject; Field: TField);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
    begin
      with TDataSource(Sender) do
      try
        Edit1.Text := DataSet.FieldByName('名称').AsString;
      except
        Edit1.Text := '';
      end;end;end.