【发布时间】:2014-08-12 12:47:48
【问题描述】:
我正在尝试实现以下功能:
- 当鼠标移到组合框上时,它会自动打开。
- 当鼠标离开组合框区域(不仅是组合框,还有下拉列表)时,它会自动关闭。
第一点很简单:
procedure TForm1.ComboTimeUnitsMouseEnter(Sender: TObject);
begin
ComboTimeUnits.DroppedDown := True;
end;
不过,第二点,我做不到。我试过了:
procedure TForm1.ComboTimeUnitsMouseLeave(Sender: TObject);
begin
ComboTimeUnits.DroppedDown := False;
end;
但是当鼠标在组合框上时,它的行为很奇怪,出现又消失,变得无法使用。
我尝试了 AutoCloseUp 属性,但没有结果。现在我没有想法了,谷歌也帮不上忙。
有人能指出正确的方向吗?
【问题讨论】:
-
下拉会触发鼠标离开,这不是你想要的——用户无法用鼠标选择任何东西。您最好开发自己的控件,组合框是一个标准控件,应该以标准方式运行。
-
另外,您必须从打开的下拉列表中跟踪鼠标离开,而不是从组合(这只是 编辑框部分)。否则用户将无法选择任何内容。
-
除了创建一个新控件别无他法?有没有具有此功能的组合框的库?
-
这个
ugly code部分地做了你想要的(当用户进入下拉列表然后离开它时它会触发引入的事件),但是你需要采取更多的情况照顾。 -
您的问题中要求支持该功能的库的部分在这里是题外话(这些类型的问题是不可接受的)。我已编辑删除该段落。
标签: delphi events mouseevent tcombobox