Delphi 列表框“;点击";未注册-如何修复?
我在一个窗体上有两个在运行时填充的列表框 我有一个OnClick事件,它会更改“Selected”列表框的颜色(加上一系列其他内容),以便我知道哪个列表框对用户是活动的 如果用户单击列表框中的某个项目,这一切都可以正常工作。但是,如果用户在列表框的空白处单击,则不会触发OnClick 我曾想过使用OnMouseUp并指向OnClick事件,但当时不需要该事件中的其他内容Delphi 列表框“;点击";未注册-如何修复?,delphi,listbox,onclick,delphi-5,Delphi,Listbox,Onclick,Delphi 5,我在一个窗体上有两个在运行时填充的列表框 我有一个OnClick事件,它会更改“Selected”列表框的颜色(加上一系列其他内容),以便我知道哪个列表框对用户是活动的 如果用户单击列表框中的某个项目,这一切都可以正常工作。但是,如果用户在列表框的空白处单击,则不会触发OnClick 我曾想过使用OnMouseUp并指向OnClick事件,但当时不需要该事件中的其他内容 如何在列表框的空白处检测单击?哼。。。Listbox.ItemIndex=-1表示在空白区域中单击。有了mouseevent,
如何在列表框的空白处检测单击?哼。。。Listbox.ItemIndex=-1表示在空白区域中单击。有了mouseevent,它应该可以做到这一点 另一个选项:您可以尝试检查具有焦点的组件,而不是使用click事件 编辑:没有可用的Delphi5,我可以告诉你这个“错误”在XE中已经修复。
如果希望此属性可用,请设置计时器并检查哪个列表框具有焦点(listbox.Focused)。看起来您实际上在寻找的是检测焦点的变化。您希望检测控件何时获得焦点,然后何时失去焦点。为此,您应该使用
oneter
和OnExit
事件。OnClick
事件只是任务的错误事件
从:
使用OnEnter事件处理程序进行任何特殊处理
当控件处于活动状态时
在窗体或窗体之间切换时不会发生OnEnter事件
在另一个应用程序和包含
控制
在单独容器控件中的控件之间切换时,例如
TPanel和TGroupBox控制,将为
包含控件的OnNet事件之前的容器
类似地,容器的OnExit事件发生在OnExit之后
焦点移动到另一个容器时容器中控件的事件
容器外部的控件
例如,考虑一个带有OK按钮和组框的窗体 包含三个单选按钮,其中焦点当前位于“确定” 按钮当用户单击其中一个单选按钮时,将显示OnExit事件 出现按钮的,然后在组框上出现一个OnEnter事件, 最后单击单选按钮上的OneNet事件。如果 然后用户单击OK按钮,这是收音机的OnExit事件 按钮发生,随后是组框的OnExit事件,然后 按钮的OneNet事件发生
@格雷格:#1“ItemIndex:=-1”什么也没做#2没有“HasFocus”,3,David是正确的,“Focused”在OnMouseUp中工作,它将焦点移动到适当的框中。谢谢你们两位。
OnMouseUp
也不好。当然这不是你需要的。是什么让你认为用户是用鼠标导航的。他们可以使用键盘或其他输入设备。也许你实际上正在寻找的是OnEnter
。但是,由于其他各种原因,这款应用程序必须使用鼠标,因此用户可以使用鼠标,也可以不使用鼠标,结果可能是有或无我同意计时器不是一种“干净”的方式。也许,您可以检查Application.OnMessage事件并过滤与焦点相关的事件?