お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"TScrollBoxをキー操作可能にする"



こんにちは、佐藤 充男です。



☆説明
 スクロールボックスをキー操作でスクロールするようにします。
 [Hoem]              垂直スクロールを先頭へ
 [End]               垂直スクロールを終端へ
 [PageUp]            垂直スクロールをページアップ
 [PageDown]          垂直スクロールをページダウン
 [↑]                垂直スクロールを上へ
 [↓]                垂直スクロールを下へ
 [Shift]+[Hoem]      水平スクロールを先頭へ
 [Shift]+[End]       水平スクロールを終端へ
 [Shift]+[PageUp]    水平スクロールをページアップ
 [Shift]+[PageDown]  水平スクロールをページダウン
 [←]                水平スクロールを左へ
 [→]                水平スクロールを右へ

☆準備
 FormにTScrollBoxを配置し、その内にTImage等を置きます。
 KeyPreviewプロパティをTrueにしておきます。

☆補足
 ・Delphi3.1 でテスト。
 ・Form上にTEdit などがある場合は、ActiveControl でチェックしてキー
  操作を妨げないようにしてください。
 ・参照 Win32 Referrence
    [Keyboard Interface for a Scroll Bar]
    [Virtual-Key Codes]

[サンプルソース]
----------------------------------------------------------------------
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  // キー操作
  if Shift = [ssShift] then
    case Key of  // Shift
      VK_HOME:
        begin
          ScrollBox1.Perform( WM_HSCROLL, SB_TOP,    0 );  // Top
          Key := 0;
        end;
      VK_END:
        begin
          ScrollBox1.Perform( WM_HSCROLL, SB_BOTTOM, 0 );  // Bottom
          Key := 0;
        end;
      VK_PRIOR:  // PageUp
        begin
          ScrollBox1.Perform( WM_HSCROLL, SB_PAGEUP, 0 );  // PageUp
          Key := 0;
        end;
      VK_NEXT:  // PageDown
        begin
          ScrollBox1.Perform( WM_HSCROLL, SB_PAGEDOWN, 0 );  // PageDown
          Key := 0;
        end;
    end
  else case Key of
    VK_HOME:
      begin
        ScrollBox1.Perform( WM_VSCROLL, SB_TOP,    0 );  // Top
        Key := 0;
      end;
    VK_END:
      begin
        ScrollBox1.Perform( WM_VSCROLL, SB_BOTTOM, 0 );  // Bottom
        Key := 0;
      end;
    VK_PRIOR:  // PageUp
      begin
        ScrollBox1.Perform( WM_VSCROLL, SB_PAGEUP, 0 );  // PageUp
        Key := 0;
      end;
    VK_NEXT:  // PageDown
      begin
        ScrollBox1.Perform( WM_VSCROLL, SB_PAGEDOWN, 0 );  // PageDown
        Key := 0;
      end;
    VK_UP:
      begin
        ScrollBox1.Perform( WM_VSCROLL, SB_LINEUP, 0 );  // LineUp
        Key := 0;
      end;
    VK_DOWN:
      begin
        ScrollBox1.Perform( WM_VSCROLL, SB_LINEDOWN, 0 );  // LineDown
        Key := 0;
      end;
    VK_LEFT:
      begin
        ScrollBox1.Perform( WM_HSCROLL, SB_LINEUP, 0 );  // LineUp
        Key := 0;
      end;
    VK_RIGHT:
      begin
        ScrollBox1.Perform( WM_HSCROLL, SB_LINEDOWN, 0 );  // LineDown
        Key := 0;
      end;
  end;
end;
----------------------------------------------------------------------

                              98/7/7(火) 01:02pm  LDM03756 佐藤 充男

Original document by 佐藤 充男   氏 ID:(LDM03756)


ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum