繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM