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

Как можно реализовать в TTreeView события OnExpand и OnCollapse?


Dzuyba

Вопрос

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

  • 0

Реализовать данные события можно через стили. Находишь в стиле элемент клик на который должен вызывать раскрытие или закрытие дочернего элемента (плюсик, стрелочка и т.д.). Как правило это элемент класса TButton или TButtonStyleObject, что бы мог изменять состояние при нажатии автоматически. Создаешь процедуру которая будет присваивать элементу стиля обработчик нажатия.

procedure TFForder.TreeView2ApplyStyleLookup(Sender: TObject);
var
  Item: TTreeViewItem;
begin
  Item := TTreeViewItem(Sender);
  Item.StylesData['button'] := TValue.From<TNotifyEvent>(Click);
end;

При создании дочернего элемента TTreeView:

It.OnApplyStyleLookup := Treeview2.OnApplyStyleLookup;

И пишешь саму процедуру при нажатии на элемент стиля где выясняешь надо свернуть или развернуть элемент:

function FindItemParent(Obj: TFmxObject; ParentClass: TClass): TFmxObject;
begin
  Result := nil;
  if Assigned(Obj.Parent) then
    if Obj.Parent.ClassType = ParentClass then
      Result := Obj.Parent
    else
      Result := FindItemParent(Obj.Parent, ParentClass);
end;
procedure TFForder.Click(Sender: TObject);
var
 Item: TTreeViewItem;

begin
  TreeView2.BeginUpdate;
  Item := TTreeViewItem(FindItemParent(Sender as TFmxObject,TTreeViewItem));

  if Item <> nil then
    if Item.IsExpanded = False then 
    begin
      //здесь пишешь то что надо сделать при разворачивании элемента
      Item.Expand;
    end 
    else 
    begin
      //здесь пишешь что надо сделать при сворачивании элемента
      Item.Collapse;
    end;
  TreeView2.EndUpdate;
end;
Изменено пользователем Brovin Yaroslav
Отформатирован код
Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...