在DBGRID控件的MOUSEMOVE事件中,如何编写代码来判断鼠标移动到指定的列上面。例如:IF GRIDE.COL.FIELDNAME ='MYFIELD' THEN
        SHOWMESSAGE('鼠标移动到MYFIELD列上');

解决方案 »

  1.   

    再mousemove事件中获得鼠标的坐标然后再根据dbgrid的每一列的长宽,计算出现在在那一列那一行~虽然麻烦,但是好像只能这样了!
      

  2.   

    再说详细一点
    直到鼠标坐标后,比如知道y坐标为100
    然后做个循环
    从0开始到dbgrid的所有列数-1
    然后再循环中用y=y-当前列的宽
    什么时候y<=0,则当前列就是你一到的列了!为了放边看,可能要+1
      

  3.   

    DBGrid1.SelectedField.FieldName :可以实现点到那行就提示那行的fieldname
      

  4.   

    CoobiLiu(Coobi) 你说的方法,我也考虑过,但是如果列数量特别多,一个屏幕装不下,就会有滚动条,滚动条会改变,当前列的屏幕坐标,x。如何判断滚动条的滚动量呢?DBGrid1.SelectedField.FieldName :可以实现点到那行就提示那行的fieldname
    很正确,可是这不是我想要的。
      

  5.   

    procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    var
       t : TGridCoord ;
    begin
      t:=dbgrid1.MouseCoord(x,y);
      if dgIndicator in DBGrid1.Options then
               showmessage(DBGrid1.Columns[t.x - 1].FieldName)
            else
               showmessage( DBGrid1.Columns[t.x].FieldName) ;end;
      

  6.   

    DBGRID1.selectedindex      列的位置  0......n
    dbgrid.Columns(DBGRID1.selectedindex).title.caption   列的名称