Delphi - 如何修复这种奇怪的 TGrid 行为?

标签 delphi drag-and-drop vcl delphi-2007

德尔福2007。

我有一个 TGrid,其行数超出了屏幕所能容纳的行数,并且网格的高度使得底部有一个部分绘制的行。 当我单击这部分行时,它会跳起来完全可见(通过 Grids.pas 中名为“ClampInView”的过程)。但它并没有停止。由于鼠标现在位于新的部分绘制的行上方,因此该行也会向上跳跃。

最终效果是,单击部分绘制的行开始选择垂直列中的单元格,一直旋转到底部(或直到释放鼠标)。

我已经在一个新的 winforms 项目上复制了这个,只有一个 100 行的网格,没有代码,所以我很确定这不是我在代码中做的错误。

这对我来说很糟糕,因为我在实际代码中的表单具有拖放类型行为,因此在部分行上单击并释放约 0.1 秒后将拾取单元格中的项目并将其放在下方约 50 行处。当您单击单元格时,这绝对不是您期望发生的情况。

有什么建议如何解决/解决这个问题吗?

最佳答案

这就是我一直在做的事情,因为我认为部分可见的行很俗气。我调整网格的大小,使其客户区是行高的偶数倍。您可以在设计时执行此操作,也可以通过代码轻松执行此操作。如果你有可调整大小的行,那就更棒了。如果是这种情况,那么只需将用于调整网格大小的代码放入行调整大小事件的事件处理程序中(我相信它有一个)。

这不仅可以防止您尝试修复的行为,而且(在我看来)还可以使您的 UI 看起来更加干净!

关于Delphi - 如何修复这种奇怪的 TGrid 行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/759823/

相关文章:

delphi - 如何使用查找来编辑数据库中的数据?

c# - C# 中的拖放排序 - 最佳算法

Android可访问的拖放

delphi - 如何处理临时文件?

delphi - 迁移后 Imagelist 出现问题

Windows 7 默认输入语言和 Delphi 2010

iphone - 将图像数组添加到 ScrollView Objective-C

delphi - 向 TBitmap 添加阴影

delphi - Delphi 中启用运行时主题的自定义背景颜色

delphi - 使 2 个表格能够相互重叠?