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

Назначение обработчиков событий для элементов стиля через StylesData


Виктор

Вопрос

Я создаю элементы дерева следующим способом:

procedure TFForder.ComboBox1Change(Sender: TObject);
var
  It: TTreeViewItem;
  i: integer;
  Dir: Tstringdynarray;
  Click1: TNotifyEvent;
begin
  dir := TDirectory.GetDirectories(ComboBox1.Selected.Text, '*', TSearchOption(2), FilterPredicate);
  Treeview1.Clear;
  Button1.OnClick := Click;
  for I := 0 to length(Dir) do
  begin
    with It do
    begin
      It := TTreeViewItem.Create(Self);
      Parent := Treeview1;
      Text := TPath.GetFileName(Dir[i]);
      It.StyleLookup := 'Tree';
      It.StylesData['button.OnClick'] := TValue.From<TNotifyEvent>(Click);
      It.StylesData['text.Text'] := 'sdf';
      TreeView1.AddObject(It);
      AddObject(TTreeViewItem.Create(It));
    end;
  end;
end;
Все элементы создаются корректно, но я не хочу нагружать старт программы загрузкой всех директорий, поэтому хочу подгружать дочернии элементы по мере открытия дерева. Для этого задаю элементу (я написал свой стиль для элементов дерева, нем содержится только кнопка для теста и текст) стиль 
It.StyleLookup := 'Tree';

И присваиваю кнопке в этом стиле обработчик onClick. Но этот обработчик не срабатывает при нажатии. Я не могу понять почему. Так же для тестирования я присваиваю дочернему элементу свойство текст, но и этого не происходит. Помогите разобраться.


На всякий случай уточню, HitText выставлен в true для кнопки и в false для всех остальных элементов (а их в стиле всего три, кнопка текст и layout
Изменено пользователем Brovin Yaroslav
Ссылка на комментарий

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

  • 0

Спасибо, я уже разобрался, всё дело было в том что требуется задавать обработчики событий для элементов стилей еще и в OnApplyStyleLookup задавать иначе они затираются.

Изменено пользователем Brovin Yaroslav
Форматирование кода
Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...