如何检测添加到列表视图控件的新列?

时间:2013-05-21 11:50:05

标签: delphi events listview

我正在编写一个来自TListView的组件,我想知道使用此组件的开发人员何时添加一列,以便我能做出反应。如何检测添加新列的时间?有事件吗?

2 个答案:

答案 0 :(得分:4)

没有这样的事件,但由于您是组件编写者,无论如何事件都是禁止的。事件是为开发人员使用您的组件。

通过发送控制lvm_InsertColumn消息来添加列。覆盖后代控件中的消息处理程序:

procedure LVMInsertColumn(var Msg: TMessage); message lvm_InsertColumn;

实现它以调用继承的处理程序,然后执行任何操作。

procedure TListViewDescendant.LVMInsertColumn(var Msg: TMessage);
begin
  inherited;
  // TODO: custom handling
end;

答案 1 :(得分:1)

Delphi TListView控件不提供此类事件,并且基础Windows控件不提供通知。原因是程序员负责添加列。只能通过在Delphi中调用Columns.Add或通过向基础窗口发送LVM_INSERTCOLUMN消息来添加列。

因此,您负责添加列,可能是通过调用Columns.Add来完成的。通过调用Columns.Add的方法路由所有添加列的代码,并在此时添加任何特殊处理。