比如现在记录位置在第一条,如果我用鼠标单击第三条记录,则发生这个事件,如果仅单击第一条记录的不同列,则不发生这样的事件。
谢谢!
我用的是ADODATASET 和DBGRID主件。

解决方案 »

  1.   

    你试试,检测
      DBGrid1.DataSource.DataSet.RecNo;
    的变化,应该可以啊!
      

  2.   

    DBGRID中记录移动觸發數據集的BeforeScroll,AfterScroll事件。
      

  3.   

    楼主,你试试我这个办法?
    ==========================
    procedure TForm1.DBGrid1CellClick(Column: TColumn);
    begin
      if Edit1.Text<>IntToStr(
        DBGrid1.DataSource.DataSet.RecNo) then
      Edit1.Text:=IntToStr(
        DBGrid1.DataSource.DataSet.RecNo);end;
      

  4.   

    运行时,你就会看到:
      Edit1的内容就是DBGrid当前的记录号啊!
      

  5.   

    http://expert.csdn.net/Expert/topic/2692/2692457.xml?temp=.6055414
    你刚才不是结帖了??
      

  6.   

    DBGrid1.DataSource.DataSet.AfterScroll
      

  7.   

    在改为这样就完美了!
    =====================
    procedure TForm1.DBGrid1CellClick(Column: TColumn);
    begin
      if Edit1.Text<>IntToStr(
        DBGrid1.DataSource.DataSet.RecNo) then
      Edit1.Text:=IntToStr(
        DBGrid1.DataSource.DataSet.RecNo);end;procedure TForm1.DBGrid1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      if Edit1.Text<>IntToStr(
        DBGrid1.DataSource.DataSet.RecNo) then
      Edit1.Text:=IntToStr(
        DBGrid1.DataSource.DataSet.RecNo);
    end;
      

  8.   

    我上面说的是其他的办法。当然,这个是最好的:
    ===========================
    procedure TForm1.Table1AfterScroll(DataSet: TDataSet);