|
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
|