2012-01-27 2 views
1

어떤 입력 장치가 특정 GUI 이벤트를 트리거했는지 쉽게 알 수있는 방법이 있는지 궁금합니다.Delphi에서 특정 이벤트를 트리거 한 장치를 확인하는 방법은 무엇입니까?

예 : A 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'이 분명 더 좋습니다. 그러나 나는 마우스를 사용하는 빈도를 알아 차리는 사업에서'OnMouseUp'에 대한 대안으로 (또는 아마 보충으로)'OnMouseDown'을 의미했습니다. 주요 동작은 여전히 ​​'OnClick'으로 처리됩니다. 이는 내가 의도 한 것입니다. 나는 당연히 잘못 생각할 수도 있습니다. 혼란 스러울 경우 미안 해요! –

관련 문제