Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Firemonkey - доступ к вложенному стилю


Автор: JSinx 30.3.2013, 22:28
Сделал стиль, содержащий в себе TExpander (который содержит в себе button, при нажатии на которую панелька сворачивается или разворачивается).
Мне нужно переопределить работу кнопки (чтобы по нажатию не только сворачивало, но и делало нужные мне действия).

Создаю объект, беру из него Expander ( gropexp ), пытаюсь получить ресурсы экспандера, мне говорит, что ресурса button нет. При этом если в перед поиском компонентов вызвать ShowMessage - то все работает, какой то нонсенс.

Собственно код:
Код

TLBITestExp = class( TListBoxItem )
private
  procedure OnCloseClick(Sender: TObject);
protected
  procedure ApplyStyle; override;
end;

procedure TLBITestExp.ApplyStyle;
var
  obj1 : TFmxObject;
  expand : TExpander;

begin
  inherited ApplyStyle;

  expand := FindStyleResource('gropexp') as TExpander;

  ShowMessage('aaa');

  if Assigned( expand ) then
  begin
    obj1:= expand.FindStyleResource('button');
    if Assigned( obj1) then
    // Если закоментировать показ сообщения, то сюда не попадет, т.к. не найдет кнопку.
      ( obj1 as TCustomButton ).OnClick := OnCloseClick;
  end;

end;


Как мне получить доступ к кнопке используя стили и не вызывая сообщение? smile

Автор: JSinx 31.3.2013, 21:00
Нашел выход из ситуации.

За основу взял сам стиль от TExpander, в итоге вложенных сложных объектов нет и все заработало.

P.S.  Но все равно инетересно, как ShowMessagе влияет на работу. Заметил еще, что если делать StyleLookup тогда работает, как я описывал, а если стиль назвать в соотвествии с названием компонента (что он автоматически применяется), то и MessageBox не помогает.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)