Перейти к содержанию
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

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

Screenshot_2.png

Ссылка на комментарий
  • 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 пользователей онлайн

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