Firemonkey Tlistboxgroupheader 上的命中测试或事件

问题描述 投票:0回答:1

我正在尝试创建一个列表框来折叠/展开项目,直到需要它们为止,但是我找不到在列表框组标题点击时触发的事件。

我在列表框标题上添加了一个按钮以手动折叠其下的所有项目,因为标题下的项目似乎没有简单的展开/折叠选项。没有任何效果,仔细检查似乎没有触发 ListboxGroupHeader 上的 OnClick 事件。事实上,我似乎无法从 listboxgroupheader 触发任何事件(鼠标按下等)。

复制:

  1. 添加列表框
  2. 添加几个列表框项目以及一些 listboxgroupheaders 使用项目编辑器。
  3. 转到列表框标题,并添加 OnClick 事件
  4. 我在 sleep(10) 代码上设置了一个断点,只是为了查看事件是否触发,但我从未到达它
    procedure TFrame_Logging.listboxgroupheaderClick(Sender: TObject);
    begin
      sleep(10);  //I have a breakpoint here that is never reached
    end;

据我所知,Listboxgroupheader 没有任何事件方法?我是不是遗漏了什么,或者 listboxgroupheader 的 OnClick 与其他组件不同?

events header listbox firemonkey
1个回答
0
投票

与此同时,我测试了以下内容,隐藏/显示了点击标题的项目。

type
  TForm5 = class(TForm)
    ListBox1: TListBox;
    ListBoxGroupHeader1: TListBoxGroupHeader;
    ListBoxGroupHeader2: TListBoxGroupHeader;
    ListBoxGroupHeader3: TListBoxGroupHeader;
    ListBoxItem1: TListBoxItem;
    ListBoxItem2: TListBoxItem;
    ListBoxItem3: TListBoxItem;
    ListBoxItem4: TListBoxItem;
    ListBoxItem5: TListBoxItem;
    ListBoxItem6: TListBoxItem;
    ListBoxItem7: TListBoxItem;
    ListBoxItem8: TListBoxItem;
    ListBoxItem9: TListBoxItem;
    ListBoxGroupHeader4: TListBoxGroupHeader;
    procedure ListBoxGroupHeaderClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

implementation
{$R *.fmx}

procedure TForm5.ListBoxGroupHeaderClick(Sender: TObject);
begin
  sleep(10);

  with TListBoxGroupHeader(Sender) do
  begin
    var i := index + 1;
    repeat
      if ListBox1.ItemByIndex(i) is TListBoxGroupHeader then Exit;
      ListBox1.ItemByIndex(i).Visible := not ListBox1.ItemByIndex(i).Visible;
      i := i + 1;
    until i > (ListBox1.Items.Count-1);
  end;

end;

在这张照片中,

ListBoxGroupHeader2
项目被收缩(即隐藏)。

添加的带有断点的

sleep(10)
也按预期工作。

所以,我真的想不出你的测试不成功的任何原因。您使用的是哪个版本?我用

Delphi 10.4 CE
做的测试。

想到你这个表情:

据我所知,

Listboxgroupheader
没有任何事件方法?

TListBox
的所有项目都有一些事件,您可以通过双击
Object Inspector
events
列表从中选择您需要的事件,让IDE创建事件存根。然后在这个存根中添加您的代码。但是您肯定已经知道 Delphi IDE 的这个基本特性了吗?

© www.soinside.com 2019 - 2024. All rights reserved.