gpt4 book ai didi

delphi - 为什么我的 TListBox 项目没有改变颜色?

转载 作者:行者123 更新时间:2023-12-01 23:55:53 26 4
gpt4 key购买 nike

这就是我从本地服务器上的列表中获取一些项目的方法。

我认为它仍然需要一些重构(抱歉,我是 Delphi 的初学者),但是我想更好地理解为什么 ListItem colors 没有被改变。

我做了一些调试,发现 if 条件对于每种颜色都工作正常,并且 ListItem 正在接收它,但我可能会获取错误的引用或使用错误的属性来更改颜色。

完整代码如下:

procedure TFormLogin.TimerGetListTimer(Sender: TObject);
var
genset_response: String;
genset_amount: Integer;

i: Integer;
str_array: TStringDynArray;
lb_item: TListBoxItem;

begin

// Run this timer only 1 time for now
TimerGetList.Enabled := false;

// Clear all List items
lb_gensets.Clear;

// GET_LIST command to server
IdTCPClient1.IOHandler.WriteLn('GET_LIST');
// Server returns the List in a String
genset_response := IdTCPClient1.IOHandler.ReadLn();

// Remove all " from the String
genset_response := StringReplace(genset_response, '"', '',
[rfReplaceAll, rfIgnoreCase]);

// Separate data by divider
str_array := SplitString(genset_response, '|');

// Get how many items
genset_amount := StrToInt(str_array[1]);

// Populate the List
for i := 0 to (genset_amount - 1) do
begin

if (i = 0) then
begin
lb_gensets.Items.Add(str_array[2]);
end
else
begin
// Add items
lb_gensets.Items.Add(str_array[i + 2]);

end;

// Get current ListItem
lb_item := lb_gensets.ListItems[i];

if (lb_item.Text.Contains('Online')) then
begin
// Set online items to Green color
lb_item.TextSettings.FontColor := TAlphaColors.Mediumseagreen;
end;

if (lb_item.Text.Contains('OFF LINE')) then
begin
// Set Off Line items to Red color
lb_item.TextSettings.FontColor := TAlphaColors.Red;
end;

// End of FOR
end;

end;

最佳答案

默认情况下,控件使用当前样式项中的值(请参阅 StyleLookup 属性)。

要使用自定义字体颜色,您必须从 ListItem 中排除 TStyledSetting.FontColor:

lb_item.StyledSettings:=lb_item.StyledSettings - [TStyledSetting.FontColor];
lb_item.TextSettings.FontColor := TAlphaColors.Red;

关于delphi - 为什么我的 TListBox 项目没有改变颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33344468/

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