![](/img/trans.png)
[英]Delphi XE4 TGrid how do I get the value of a cell in the row I double clicked?
[英]Delphi - How do I fix this strange TGrid behaviour?
德尔福2007。
我有一个TGrid,其行数多于屏幕上适合的行数,并且网格的高度使得底部有一个部分绘制的行。 当我点击这个部分行时,它会跳起来完全可见(通过Grids.pas中名为'ClampInView'的过程)。 但它并没有停止。 由于鼠标现在位于一个新的部分绘制的行上,因此它也会跳起来。
实际效果是单击部分绘制的行开始选择垂直列中的单元格,一直旋转到底部(或直到您释放鼠标)。
我已经在一个新的winforms项目中复制了这个,只有一个网格有100行,没有代码,所以我很确定这不是我在代码中做的错误。
这对我来说很糟糕,因为我在实际代码中的表单具有拖放类型行为,因此在部分行上点击并释放~0.1秒后将拾取单元格中的项目并将其放下约50行。 这绝对不是您在单击单元格时所期望的。
有任何建议如何解决/解决这个问题?
这是我一直以来所做的,因为我认为部分可见的行很俗气。 我调整网格的大小,使其客户区域是行高的偶数倍。 您可以在设计时执行此操作,也可以通过代码轻松完成。 如果你有相当大的行,那就是踢球者。 如果是这种情况,那么只需将代码调整为行调整大小事件的事件处理程序中的网格(我相信它有一个)。
这不仅会阻止您尝试修复的行为,而且(在我看来)它也会让您的UI看起来更清晰!
您可以尝试在网格中覆盖MouseDown,如果用户在“坏”位置单击,则不要调用继承的MouseDown。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.