我想根据TListBox
创建一个组件。
当Items.Count
发生变化时,我想更新Caption
的{{1}}:
TLabel
我制作了下面的组件,但它不起作用:
Label1.Caption := IntToStr(ListBox1.Items.Count);
答案 0 :(得分:2)
TListBox
从Changed()
继承受保护的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_ADDSTRING
,LB_INSERTSTRING
,LB_DELETESTRING
和{{而不是消息。
尝试更像这样的事情:
LB_RESETCONTENT