【发布时间】:2013-05-15 10:53:24
【问题描述】:
我已经使用 Delphi XE4 一个星期了,我刚刚发现了新的TListGroups 功能。很容易设置TlistItem 的GroupID 在组之间轻松切换/移动。现在,我想要一个在TListItem 离开组和/或TlistItem 进入组时立即调用的过程。我正在寻找这样的东西:
procedure TForm1.ListView1On(Before/After)ListGroupEnter(Sender: TObject; Item: TListItem);
begin
// Do some stuff here like...
// AllowedToDraw := TRUE/FALSE
// I/O Code...
// etc...
end;
procedure TForm1.ListView1On(Before/After)ListGroupLeave(Sender: TObject; Item: TListItem);
begin
// Do some stuff here like...
// This might be replaceable with OnDeletion...
// I/O Code...
end;
这里的主要问题是如果你设置了GroupID属性来检测各个组之间的切换。
那么,一旦您更改/设置GroupID 属性,是否有任何东西可以检测到开关?
【问题讨论】:
-
它需要拦截
TListItem.SetGroupIDsetter。最好制作自己的辅助函数并将GroupID设置为那里的项目。 -
我不完全知道它如何处理组切换。它会完全删除该项目,然后将其重新添加到另一个组吗?
-
GroupID设置器只设置了代表项目的LVITEM结构的iGroupId成员。剩下的就靠系统了。 -
所以我想没有简单的方法可以做到这一点。
-
不,这里没有太多选择。您可以拦截该设置器,或创建一个函数(或例如拦截
TListItem类的方法)。此函数将能够触发您自己的事件并设置项目的GroupID。
标签: delphi listview delphi-xe4