同列内用鼠标移动不会触发OnColEnter事件,dataset的recno也不会变动
只有在换到其他列的时候才会触发?怎么解决?

解决方案 »

  1.   

    OnColEnter当进入某一列时触发
    ColEnter/ColExit都是左右的。上下控制可以通过OnKeyDown或者OnAfterScroll
      

  2.   

    OnKeyDown的话应该怎么处理?比如不允许第3行获得焦点
      

  3.   

    只有在DBGrid中点击切换行时,数据集中的指针(或称游标)才会移动到相应的行,所以光是移动,RecNo并不会变,因为RecNo指的是指针的位置(行),指针没动RecNo也就不变。
      

  4.   

    上一回贴我说的是鼠标移动(Move)不是点击(Click)。OnColEnter与OnColExit事件都是指焦点从一列点击到别一列时触发,也即左右列移到(点击)。而同一列中上下移动是不会触发的。可以通过下面的方法实现上下移动(点击)触发:var
      Form1: TForm1;
      OldRecNo: integer;implementation{$R *.dfm}procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      if table1.RecNo <> OldRecNo then
        Button2.Caption := formatdatetime('h:m:s:zzz', now);
      OldRecNo := table1.RecNo;
    end;
      

  5.   

    只有在DBGrid中点击切换行时,数据集中的指针(或称游标)才会移动到相应的行,所以光是移动,RecNo并不会变,因为RecNo指的是指针的位置(行),指针没动RecNo也就不变。
    我鼠标移动是在同列内按下鼠标后向下拉,焦点也是随着移动变得,recno也变才对?
      

  6.   

    不可能啊。
    你加个事件看看有没有变:procedure TForm1.DBGrid1CellClick(Column: TColumn);
    begin
      Edit1.Text := IntToStr(Table1.RecNo);
    end;
      

  7.   

    没有click,只是那鼠标拖的时候经过,那条蓝线是随着鼠标移动