Перейти к содержанию
  • Регистрация
  • 0
Авторизация  
Slym

StyleBook доступ к стилям до их применения в Android

Вопрос

На форме лежит StyleBook со стилем MyButtonStyle и кнопка которой этот стиль применяется.

Хотелось бы до отображения контролов пробежаться по StyleBook и поменять размеры под текущий экран... но стилей внутри StyleBook нет... до первого обращения к стилю по имени...

 

procedure TForm1.Button2Click(Sender: TObject);
begin
  StyleBook1.GetStyle(nil).FindStyleResource('XXX');//<F0.ChildrenCount - таки после этого один стиль находится и угадайте его имя :)
  FormShow(nil);
end;

procedure TForm1.FormShow(Sender: TObject);
var
  F0,f1:TFmxObject;
begin
  Memo1.Lines.Clear;
  Memo1.Lines.Add('Lets go!');
  F0:=StyleBook1.GetStyle(nil);
  if F0.ChildrenCount=0 then exit;//<F0.ChildrenCount - таки равен нулю
  for f1 IN F0.Children do
    Memo1.Lines.Add(f1.StyleName);
end;

Это наблюдается под андроид, на винде работает как ожидается

такое впечатление что под андроид экономятся ресурсы и стили парсятся по мере обращения

типа как тут:

но ответ не подходит, т.к. не известно какие контролы будут, и привязывать каждому контролу OnApplyStyleLookup тоже не вариант

даже если ловить OnApplyStyleLookup всеравно StyleBook пустой.... действует только FindStyleResource

procedure TForm1.Button1ApplyStyleLookup(Sender: TObject);
begin
  FormShow(nil);
end;

 

Изменено пользователем Slym

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

  • 0
procedure TForm1.MyApplyStyleLookup(Sender: TObject);
var Style:TFmxObject;
begin
  Style:=StyleBook1.Style.FindStyleResource(TStyledControl(Sender).StyleLookup);
  if Style is TText then
  begin
    TText(Style).textSettings.Font.Size:=TText(Style).textSettings.Font.Size+10;
    if Style.Tag=-1 then exit;
    Style.Tag:=-1;
    TStyledControl(Sender).NeedStyleLookup;
    TStyledControl(Sender).ApplyStyleLookup;
  end;
end;

procedure TForm1.FormShow(Sender: TObject);
var i:integer;
begin
  for i:=0 to ComponentCount-1 do
  begin
   if Components[i] is TStyledControl then
   with TStyledControl(Components[i]) do
   begin
     OnApplyStyleLookup:=MyApplyStyleLookup;
     NeedStyleLookup;
     ApplyStyleLookup;
   end;
  end;
end;

Вот такая вот "партянка" получается... тройной, мать его, лукап стиля: До FormShow, вовремя FormShow и после OnApplyStyleLookup

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

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

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

Авторизация  

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

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

×
×
  • Создать...