2011-03-31 5 views
6

바로 가기 키, 툴바 버튼, 팝업 메뉴 버튼 등 사용자가 액션 (TAction) 실행을 트리거하는 방법은 많습니다. 정보를 얻을 수 있습니까? 조치가 실행되었습니다.TAction이 어느쪽으로 해고 되었습니까?

GUI에서 다른 기능을 사용하는 가장 일반적인 방법을 알아내는 활동 로그 구현에 대해 생각하고 있습니다.

갱신

내가 사용자가 응용 프로그램의 GUI와 상호 작용하는 방법에 대한 몇 가지 통계를 수집 할 필요가있다.

로깅을 구현해야하기 때문에 모든 버튼에 대해 별도의 작업을 만드는 것은 좋지 않습니다. Ulrich Gerhardt의 대답이 적합 해 보입니다. TActionList.OnExecute 이벤트에 핸들러를 할당하고 한 곳에서 로그를 작성할 수 있습니다.

+3

당신이 이것을 알고 싶다면 디자인이 깨졌습니다. –

+3

알려지지 않은 애플리케이션 디자인을 인식 할 수있는 텔레파시 능력에 감탄합니다. –

+1

버튼 누르기가 메뉴 클릭과 다르게 동작하게하려면 다른 동작입니다. –

답변

11

어쩌면 당신은 ActionComponent를 사용할 수 있습니다

사용 ActionComponent이 클라이언트 구성 요소가 이 작업을 실행 일으킨 식별 할 수 있습니다. 예를 들어 사용자 작업이이 작업을 트리거 한 내용을 알아야 할 경우 OnExecute 이벤트 처리기에서 ActionComponent를 검사합니다.

사용자가 클라이언트 컨트롤을 클릭

, 클라이언트 그 작업의가 Execute 메서드를 호출하기 전에 ActionComponent 을 설정합니다. 액션이 실행 된 후 액션은 ActionComponent를 nil (Delphi) 또는 NULL (C++)으로 재설정합니다.

TApplication.OnActionExecute, TActionList.OnExecute 및 아마도 "후크"가 있습니다.

+0

고마워, 그 재산에 대해 잊어 버렸어. 그것은 내 필요에 거의 완벽하게 부합합니다. 그러나 바로 가기 키는 어떻습니까? 이 경우 ActionComponent에 어떤 값을 할당할까요? –

+0

바로 가기 키가 항상 구성 요소에 바인딩되는 것은 아닙니다. Windows 및/또는 Delphi에서 생성 할 수 있습니다. 필요한 이유를 설명하고 더 나은 방법으로 앱을 디자인하도록 도울 수 있습니다. –

+2

키보드로 동작을 호출 할 수있는 여러 가지 방법을 찾기가 어렵습니다. 바로 가기 일 수 있습니다. 가속기 일 수 있어요. 커서/탭 키를 사용하여 탐색 할 수 있습니다. –

관련 문제