我的组合框有问题。我有一个事件处理程序OnClick
它根据选择的项目刷新数据。问题是当这种情况发生时:
- 下拉组合框列出各种选项
- 在键盘上键入以查找匹配的项目
- 组合框更改此选择并调用
OnClick
event
- 由于此选择/事件,我的屏幕刷新
- 单击组合框外部的某处可将焦点从其上移开
- 组合框会返回到之前的选择,即使
OnClick
已经被调用了
- 即使组合框变回之前的选择,
OnClick
不再被调用
- 此后,组合框显示的值与我的数据实际表示的值不同
因此,当您打开组合框并在键盘上键入几个字母以查找下拉列表中的项目时,OnClick
被触发,刷新我的屏幕。但是,当您单击组合框外部的某个位置(从而将焦点从其上移开)时,组合框会变回之前选择的任何值,而不是我键入的值。同时,OnClick
事件未触发,因此组合框显示的值与我在屏幕上加载的值相比不正确。
在这种在键盘上键入项目的情况下,如何使组合框停留在所选项目上?
在我的代码中,我使用OnCloseUp
事件。好吧,事实上,我在下拉列表中使用了子类组合,它们覆盖了Change
and CloseUp
方法:
procedure TMyDropDownList.Change;
begin
RespondToChange;
inherited;
end;
procedure TMyDropDownList.CloseUp;
begin
RespondToChange;
inherited;
end;
The RespondToChange
方法对新的做出反应ItemIndex
价值。如果在组合下降时对每一个更改做出反应的成本很高,那么您可能会考虑省略对RespondToChange
来自Change
method.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)