我想在鼠标移动时取得鼠标所在方格的内容,请问该怎么写?

解决方案 »

  1.   

    procedure TForm1.DBGrid1CellClick(Column: TColumn);
    begin
      showmessage(adodataset1.FieldValues[column.FieldName]);
    end;
      

  2.   

    楼主的意思应该是用hint的形式去得到DBGrid方格的内容吧
    若是如此,写一个application.onhint事件,在其中加入
    adodataset1.FieldValues[column.FieldName]即可
      

  3.   

    我也想知道鼠标在DBGRID上移动(不点击DBGRID的情况下),获取鼠标所在位置的记录内容。
      

  4.   

    假设你在表单中加入一个DBGrid及一个Button,点按Button时将获取该单元的值。.
    i:integer;   //控制当前行
    j:integer;   //控制当前列
    ts:string;   //用于获取第一列的字段名,因第一字段名在用户使用过程中
                 //可能会改变,不能固定其值
    RowNum,ColNum:integer; //你要获取CELL的行、列值,如4行3列
    .
    .procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
      Field: TField; State: TGridDrawState);
      begin
    {
      检查是否正在绘制第1列中的内容(看是不是ts指定的字段名
      即可,若是,则将行号i加1,同时列号j清零,否则表示未改
      变行号,故将列号加1
    }
       if field.fieldname=ts then
       begin
        inc(i);
        j:=0;
       end  else inc(j);
    //若行、列号与指定的行、列号相符,注意,实际列号应该减1
    //则获取该单元的数据,并显示在Label1中
       if (i = RowNum) and (j=ColNum-1) then
           label1.caption:=field.asstring;
      end;procedure TForm1.Button1Click(Sender: TObject);
    begin
    i:=0;  //初始化行变量
    j:=0;  //初始化列变量
    RowNum:=4;  //你指定的行,若愿意,可变为某编辑框的值,以进行动态查询
    ColNum:=3;  //你指定的列,若愿意,可变为某编辑框的值,以进行动态查询
    ts:=dbgrid1.columns[0].fieldname; //获得第一列的列字段名,
                                      //有时你也可使用其标题名
    dbgrid1.refresh; //强迫其重新绘制以得到指定单元数据
    end;供参考
      

  5.   

    我所要的就是以hint的形式得到方格中的内容!
    cobi(我是小新)的建义不错,在onshowhint中实现!
    可是column没有定义呀,鼠标是移动的呀!怎么得到??
      

  6.   

    大不了,麻烦一点,计算当前鼠标位置,算出位于那个cell的的区域,然后读出数据。
      

  7.   

    可是谁知道:把这个cell的值赋到一个Edit后,修改后怎样写回去呢?