• 0
k0der

доступ к вложенным элементам

Вопрос

StyleObject: TFmxObject;     
aItem: TListBoxItem;

...............

aItem := TListBoxItem.Create(nil);
    aItem.Parent := ListBox1;
    aItem.Text := s;
    aItem.StyleLookup := 'listboxitems';

.........................

..................  это работает 

StyleObject := aItem.FindStyleResource('labelname');
      if Assigned(StyleObject) and (StyleObject is TLabel) then
      begin
      lab := (StyleObject as TLabel);
      lab.Text := city + ',' + add;
end;

.................. а этот не работает     

StyleObject := aItem.FindStyleResource('labelname1');
      if Assigned(StyleObject) and (StyleObject is TLabel) then
      begin
      lab := (StyleObject as TLabel);
      lab.Text := city + ',' + add;
end;
 
как быть?

post-1800-0-62338300-1448290743.png

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


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

8 ответов на этот вопрос

  • 0

Попробуйте так

aItem.StylesData['labelname1.text'] := '.......';

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


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

 

Попробуйте так

aItem.StylesData['labelname1.text'] := '.......';
    aItem.StylesData['labelname1.text'] := '11111';   -это не работает
    aItem.StylesData['labelname.text'] := '22222'; -это работает
 aItem.StylesData['panelcent.panelrigth.labelname1.text'] := '11111';- это вызвало эксепшн

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


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

не надо парить стили

сделайте просто объекты в листБоксИтем и заполняйте их от души

зачем такие извраты-то??

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


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

заменил  tpanel на tlayout  и заработало.

 

а объекты потом криво листаются к сожалению

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


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

Неужели никак нельзя получить доступ к вложенным элементам? Просто стилем накидать проще, чем городить свой объект с прямым доступом к дочерним элементам.

----

Что самое интересное, в TStyledControl.FindStyleResource объект FResourceLink = nil.

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

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


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

Неужели никак нельзя получить доступ к вложенным элементам? Просто стилем накидать проще, чем городить свой объект с прямым доступом к дочерним элементам.

----

Что самое интересное, в TStyledControl.FindStyleResource объект FResourceLink = nil.

Вот так все работает, но может я не понял вопроса

 

Желательно это делать в OnApplyStyleLookup данного объекта.

например если хотите заполнить стилевой текст или картинку:

 

Новый объект стиля TButton содержит TText, TLabel, TImage и TButton

procedure TForm_main.Button1ApplyStyleLookup(Sender: TObject);

begin
        TText(TButton(Sender).FindStyleResource('detail')).Text := 'Детали';
        TLabel(TButton(Sender).FindStyleResource('titul')).Text := 'Наименование';
        TImage(TButton(Sender).FindStyleResource('img')).Bitmap.Assign(BTMP);
        TButton(TButton(Sender).FindStyleResource('but_min')).Tag := 58;
        TButton(TButton(Sender).FindStyleResource('but_min')).OnClick := ButW_Min;
end;

 

Сделайте одну процедуру OnApplyStyleLookup и присвойте необходимым объектам. 

 
Можно напрямую заполнять хоть откуда например 
 TText(Button1.FindStyleResource('detail')).Text := 'Детали';
но тогда страшные аномалии происходят если ваш объект находятся допустим в скролбоксе.
Равиль Зарипов (ZuBy) понравилось это

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


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

TText(TButton(Sender).FindStyleResource('detail')).Text := 'Детали';

Не работает, программа валится.

Работает вот так. Сам искал, вдруг кому сгодится

procedure TForm1.Button1ApplyStyleLookup(Sender: TObject);
var
l:tlayout;
begin
    l:=StyleBook1.Style.FindStyleResource('Button1Style1') as Tlayout;
    (l.FindComponent('GlowEffect') as TGlowEffect).GlowColor:=Talphacolorrec.Red;
end;

А вот на лету не меняет. Программа не валится, но и изменений нет

 

    l:=StyleBook1.Style.FindStyleResource('Button1Style1') as Tlayout;
    (l.FindComponent('GlowEffect') as TGlowEffect).GlowColor:=Talphacolorrec.Red;
    form1.Button1.ApplyStyleLookup;

Изменения по ApplyStyleLookUp не происходят. Причем ApplyStyleLookUp компонента происходит раньше чем например FormShow формы. Вопрос, как теперь применить настройки стиля по нажатию на кнопку.

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

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


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

сам нашел. Нужно переопределить свойство StyleLookup

Form1.Button1.StyleLookup := 'Button1Style1';

 

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


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

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу