2014-09-25 6 views

답변

3

당신은 일을 잘못하고 있습니다. :-)

액션을 사용할 때 버튼의 OnClick 이벤트를 사용하지 않습니다. 대신 액션의 OnExecute 이벤트에 코드를 삽입합니다 (실행중인 행동, 즉 버튼이 아니기 때문에). 작업이 컨트롤에 할당되면 TAction.OnExecute에 대한 처리기가 있어야 컨트롤을 사용할 수 있습니다.

작업을 사용하는 이유는 코드를 단일 장소 (작업과 관련된 이벤트)에 넣을 수 있기 때문에 해당 작업에 연결된 모든 단일 컨트롤이 동일한 코드를 사용하여 동일한 기능을 수행하기 때문입니다. 해당 단일 위치에서 코드를 편집하면 해당 동작에 첨부 된 모든 컨트롤이 동일한 변경 사항을 보게됩니다.

TAction.OnExecute 이벤트에 아무 것도 첨부되어 있지 않은 경우 컨트롤을 선택 (클릭)하면 아무 것도 수행되지 않으므로 컨트롤을 처음 사용하도록 설정할 이유가 없습니다.

+1

DisableIfNoHandler를 참조하십시오. –

+0

OnClick은 Delphi에서 추가되었으며 ActionOnExecute 프로 시저로 설정됩니다. –

+0

@DanKelly : 아니요, Object Inspector에서 두 번 클릭하고 * ActionOnExecute 프로 시저로 설정할 때 OnClick이 * * 추가되었습니다. (IDE가 일부 코드를 생성했을 수도 있지만 * your * actions의 결과였습니다.) 다시는 그렇게하지 마십시오. :-) OnClick 핸들러를 삭제하십시오 (begin..end 사이의 코드를 제거하고 빈 줄을 남기고 모든 var 문을 제거한 다음 컴파일하십시오. * 일단 * 버튼에 대한 OnClick 이벤트를 생성하면,'ActionOnExecute' –