【问题标题】:How to make grid refresh on horizontal scroll如何在水平滚动时刷新网格
【发布时间】:2015-10-01 21:27:24
【问题描述】:

几个小时后,我在此处或其他地方都找不到有关此问题的任何参考。 Android 和 Windows(我不知道 iOS)的多设备应用程序(因此 FMX 不是 VCL)都会出现问题。

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

问题: 水平滚动时,网格之前隐藏的部分不显示任何RowLines 或背景(ColLines 绘制良好),或从RowSelect 突出显示。 无论列限制如何,都会剪切着色和绘图。在调整窗口大小以适应网格(在 Windows 操作系统上)时,颜色和线条会很好地绘制在先前隐藏的列上。

我已经尝试过,OnDrawColumnCellOnHScrollChange 事件:

  • StringGrid.Repaint, Self.Invalidate:没有结果
  • Application.HandleMessage, Application.ProcessMessages:慢点 应用程序
  • StringGrid.Canvas.Clear(0):放慢速度,搞砸应用程序
  • Debug 和 Release 版本之间的更改:没有结果
  • Grid.Align 更改为 Client、None、Fit、Contents、Scale:无结果

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


2016 年 8 月 12 日编辑:不关心 Delphi 10.1(柏林)

【问题讨论】:

  • 您使用的是什么版本的Delphi?我对 Delphi XE7 Update 1 和 Delphi XE8 有同样的问题。
  • 我正在使用 Delphi XE7 update 1。我已经编辑了我的帖子。
  • 我已经为你添加了相应的标签:)
  • 我尝试了很多,但我遇到了同样的问题。我建议看看这里:Tms FmxGrid
  • @whosrdaddy:感谢您的标记和编辑

标签: delphi scroll grid firemonkey delphi-xe7


【解决方案1】:

好的,我找到了。终于。

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

我没有深入了解样式编辑,但看看以下内容:

  • 在表单上使用网格组件(TGridTStringGrid),右键单击网格并选择编辑默认样式编辑自定义样式打开FireMonkey 样式设计器 窗口(详见DocWiki
  • 结构视图 中转到:gridstyle > background > content > selection
  • Object Inspector 中,selectionAlign 属性默认为 None这就是为什么突出显示不会覆盖整个行!
  • 将值更改为Horizontal,您就完成了。其他值不会起作用。 (ContentsClient :整个网格被突出显示)(FitCenter :突出显示在网格的中心)

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

注意:gridstyleTLayoutbackgroundTRectanglecontentTLayoutselectionTRectangle

【讨论】:

    猜你喜欢
    • 2017-07-06
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 2019-07-10
    • 1970-01-01
    相关资源
    最近更新 更多