一个DBGrid,对应一个ADOQuery,当ADOQuery.Open以后,DBGird中显示数据,它总是要选中第一行。
我现在想让它一行不选中,或者清除第一行的选中状态,有办法吗???
DBGrid有一个SelectedRow属性,但是是只读的,不能设置.还有一个问题,当DBGrid中的选中的行发生改变,我想根据改变这个改变,弹出一个显示该行详细信息的对话框.
我想到在DBGrid的Click事件中处理,但是当移动上下箭头,或者其他情况也会改变啊,
怕有漏掉的情况.
而改成处理一个...DataSourceChange什么事件时.碰到帖子开头说的那种情况,我只是重新Open了一遍ADOQuery,对话框就自作多情的弹出来了,怎么办啊??谢谢!解决后立即揭帖.

解决方案 »

  1.   

    1.可以在open后把焦点放在别的控件上;
    2.重新open,datasource已经改变,肯定要弹出对话框。
      

  2.   

    1.主要DBGrid 获得焦点肯定就显示选中的状态,我不知道你要做什么。2.你应该在 DBGrid 相关联的ADOQuery1的AfterScorll 时间里面写代码,但是这个事件在ADOQuery Open的时候也要触发,你可以弄一个标志来处理这个问题。
      

  3.   

    转移焦点 如:selectnextcontrol等
      

  4.   

    第一:只要DBGRID有数据,那么他肯定有一条是被选中的,不可能一条都不选中。如果要变成选中另一条,你MOVE一下就OK了。
    第二:很简单,你在表的BEFOROPEN的里面把表的ONDataSourceChange什么事件时置成NULL,然后在表的AFTEROPEN中再置成你写的哪个...DataSourceChange什么事件就OK了
      

  5.   

    dbgrid.datasource.dataset.selected=false;
    好像是这样
    如果需要批量出力,就做一个循环
      

  6.   

    如果再把ADOQuery/dbgrid的事件再搞清楚一点,楼主现在的做法肯定会变的