gpt4 book ai didi

delphi - 如何根据XE4中的值更改FMX.TGrid行的背景颜色

转载 作者:行者123 更新时间:2023-12-01 19:58:57 29 4
gpt4 key购买 nike

我想知道如何更改 Firemonkey TGrid/TColumn 中整行的背景颜色。看到很多类似的问题,但没有一个对我有帮助。我使用的是德尔福XE4。 TGrid 可能包含 TCheckColumnTStringColumn

最佳答案

TGrid行背景样式颜色分为两类:

  • 焦点颜色
  • 选择颜色

焦点颜色适用于聚焦的单元格。选择颜色应用于所选行。

更改焦点颜色是一个简单的过程:

procedure ChangeGridCellFocusColor(Grid: FMX.Grid.TGrid; NewColor: TAlphaColor);
var
T: TFmxObject;
begin
T := Grid.FindStyleResource('focus');
if (T <> nil) and (T is TRectangle) then
if TRectangle(T).Fill <> nil then
TRectangle(T).Fill.Color := NewColor;
Grid.Repaint;
end;

你像这样应用它:

ChangeGridCellFocusColor(MyGrid1, TAlphaColors.Red);

请注意,焦点矩形是半透明的,因此无论您分配什么颜色,它都会与行选择颜色混合。

<小时/>

可以合理地假设可以以相同的方式更改选择颜色,但事实并非如此。

应用样式后,标记为选择的资源将被克隆,原始值将被丢弃,新值将添加到内部 TControlList 中。 。这就是为什么不能应用相同的原理。

要更改行选择颜色,请执行以下操作:

Interface

type
TcustomGridHelper = class helper for FMX.Grid.TCustomGrid
public
function getSelections: TControlList;
end;

{...}

Implementation

function TcustomGridHelper.getSelections: TControlList;
begin
Result := Self.fSelections;
end;


procedure ChangeGridRowSelectionColor(Grid: FMX.Grid.TGrid;
NewColor: TAlphaColor);
var
aList: TControlList;
Control: TControl;
begin
aList := Grid.getSelections;
if (aList <> nil) then
for Control in aList do
TRectangle(Control).Fill.Color := NewColor;
Grid.Repaint;
end;

你像这样应用它:

ChangeGridRowSelectionColor(MyGrid1, TalphaColors.Green);

关于delphi - 如何根据XE4中的值更改FMX.TGrid行的背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22095414/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com