Listbox Onchange事件,组件

时间:2017-05-10 15:40:04

标签: delphi components tlistbox

我想根据TListBox创建一个组件。

Items.Count发生变化时,我想更新Caption的{​​{1}}:

TLabel

我制作了下面的组件,但它不起作用:

Label1.Caption := IntToStr(ListBox1.Items.Count);

1 个答案:

答案 0 :(得分:2)

TListBoxChanged()继承受保护的TControl方法,该方法向派生类发送CM_CHANGED消息。 TListBox致电Changed()来回复LBN_SELCHANGE。您不需要定义自己的Change()方法,只需处理CM_CHANGED

TListBox.SetItemIndex()向ListBox LB_SETCURSEL发送HWND条消息。该消息不会触发LBN_SELCHANGE,因此您必须自己检测ItemIndex更改。您试图这样做。

但是,这些问题仅适用于选择更改,而不适用于 Item.Count更改。更改ItemIndex不会更改Items.Count。如果您的目标只是在列表框中添加或删除项目时显示新的Items.Count,则需要处理LB_ADDSTRINGLB_INSERTSTRINGLB_DELETESTRING和{{而不是消息。

尝试更像这样的事情:

LB_RESETCONTENT