Delphi 使用给定示例创建特定的自定义TListBoxItem以及fontColor属性的问题

Delphi 使用给定示例创建特定的自定义TListBoxItem以及fontColor属性的问题,delphi,firemonkey,delphi-xe4,tlistbox,Delphi,Firemonkey,Delphi Xe4,Tlistbox,有人能给我指路吗。我正在尝试使用Delphi XE4为iOS应用程序创建自定义ListboxItem。我的目标输出将与上面的照片大致相同,因为我现在被困在这里(下图) 我已经成功地动态生成了ListBoxItem并插入了TLabel对象,但是,我无法将TLabel的“fontColor”属性更改为所需的颜色。我会编码 TLabel.Fontcolor:=ClaBlue 但颜色恢复为黑色。我希望它看起来就像我举的例子一样。我在更改插入的TLabel的字体颜色以及为每个Listbox项添加渐变背景


有人能给我指路吗。我正在尝试使用Delphi XE4为iOS应用程序创建自定义ListboxItem。我的目标输出将与上面的照片大致相同,因为我现在被困在这里(下图)

我已经成功地动态生成了ListBoxItem并插入了TLabel对象,但是,我无法将TLabel的“fontColor”属性更改为所需的颜色。我会编码

TLabel.Fontcolor:=ClaBlue

但颜色恢复为黑色。我希望它看起来就像我举的例子一样。我在更改插入的TLabel的字体颜色以及为每个Listbox项添加渐变背景时遇到问题。我不知道是否需要使用“样式编辑器”,甚至不知道如何使用。是的,我看过Delphi/RAD Studio中包含的示例 以下是我目前的编码:

while XMLNode<>nil do begin 

HeaderText := 'Part#: ' + XMLNode.ChildNodes['PARTNUM'].Text + Chr(9) + XMLNode.ChildNodes['VENDPARTNUM'].Text;

DetailText := '$' + XMLNode.ChildNodes['MD1_SELL_PRICE'].Text + ' /' + XMLNode.ChildNodes['UM1_PRICE_NAME'].Text + sLineBreak + 'Min: ' + XMLNode.ChildNodes['md2_from.MD2_MIN_QTY'].text + Chr(9) + 'On Hand: ' + XMLNode.ChildNodes['md2_from.MD2_ON_HAND_QTY'].text + Chr(9) + Label1.text ;
Form6.ListBox1.Items.Add(DetailText); 
ListBoxItem:=Form6.ListBox1.ListItems[Form6.ListBox1.Items.Count-1]; 
ListBoxItem.StyleLookup:='listboxitembottomdetail';
ListBoxItem.WordWrap:=True; 
ListBoxItem.Font.Size:= 8;
ListBoxItem.Height := 120; 
TestLabel := TLabel.Create(self); 
TestLabel.Text := HeaderText; 
TestLabel.font.size := 20; 
testLabel.FontColor := claBlue; 
TestLabel.Width := form6.ListBox1.ClientWidth;
i := i +1; 
XMLNode := XMLNode.NextSibling;
end; 
Form6.ListBox1.EndUpdate;
Form6.Show;
当XMLNodenil开始时
HeaderText:=“Part#:”+XMLNode.ChildNodes['PARTNUM'].Text+Chr(9)+XMLNode.ChildNodes['VENDPARTNUM'].Text;
DetailText:='$'+XMLNode.ChildNodes['MD1_售价'].Text+'/'+XMLNode.ChildNodes['UM1_价格名称'].Text+sLineBreak+'Min:'+XMLNode.ChildNodes['md2_from.md2_最小数量].Text+Chr(9)+'On Hand:'+XMLNode.ChildNodes['md2_from.md2_On Hand数量'.Text+Chr(9)+Label1.Text;
Form6.ListBox1.Items.Add(DetailText);
ListBoxItem:=Form6.ListBox1.ListItems[Form6.ListBox1.Items.Count-1];
StyleLookup:='listboxitembottomdetail';
WordWrap:=True;
ListBoxItem.Font.Size:=8;
ListBoxItem.高度:=120;
TestLabel:=TLabel.Create(self);
TestLabel.Text:=HeaderText;
TestLabel.font.size:=20;
testLabel.FontColor:=claBlue;
TestLabel.Width:=form6.ListBox1.ClientWidth;
i:=i+1;
XMLNode:=XMLNode.NextSibling;
结束;
Form6.ListBox1.EndUpdate;
表格6.展示;

您必须使用样式手册, 使用delphi附带的CustomListBox示例学习如何在Firemonkey中正确使用样式

阅读一些官方的Firemonkey风格的介绍指南也不会有什么坏处,例如

它看起来比实际情况更复杂,简而言之,要产生您想要的结果:

  • 访问组件的样式设计器
  • 通过结构窗口编辑/添加/删除和修改控件,在您的情况下,它将是中组织的控件的组合
  • 保存修改后,可以在运行时更改特定TText控件的颜色:
    Item.StylesData['TestLabel.color']:=TAlphaColors.Red(其中项目是TListboxitem)

  • 你想要达到的目标并不难,通过实践、纯粹的尝试和错误来学习如何处理样式设计师,它不像看上去那么复杂。

    在大多数情况下,你是对的。除了回答我的问题更详细的其他人。我在Xe4附带的示例中使用了工具。与Peter notes一文相比,您不需要通过右键单击XE4中的组件来访问样式设计器,而只需将TStyleBook组件作为资源放到所需的表单上。从这里开始,您将使用XML布局设计。另一个减速****我实际上跳过了样式手册,并像以前使用标签那样动态插入TTEXT。这一次,通过使用tText动态地更好地定位它们,我能够更改tText.fontcolor并使用颜色棒。然而,现在,我似乎不知道如何实现所需示例中的渐变背景。最好插入一个TcolorBox并将其设置为填充父项、listboxItem还是什么?@JordanWeb,如果您在运行时动态插入标签,那么基本上可以通过创建一个资源样式书来解决问题,就像在示例中一样,并创建一个名为itemGradient的新TLayout,其中放置一个树形角,将allClient和fill brush kind设置为Gradient。创建新项时,只需添加
    item.StyleLookup:=“itemgrident”
    请记住stylelookup字符串必须与名称匹配,它非常敏感。@PeterVonča您的解决方案不能应用于FireMonkey Mobile,您有什么指导原则吗?