2013-05-21 73 views

回答

4

沒有這樣的事件,但由於您是組件編寫者,所以無論如何事件都是禁止的。事件是爲開發者使用您的組件。

通過發送控件lvm_InsertColumn消息添加列。重寫消息處理程序在你的後裔控制:

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

實現它調用繼承的處理程序,然後做你想做什麼。

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

將被稱爲columncount + 1次。可以通過如果MSG.WParam + 1 = Columns.Count然後// TODO:自定義處理減少到兩個調用 – bummi

+0

此方法的問題是發送'LVM_INSERTCOLUMN'消息,然後在更新列順序之後,列數據被設置等等。當'UpdateColumns'完成執行時,你真的想看看,但'TListView'的設計不適合@user正在嘗試做什麼。 –

+0

@RobKennedy謝謝。多數民衆贊成我正在尋找 – user2025830

1

Delphi TListView控件不提供這樣的事件,並且底層的Windows控件不提供通知。原因在於你的程序員負責添加列。只能通過在Delphi中調用Columns.Add或向底層窗口發送LVM_INSERTCOLUMN消息來添加列。

所以,你負責添加列,這大概是你通過調用Columns.Add來完成的。通過調用Columns.Add的方法路由添加列的所有代碼,並在該點添加任何特殊處理。