Я создаю элементы дерева следующим способом:
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