Mas*_*ler 3 delphi vcl virtualtreeview tvirtualstringtree
我们最近在工作中找到了一个搜索表单.它的功能是标准搜索表单的功能:在顶部的某些框中输入一些条件,点击"搜索"按钮,然后在下面的网格中显示结果.但它的功能很丑陋而且非常有限,所以我的一位同事在重新开始工作之前就重建了它.现在我想完成最后几个细节.
其中一个变化是用TListBox更强大的功能取代旧网格TVirtualStringTree.但是在这个过程中,它似乎已经破坏了一些东西:之前,如果你点击网格中的一行(给予焦点的网格)并点击Enter,相应的事件处理程序将触发并处理你的输入,打开详细视图对于所选项目.但是,在此网格中,按下Enter会导致TButton具有Default = true属性的窗体上的触发OnClick.
如何TVirtualStringTree在具有输入焦点时使优先级成为优先级,以便它在响应之前(并且最好是代替)将其发送到表单时响应用户按Enter键?
处理WM_GETDLGCODE消息并包含DLGC_WANTALLKEYS在返回的值中.例如:
procedure WMGetDlgCode(var Message: TWMGetDlgCode); message WM_GETDLGCODE;
....
procedure TMyControl.WMGetDlgCode(var Message: TWMGetDlgCode);
begin
inherited;
Message.Result := DLGC_WANTALLKEYS;
end;
Run Code Online (Sandbox Code Playgroud)
根据您的控件是否已处理此消息并返回0您可能需要使用的其他内容:
Message.Result := Message.Result or DLGC_WANTALLKEYS;
Run Code Online (Sandbox Code Playgroud)
如果您不想修改此类的代码,请使用插入器或设置WindowProc控件的属性以拦截其窗口过程.
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |