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. ここで BACKSPACE キーを押します。おそらく、Key := 0;
フォームのOnKeyDown
イベント ハンドラーで設定すると、BackSpace キーが ListBox1 コントロールによって処理されないようにする必要があります。しかし、ご覧のとおり、これは機能しません: BACKSPACE キーにより、選択が Item5 から Item1 に変更されました。
では、フォーカスされた ListBox コントロールで BACKSPACE キーが処理されないようにし、ListBox の選択を変更するにはどうすればよいでしょうか。
Delphi 10.1 ベルリン アップデート 2
Windows 7 x64 SP1