DELPHI中如何定义DBGRID里网格的坐标(20分)

  • 主题发起人 主题发起人 Jack1
  • 开始时间 开始时间
J

Jack1

Unregistered / Unconfirmed
GUEST, unregistred user!
在使用DELPHI时,我使用了DBGRID,我需要知道鼠标点中的是哪一个单元,如何定位?
 
它是从Tcustomgrid继承下来的,
而Tcustomgrid有col与row属性,就是确定选中的cell的行与列的。

你可用Tcustomgrid(dbgrid).col与Tcustomgrid(dbgrid).row来获得定位。
 
用StringGrid或DrawGrid可以用MouseToCell方法得到。
用DBGRid只好在单击事件中通过坐标自己计算了。
 
对不起,二位大虾,我试了,可是不行,请再指教!
 
先得到需要处理的格子的ROW,COL,然后
TDrawGrid(dbgrid).CellRect(ROW,COL);

该函数返回该格子的RECT
 
不行?
参见下面的程序:
在OnMouseMove事件中
var Col,Row:Integer

DrawGrid1.MouseToCell(X,Y,Col,Row);
//StringGrid1.MouseToCell(X,Y,Col,Row);
Label1.Caption:=IntToStr(Col);
Label2.Caption:=IntToStr(Row);
当鼠标在DrawGrid中移动时在Label1和Label2上可以动态显示出当前光标
所处的单元。
刚在Delphi中运行通过可不要再说不行了噢
 
Fencer的方法是可以的。
 
FENCER的办法的确可行,但我使用的是DBGRID,因为我使用Stinggrid填充数据十分缓慢,使用DBGRID填充数据速度比较快,所以我想知道如何取得DBGRID的网格单元的ROW和COL,当然,能知道坐标更好!我真该把分数提高的。谢谢大家!
 
DBGrid不太好办,要坐标干什么用?能不能用别的方法绕过去。
 
噢,sorry,
忘了写清楚了,
由于col与row是protected
不能直接使用,
不过可以利用drawgrid或stringgrid来使用它。
如:
Tdrawgrid(dbgrid).col;
Tdrawgrid(dbgrid).row;
最好只是读它们,不要修改,
要修改也可以,不过对row的修改会引起混乱。
这个问题的讨论在www.csdn.net的论坛上讨论过,

好象cAkk解决的以前的问题中也提到过。
 
多谢各位,由于事先估计不足,只有20分,所以只好将就一下了,再次感谢各位。我
使用DBGRID的原因是在数据量大的时候,显示数据很快。而使用STIINGGRID或其他
的网格控制上方便些,但填充数据比较慢。
以后多联系。
 
后退
顶部