我正在尝试创建一个列表框来折叠/展开项目,直到需要它们为止,但是我找不到在列表框组标题点击时触发的事件。
我在列表框标题上添加了一个按钮以手动折叠其下的所有项目,因为标题下的项目似乎没有简单的展开/折叠选项。没有任何效果,仔细检查似乎没有触发 ListboxGroupHeader 上的 OnClick 事件。事实上,我似乎无法从 listboxgroupheader 触发任何事件(鼠标按下等)。
复制:
procedure TFrame_Logging.listboxgroupheaderClick(Sender: TObject);
begin
sleep(10); //I have a breakpoint here that is never reached
end;
据我所知,Listboxgroupheader 没有任何事件方法?我是不是遗漏了什么,或者 listboxgroupheader 的 OnClick 与其他组件不同?
与此同时,我测试了以下内容,隐藏/显示了点击标题的项目。
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 的这个基本特性了吗?