A. 创建一个 VCL 表单应用程序。
B. 在表单上放置一个 TListBox 并在设计时填写一些项目,例如:
C. 将表单的KeyPreview
属性设置为True
:
D. 在表单的OnKeyDown
事件处理程序中编写以下代码:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if Key = VK_BACK then
begin
if ListBox1.Focused then
begin
Key := 0;
CodeSite.Send('ListBox1 is focused!');
end;
end;
end;
E. 运行程序并通过单击选择 Item5:
现在 ListBox1 具有焦点。
F. 现在按退格键。假设,Key := 0;
在 Form 的OnKeyDown
事件处理程序中设置应该阻止 BACKSPACE 键被 ListBox1 控件处理。但这不起作用,如您所见: BACKSPACE 键导致将选择从 Item5 更改为 Item1:
那么如何防止 BACKSPACE 键在焦点列表框控件中被处理并更改列表框的选择呢?
德尔福 10.1 柏林更新 2
Windows 7 x64 SP1