2012-01-27 7 views
1

どの入力デバイスが特定のGUIイベントをトリガーしたかを簡単に知る方法があるのでしょうか?Delphiで特定のイベントを引き起こしたデバイスを特定する方法を教えてください。

たとえば、TButton.OnClickイベントが発生します。ユーザーがキーボードプレス(ショートカット、デフォルトボタンの場合はEnterキー、フォーカスのあるボタンの場合はspaceキーなど)を使用してトリガーしましたか、それともマウスのクリックでトリガーされましたか?簡単な方法はありますか?

私が知りたいのは、ユーザーがマウスを使ってキーボードでも行える操作を開始したときに、キーボードの使用方法のヒントを実装できるということです。ショップフロアにある私たちのシステムはかなり埃が多い/汚れた環境にあり、マウスはあまりうまく機能しません。また、多くの場合、単にマウスを使用する余地はあまりありません。 (いいえ、テンキーパッドのないキーボードは解決策ではありません)。

しかし、私たちのアプリはWindowsで動作するので、ユーザーは自宅のように簡単にプログラムを使用する傾向があります。マウス。特にそれには何も問題はありませんが、入力ワークフローをキーボードフレンドリーに最適化するために努めてきました。それは、マウスをつかむことなく彼らがやっていることをやり遂げる方法があることをユーザに示すために、インパクトの少ない方法があれば、いいだろう。

+0

キーボードアクセスを示す標準的な方法を使用してみませんか? –

+0

@DavidHeffernan:など?できるだけ標準のキーボードショートカットを使用し、デフォルトのボタンを使用し、UIアクションを可能な限りバックするために 'TAction'(または子孫)を使用します。しかし、私はあまりにも多くの画面スペースしか持っていないので、UI全体にショートカット情報を追加することに専念することはできません。ユーザーが「項目を追加」ボタンをクリックしたときに画面上にヒントショーを表示したいと思っています。「項目を追加するために「挿入」を押すこともできます。 – afrazier

+0

ヒントのショートカットを表示します。 VCLがそれを行います。アクセラレータキーを使用します。ユーザーにそれを発見させてください。それらに力を入れないでください。 –

答えて

4

OnClickの中には通知方法がありません。しかし、マウスをロールオーバーしたときに起動するコントロールにイベントをアタッチすることもできます。これはおそらく、何をしようとしているのかにより適しています。 OnMouseEnterOnMouseLeaveイベントを見てください。また、マウスをクリックしたときに特定のものが実際に発生するようにしたい場合は、OnMouseUpに添付することができます。

+0

...および/または 'OnMouseDown'。合理的に聞こえる! –

+1

@Andriy:「OnMouseDown」は、一貫性の観点からはあまり良いアイデアではありません。 *をクリックしてコントロールをリリースすると、ユーザーは「クリック」することになります。 –

+1

「OnMouseUp」は、その点でもっと良い選択です。しかし、私はOnMouseDownを、マウスを使用する頻度を指摘するビジネスにおいて、OnMouseUpに代わるもの(またはおそらく補足物)として意味しました。主なアクションは 'OnClick'で処理されますが、これはあなたがあまりにも意味するものと推測しています。もちろん私の前提では間違っているかもしれませんが、私は混乱を招いて申し訳ありません! –

関連する問題