dbgrid中移动焦点到指定的行和

dbgrid是从TCustomGrid继承下来的,它有col与row属性,只不过是protected的,不能直接访问,要处理一下,可以这样:

    TDrawGrid(dbgrid1).row:=row;
    TDrawGrid(dbgrid1).col:=col;
    dbgrid1.setfocus;
就可以看到效果了。

    1 这个方法是绝对有问题的,它会引起DBGrid内部的混乱,因为DBGrid无法定位当前纪录,如果DBGrid只读也就罢了(只读还是会出向一些问题,比如原本只能单选的纪录现在可以出现多选等等,你可以自己去试试),如果DBGrid可编辑那问题就可大了,因为当前纪录的关系,你更改的数据字段很可能不是你想象中的
    2 我常用的解决办法是将上程序改为(随便设置col是安全的,没有一点问题)

    Query1.first;
    TDrawGrid(dbgrid1).col:=1;
    dbgrid1.setfocus;

    这就让焦点移到第一行第一列当

原文地址:https://www.cnblogs.com/jijm123/p/11259973.html