[Delphi:90818] キーとマウスクリックの組み合わせについて

2,396 views
Skip to first unread message

hiro

unread,
Oct 27, 2008, 12:08:26 AM10/27/08
to Del...@ml.users.gr.jp
hiroです
何時も、お世話様です
TImage上で、キーボード「Shift」キーを押しながらマウス「左クリック」をした場合のイベントを書きたいのですが
 
procedure TForm.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
//イメージ的には以下のようなことなのですが・・・
Key:
begin
 if Key=VK_Shift then
  ShowMessage('Click and Shift');
end;

COOK2

unread,
Oct 27, 2008, 12:20:38 AM10/27/08
to Del...@ml.users.gr.jp
COOK2です。
うろ覚えですが、

プロシージャの引数のShift: TShiftState

を判定すればいいのではないでしょうか?

--------------------------------------
Enjoy MLB with MAJOR.JP! Ichiro, Matsuzaka, Matsui, and more!
http://pr.mail.yahoo.co.jp/mlb/

中村拓男

unread,
Oct 27, 2008, 12:33:42 AM10/27/08
to Del...@ml.users.gr.jp
中村@ブレーンです。

hiro さんは書きました:

いろいろやり方があると思いますが、

1) Shift パラメータを使う。

OnMouseDown や OnMouseUp の Shift パラメータ の ssShift を見れば、Shift が押されているかどうか
確認できます。

2) GetAsyncKeyState API を使う。

OnClick など Shift パラメータの無いイベントでは GetAsyncKeyState を使うと便利でしょう。
左右のシフトを区別することもでき、あらゆるキーの ON/OFF を判別することもできます。

GetAsynckeyState(VK_SHIFT) < 0 ← シフトが押されている場合は True

----------
東京都 日野市 中村拓男

hiro

unread,
Oct 27, 2008, 7:55:04 AM10/27/08
to Del...@ml.users.gr.jp
ありがとうございます
>OnMouseDown や OnMouseUp の Shift パラメータ の ssShift を見れば、Shift が押されているかどうか
ですが具体的なShift パラメータ の ssShiftの見方がわからなかったので
> GetAsynckeyState(VK_SHIFT) < 0 ← シフトが押されている場合は True
で実現できました

procedure TTest.Image1Click(Sender: TObject);
begin
if GetAsynckeyState(VK_SHIFT) < 0 then
begin
ShowMessage('VK_SHIFT True');
end
else
if not (GetAsynckeyState(VK_SHIFT) < 0) then
begin
ShowMessage('VK_SHIFT False');
end;
end;
いろいろに応用ができそうなので有り難いアドバイスでした
ありがとうございました hiro


takashi

unread,
Oct 27, 2008, 8:12:28 AM10/27/08
to Del...@ml.users.gr.jp
> ですが具体的なShift パラメータ の ssShiftの見方がわからなかったので

サンプルです。in を使って調べられます

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;


Shift: TShiftState; X, Y: Integer);

begin
if ssShift in Shift then
Label1.Caption := 'SHIFT ON'
else if ssCtrl in Shift then
Label1.Caption := 'CTRL ON'
else
Label1.Caption := 'NOT';
end;


--
takashi <taka...@csjpn.com>


hiro

unread,
Oct 27, 2008, 9:12:06 PM10/27/08
to Del...@ml.users.gr.jp
hiroです
キー操作の幅が広がりました
ありがとうございましたm(__)m

----- Original Message -----
From: "takashi" <taka...@csjpn.com>
To: <Del...@ml.users.gr.jp>

COOK2

unread,
Oct 28, 2008, 1:46:48 AM10/28/08
to Del...@ml.users.gr.jp
COOK2です。

以下のページを見つけました。
http://www.interq.or.jp/moonstone/person/del/mouse.htm

takashiさんの情報とかとだぶりますがどうぞ。


hiroです
キー操作の幅が広がりました
ありがとうございましたm(__)m

Reply all
Reply to author
Forward
0 new messages