如何在水平滚动上进行网格刷新

时间:2015-07-13 14:39:15

标签: delphi scroll grid firemonkey delphi-xe7

几小时后,我无法在这里或其他地方找到任何关于此问题的参考。 问题表明多设备应用程序(因此FMX不是VCL),Android和Windows都有(我不知道iOS)。

设置: 在表单上放置一个网格(TGridTStringGrid)。 通过添加列使网格大于表单,确保需要水平滚动。 在网格选项中,选择绘制ColLinesRowLinesAlternatingRowBackgroundRowSelect也可以为True,以便一次突出显示整行。

问题:水平滚动时,网格中先前隐藏的部分未显示任何RowLines或背景(ColLines已精心绘制),或从{ {1}}。 无论色谱柱限制如何,都会切割着色和绘图。调整窗口大小以适应网格(在Windows操作系统上)时,在先前隐藏的列上绘制颜色和线条。

我已尝试过RowSelectOnDrawColumnCell事件:

  • OnHScrollChange:没有结果
  • StringGrid.Repaint, Self.Invalidate:放慢速度 应用
  • Application.HandleMessage, Application.ProcessMessages:放慢速度并弄乱应用
  • 在Debug和Release版本之间进行更改:无结果
  • StringGrid.Canvas.Clear(0)更改为客户,无,适合,内容,比例:无结果

请问,有人知道在水平滚动时按预期方式显示网格的方法吗?

编辑2016年8月12日:德尔福10.1(柏林)无关紧要

1 个答案:

答案 0 :(得分:1)

好的,我找到了。最后。

为了突出显示在选择它时整个行(甚至隐藏部分),必须使用样式

我没有深入进行风格编辑,但这里有什么要看:

  • 使用表单上的网格组件(TGridTStringGrid),右键单击网格并选择编辑默认样式编辑自定义样式打开 FireMonkey样式设计器窗口(有关详细信息,请参阅DocWiki
  • 结构视图中,转到:gridstyle > background > content > selection
  • 对象检查器中,Align的{​​{1}}属性默认为selection这就是为什么突出显示不会传播到整个排!
  • 将值更改为None,您就完成了。其他值不会起作用。 (HorizontalContents:突出显示整个网格)(​​ClientFit:突出显示以网格为中心)

令人惊讶的是,在Delphi 10.1中,默认配置是相同的,但如果需要,选择正确地分布在整个行上......

注意:Centergridstyle; TLayoutbackground; TRectanglecontent; TLayoutselection