Создание конкретного пользовательского TListBoxItem с данным примером и проблемы со свойством fontColor


Может кто-нибудь, пожалуйста, направьте меня в правильном направлении. Я пытаюсь создать пользовательский элемент ListboxItem, используя Delphi XE4 для приложения iOS. Моя цель будет выглядеть примерно так, как показано на фотографии выше, где я сейчас застрял (рисунок ниже).

Мне удалось динамически сгенерировать ListBoxItem и вставить объект TLabel, однако я не могу изменить свойство fontColor TLabel на желаемый цвет. Я могу закодировать

TLabel.Fontcolor:= ClaBlue;

Но цвет возвращается к черному. Я бы хотел, чтобы это выглядело точно так же, как пример, который я привожу. У меня проблемы с изменением цвета шрифта вставленной TLabel и добавлением градиентного фона к каждому элементу списка. Я не знаю, нужно ли мне использовать "редактор стилей" или даже как. И да, я посмотрел на пример, включенный в 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;

1 ответ

Решение

Вы должны использовать книгу стилей, использовать образец CustomListBox, поставляемый с Delphi, чтобы узнать, как правильно использовать стили в Firemonkey.

Также не мешало бы прочитать некоторые официальные руководства по стилю Firemonkey для ознакомления.
например, настройка приложений FireMonkey с помощью стилей.

Это выглядит сложнее, чем вкратце, чтобы получить результат, который вы хотите:

  1. Доступ к дизайнеру стиля компонента
  2. Через окно структуры редактируйте / добавляйте / удаляйте и изменяйте элементы управления, в вашем случае это будет комбинация элементов управления TText, организованных в Tlayouts.
  3. После сохранения ваших изменений вы можете изменить цвет определенного элемента управления TText во время выполнения: Item.StylesData['TestLabel.Color'] := TAlphaColors.Red; (где Item является TListboxitem)

То, что вы пытаетесь достичь, не сложно, научитесь обращаться с дизайнером стилей с помощью практики, методом проб и ошибок, это не так сложно, как кажется.

Другие вопросы по тегам