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

Обнаружить расширение элемента


Alisson R Oliveira

Вопрос

Опубликовано

Доброе утро, спасибо за помощь и извините за русский язык, так как я использую переводчик Google.

Мне нужно обнаружить расширение элемента, чтобы иметь возможность сохранить в базе данных, поэтому каждый раз, когда пользователь открывает приложение, оно будет таким, каким он его оставил. Однако я не нашел ни одного события, которое бы это контролировало, я попробовал

TTreeView.OnChange
TTreeView.OnClick
TTreeView.OnMouseDown
TTreeViewItem.OnClick
TTreeViewItem.OnMouseDown

 

Ни один из них не срабатывает, просто разворачивая элемент без необходимости нажимать на него ...
Если кто может мне помочь. Благодарный

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

  • 0
Опубликовано
8 минут назад, Alisson R Oliveira сказал:

Доброе утро, спасибо за помощь и извините за русский язык, так как я использую переводчик Google.

Мне нужно обнаружить расширение элемента, чтобы иметь возможность сохранить в базе данных, поэтому каждый раз, когда пользователь открывает приложение, оно будет таким, каким он его оставил. Однако я не нашел ни одного события, которое бы это контролировало, я попробовал

TTreeView.OnChange
TTreeView.OnClick
TTreeView.OnMouseDown
TTreeViewItem.OnClick
TTreeViewItem.OnMouseDown

 

Ни один из них не срабатывает, просто разворачивая элемент без необходимости нажимать на него ...
Если кто может мне помочь. Благодарный

https://docwiki.embarcadero.com/RADStudio/Sydney/en/FireMonkey_Save_State

Если пользуетесь переводчиком, на родном языке тоже оставляйте пост или спойлер!

  • 0
Опубликовано
21 час назад, Alisson R Oliveira сказал:

Приносим извинения, но я не думаю, что был очень ясен в вопросе.
Я говорю о состоянии элемента TTreeView, когда он развернут или свернут.
Благодарный

 

При закрытии формы, сделать цикл по элементам списка, и запоминать какие были раскрытые. Потом при открытии формы, опять в цикле выставить параметры раскрытия на нужных элементах списка. 

  • 0
Опубликовано
2 часа назад, haword сказал:

Ao fechar o formulário, percorra os itens da lista e lembre-se de quais foram abertos. Então, ao abrir o formulário, defina os parâmetros de expansão nos itens de lista necessários novamente no loop. 

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

  • 0
Опубликовано
В 24.09.2021 в 16:30, Alisson R Oliveira сказал:

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

как вариант

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.TreeView,
  FMX.Layouts, FMX.Controls.Presentation, FMX.StdCtrls;

type
  TForm1 = class(TForm)
    TreeView1: TTreeView;
    TreeViewItem1: TTreeViewItem;
    TreeViewItem2: TTreeViewItem;
    TreeViewItem3: TTreeViewItem;
    TreeViewItem4: TTreeViewItem;
    TreeViewItem5: TTreeViewItem;
    TreeViewItem6: TTreeViewItem;
    TreeViewItem7: TTreeViewItem;
    TreeViewItem8: TTreeViewItem;
    TreeViewItem9: TTreeViewItem;
    TreeViewItem10: TTreeViewItem;
    TreeViewItem11: TTreeViewItem;
    TreeViewItem12: TTreeViewItem;
    procedure TreeViewItem2ApplyStyleLookup(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    FOldClick: TNotifyEvent;
    FButton: TCustomButton;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}


procedure TForm1.Button1Click(Sender: TObject);
begin

  FOldClick(Sender);
  if (FButton.Parent.Parent is TTreeViewItem) then
  begin
    Caption:= BoolToStr((FButton.Parent.Parent as TTreeViewItem).IsExpanded);
  end;

end;

procedure TForm1.TreeViewItem2ApplyStyleLookup(Sender: TObject);
begin
    if TreeViewItem2.FindStyleResource('button', FButton) then
    begin
      FOldClick:= FButton.OnClick;
      FButton.OnClick:= Button1Click;


    end;

end;

end.

перекрывать ApplyStyleLookup у всех новых TTreeViewItem и хранить FButton например в массиве TArray<TCustomButton>, но это не очень красивый вариант. более красивый сделать TNewTreeViewItem, в нем реализовать нужный функционал и добавлять в TreeView.

  • 0
Опубликовано (изменено)

вариант со своим TTreeViewItem нашел в интернете, проверил - работает.

type

  TTreeViewItemNew = class(TTreeViewItem)
    private
      FOnChangeExpanded: TNotifyEvent;
      FOnChangeCollapsed: TNotifyEvent;
    protected
      procedure SetIsExpanded(const Value: Boolean); override;
    published
      property OnApplyStyleLookup;
      property OnChangeExpanded: TNotifyEvent read FOnChangeExpanded write FOnChangeExpanded;
      property OnChangeCollapsed: TNotifyEvent read FOnChangeCollapsed write FOnChangeCollapsed;
  end;

..........

procedure TTreeViewItemNew.SetIsExpanded(const Value: Boolean);
var
  LWasExpanded: boolean;
begin
  LWasExpanded := IsExpanded;
  inherited;
  if (IsExpanded) AND (LWasExpanded = false) then
  begin
    if Assigned(OnChangeExpanded) then
      OnChangeExpanded(Self)
  end
  else
    if Assigned(OnChangeCollapsed) then
      OnChangeCollapsed(Self);
end;


procedure TForm.OnExpand(Sender: TObject);
begin
//
end;
....



    newitem:= TTreeViewItemNew.Create(TreeView);
    newitem.Parent:= TreeView;
    newitem.OnChangeExpanded:= OnExpand;
    newitem.Text:= 'cccccccccc';

   
 

Изменено пользователем haword

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...