如何在水平滚动时刷新网格
How to make grid refresh on horizontal scroll
几小时后,我无法在此处或其他地方找到有关此问题的任何参考资料。
Android 和 Windows 的多设备应用程序(因此 FMX 而不是 VCL)都出现了问题(我不知道 iOS)。
设置:
在表单上放置网格(TGrid
或 TStringGrid
)。
通过添加列使网格大于表单,确保需要水平滚动。
在网格选项中,选择绘制 ColLines
、RowLines
和 AlternatingRowBackground
。
RowSelect
也可以为 True,一次突出显示整行。
问题:水平滚动时,之前隐藏的部分grid不显示任何RowLines
或背景(ColLines
画得很好) ,或突出显示 RowSelect
。
无论列限制如何,都会剪切着色和绘图。当调整 window 以适应网格时(在 Windows OS 上),颜色和线条在先前隐藏的列上绘制得很好。
我已经尝试过 OnDrawColumnCell
和 OnHScrollChange
事件:
StringGrid.Repaint, Self.Invalidate
: 没有结果
Application.HandleMessage, Application.ProcessMessages
: 减速
应用
StringGrid.Canvas.Clear(0)
: 放慢速度并弄乱应用程序
- 调试版本和发布版本之间的变化:无结果
- 将
Grid.Align
更改为客户端,None、适合、内容、比例:无结果
拜托,有谁知道如何在水平滚动时按预期显示网格?
2016 年 8 月 12 日编辑:Delphi 10.1(柏林)不关心
好的,我找到了。终于。
为了在选择时突出显示整个行(甚至是隐藏部分),必须使用 Styles.
我没有深入了解样式编辑,但这里是要看的内容:
- 在表单上使用网格组件 (
TGrid
、TStringGrid
),右键单击网格并选择 编辑默认样式 或 编辑自定义样式打开FireMonkey Style Designerwindow(详见DocWiki)
- 在结构视图中转到:
gridstyle > background > content > selection
- 在 Object Inspector 中,
selection
的 Align
属性 默认为 None
:这就是为什么突出显示不会分布在整行的原因!
- 将值更改为
Horizontal
,您就完成了。其他值将无法解决问题。 (Contents
, Client
: 整个网格高亮显示) (Fit
, Center
: 高亮显示在网格中心)
令人惊讶的是,在 Delphi 10.1 中,默认配置是相同的,但如果需要,选择会正确地分布在整行中...
注意:gridstyle
是 TLayout
; background
是 TRectangle
; content
是 TLayout
; selection
是 TRectangle
几小时后,我无法在此处或其他地方找到有关此问题的任何参考资料。 Android 和 Windows 的多设备应用程序(因此 FMX 而不是 VCL)都出现了问题(我不知道 iOS)。
设置:
在表单上放置网格(TGrid
或 TStringGrid
)。
通过添加列使网格大于表单,确保需要水平滚动。
在网格选项中,选择绘制 ColLines
、RowLines
和 AlternatingRowBackground
。
RowSelect
也可以为 True,一次突出显示整行。
问题:水平滚动时,之前隐藏的部分grid不显示任何RowLines
或背景(ColLines
画得很好) ,或突出显示 RowSelect
。
无论列限制如何,都会剪切着色和绘图。当调整 window 以适应网格时(在 Windows OS 上),颜色和线条在先前隐藏的列上绘制得很好。
我已经尝试过 OnDrawColumnCell
和 OnHScrollChange
事件:
StringGrid.Repaint, Self.Invalidate
: 没有结果Application.HandleMessage, Application.ProcessMessages
: 减速 应用StringGrid.Canvas.Clear(0)
: 放慢速度并弄乱应用程序- 调试版本和发布版本之间的变化:无结果
- 将
Grid.Align
更改为客户端,None、适合、内容、比例:无结果
拜托,有谁知道如何在水平滚动时按预期显示网格?
2016 年 8 月 12 日编辑:Delphi 10.1(柏林)不关心
好的,我找到了。终于。
为了在选择时突出显示整个行(甚至是隐藏部分),必须使用 Styles.
我没有深入了解样式编辑,但这里是要看的内容:
- 在表单上使用网格组件 (
TGrid
、TStringGrid
),右键单击网格并选择 编辑默认样式 或 编辑自定义样式打开FireMonkey Style Designerwindow(详见DocWiki) - 在结构视图中转到:
gridstyle > background > content > selection
- 在 Object Inspector 中,
selection
的Align
属性 默认为None
:这就是为什么突出显示不会分布在整行的原因! - 将值更改为
Horizontal
,您就完成了。其他值将无法解决问题。 (Contents
,Client
: 整个网格高亮显示) (Fit
,Center
: 高亮显示在网格中心)
令人惊讶的是,在 Delphi 10.1 中,默认配置是相同的,但如果需要,选择会正确地分布在整行中...
注意:gridstyle
是 TLayout
; background
是 TRectangle
; content
是 TLayout
; selection
是 TRectangle