Firemonkey TButton стиль с двумя разными текстами

Я пытаюсь создать виртуальную клавиатуру, где каждая кнопка имеет как цифру, так и несколько букв. Например, число 2 также будет иметь текст ABC рядом с ним, в меньшем размере шрифта, и номер 3 буду иметь DEF рядом с ним.

Я могу успешно редактировать пользовательский стиль этих кнопок одну за другой. Одной кнопкой я могу уронить TText Элемент стиля, изменить настройки выравнивания и текста каждого, и он работает нормально...

Разработка стиля кнопки

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

Образец клавиатуры во время выполнения

Как я могу создать единый стиль многократного использования, который также позволит мне использовать различный подтекст в каждой кнопке? Или мне придется создавать уникальный стиль для каждой кнопки?

1 ответ

Решение

Вы можете сделать обходной путь, установить текст StyleName ABC Label для текста и StyleName для номера Label для номера.

Создайте класс, который переопределяет класс кнопки.

TButton = class(FMX.StdCtrls.TButton)
protected
  procedure ApplyStyle; override;
end;

procedure TButton.ApplyStyle;
  var NumberLabel : TLabel;
begin
  //That method will find for a label with stylename number and set the tag of component in it.
  inherited;
  if FindStyleResource<TLabel>('Number', NumberLabel) then
    NumberLabel.Text := IntToStr(Tag);
end;

Теперь установите стиль для всех кнопок. Свойство text устанавливает текст, алфавитно-цифровой текст, а тег - Number. Это будет работать только во время выполнения.

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