• 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'] := '.......';
    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 := 'Детали';
но тогда страшные аномалии происходят если ваш объект находятся допустим в скролбоксе.

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


Ссылка на сообщение
Поделиться на другие сайты
  • 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 пользователей онлайн

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