德尔福2007。
我有一个 TGrid,其行数超出了屏幕所能容纳的行数,并且网格的高度使得底部有一个部分绘制的行。 当我单击这部分行时,它会跳起来完全可见(通过 Grids.pas 中名为“ClampInView”的过程)。但它并没有停止。由于鼠标现在位于新的部分绘制的行上方,因此该行也会向上跳跃。
最终效果是,单击部分绘制的行开始选择垂直列中的单元格,一直旋转到底部(或直到释放鼠标)。
我已经在一个新的 winforms 项目上复制了这个,只有一个 100 行的网格,没有代码,所以我很确定这不是我在代码中做的错误。
这对我来说很糟糕,因为我在实际代码中的表单具有拖放类型行为,因此在部分行上单击并释放约 0.1 秒后将拾取单元格中的项目并将其放在下方约 50 行处。当您单击单元格时,这绝对不是您期望发生的情况。
有什么建议如何解决/解决这个问题吗?
最佳答案
这就是我一直在做的事情,因为我认为部分可见的行很俗气。我调整网格的大小,使其客户区是行高的偶数倍。您可以在设计时执行此操作,也可以通过代码轻松执行此操作。如果你有可调整大小的行,那就更棒了。如果是这种情况,那么只需将用于调整网格大小的代码放入行调整大小事件的事件处理程序中(我相信它有一个)。
这不仅可以防止您尝试修复的行为,而且(在我看来)还可以使您的 UI 看起来更加干净!
关于Delphi - 如何修复这种奇怪的 TGrid 行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/759823/