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

Виктор

Пользователи
  • Постов

    30
  • Зарегистрирован

  • Посещение

  • Победитель дней

    2

Ответы сообщества

  1. Пост Виктор - сообщение в Как узнать из какого ListBoxItem был вызван обработчик был отмечен как ответ   
    Для этого надо найти ближайшего родителя у элемента класса, нужного класса (прошу прощения за тавтологию). С помощью вот такой вот универсальной функции.
    Item := TListBoxItem(FindItemParent(Sender as TFmxObject,TListBoxItem)); 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;
  2. Пост Виктор - сообщение в Как получить TListBoxItem по индексу в TListBox? был отмечен как ответ   
    Доброго дня.

    Что бы получить дочерний item зная его индекс надо воспользоваться функцией ItemByIndex самого ListBox-а:
    var Item: TListBoxItem; Index: Integer; begin Item := ListBox1.ItemByIndex(Index); end;
  3. Пост Виктор - сообщение в Как можно реализовать в TTreeView события OnExpand и OnCollapse? был отмечен как ответ   
    Реализовать данные события можно через стили. Находишь в стиле элемент клик на который должен вызывать раскрытие или закрытие дочернего элемента (плюсик, стрелочка и т.д.). Как правило это элемент класса 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;
  4. Пост Виктор - сообщение в Не получается программно создать компонент в runtime был отмечен как ответ   
    Благодарю за ответ, автор как говориться сам опозорился. Проблема была не в создании, а в ссылке на экземпляр формы.
  5. Пост Виктор - сообщение в Назначение обработчиков событий для элементов стиля через StylesData был отмечен как ответ   
    Спасибо, я уже разобрался, всё дело было в том что требуется задавать обработчики событий для элементов стилей еще и в OnApplyStyleLookup задавать иначе они затираются.
×
×
  • Создать...