Перейти к содержанию
Fire Monkey от А до Я
  • 0

Вставка стиля


Winexcel

Вопрос

Подскажите пожалуйста, как мне вставить свой стиль в какой либо компонент, например в TButton вставить стиль от TEdit(предполагается что стили есть в TStyleBook), findStyleResourceAndClone

пробовал так:

  Button1.AddObject(StyleBook.FindStyleResource('editStyle', True));

Но стиля едита не увидел

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Не совсем понятно, что Вы хотите получить в итоге.
Вы можете просто поместить объект TEdit со стилем 'editstyle' (или любым другим) внутрь кнопки:
 

  Edit1 := TEdit.Create(Button1);
  Edit1.Align := TAlignLayout.Center;
  Button1.AddObject(Edit1);

 

Ссылка на комментарий
  • 0

Вот есть конкретный метод findStyleResourceAndClone, он создаёт копию стиля, я так понимаю что копия стиля нужна для того чтобы её вставлять в другой визуальный компонент, например TButton..

Или можно также вызвать метод FindStyleResource('', TRUE) , где последний параметр AClone

function TPresentedControl.FindStyleResource(const AStyleLookup: string; const AClone: Boolean): TFmxObject;

отвечает за копирование стиля.

Объясните для чего вообще это нужно тогда? Если не для вставки этого стиля..

Изменено пользователем Winexcel
Ссылка на комментарий
  • 0
4 минуты назад, Равиль Зарипов (ZuBy) сказал:

для чего Вам вставлять стиль? 

Опишите конкретную задачу

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

Ссылка на комментарий
  • 0
2 часа назад, Winexcel сказал:

findStyleResourceAndClone

Я так понимаю, Вы имели ввиду FindAndCloneStyleResource? Этот метод не возвращает копию стиля. Он возвращает копию объекта(элемента) стиля.
Например,  если Вы хотите напрямую изменить элемент стиля (например цвет фона кнопки), то делаете:
 

  AObject := Button1.FindStyleResource('background');
  if (AObject is TRectangle) then
    TRectangle(AObject).Fill.Color := TAlphaColorRec.Aqua;

И Button1 изменит цвет.
Но, если после этого сделать Layout1.AddObject(AObject); то кнопка Button1  не будет больше иметь элемент 'background', родителем этого объекта станет Layout1

 Что касается

  AObject := Button1.FindStyleResource('background', True);
  if AObject <> nil then
    Layout1.AddObject(AObject);

или

  if Button1.FindAndCloneStyleResource('background', AObject) then 
    Layout1.AddObject(AObject);

то вы просто создаете новый объект AObject типа TRectangle со всеми свойствами как у стилевого элемента 'background', за исключением StyleName (у вновь созданного AObject будет  StyleName = ''). В нашем примере этот новый объект (TRectangle) будет помещен на Layout1. При этом 'background' кнопки не изменится.
 

Ссылка на комментарий

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...