ListView vsReport時にキー操作での項目選択で上下をつなげる
20 ListViewSelectRotation 動作確認 Delphi2007 更新日 2008/01/07(月)

ListViewをvsReportの形式で使っているときに
キーボードで上下させてItemを選択する場合があるでしょう。

そのとき、一番上のItemを選択している状態で
上カーソルキーを押すと一番下のItemが選択され、

一番下のItemを選択している状態で
下カーソルキーを押すと一番上のItemが選択される

UIを実装しました。

押しっぱなしにしても正しく動くように
OnKeyDownイベントを使います。

────────────────────
//ListViewの上下移動
procedure TForm1.ListView1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if ListView1.ItemIndex = 0 then
  begin
    if Key=VK_UP then
    begin
      Key := 0;
      ListView1.ItemIndex := ListView1.Items.Count-1;
      ListView1.ItemFocused := ListView1.Items[ListView1.ItemIndex];
    end;
  end else
  if ListView1.ItemIndex = ListView1.Items.Count-1 then
  begin
    if Key=VK_DOWN then
    begin
      Key := 0;
      ListView1.ItemIndex := 0;
      ListView1.ItemFocused := ListView1.Items[ListView1.ItemIndex];
    end;
  end;
end;
────────────────────