2012-05-01 2 views
4

나는 TActionManager 하나를 공유하고 싶고 TAction -s를 할당하고 싶은 두 가지 형식이 있습니다.다른 양식에 대한 이름 바꾸기

첫 번째 양식은 기본 양식이며 "동작"캡션이있는 TActionManager, TAction입니다.

Form1의 주 메뉴에는이 작업과 menuitem 캡션 속성이 "작업 A"로 설정되어 있습니다. Form2는 Form1을 포함하고 action을 menuitem에 할당하고 caption은 "Action B"로 설정됩니다.

디자인 타임 동안 Form1과 Form2에서 메뉴 항목의 이름이 "동작 A"와 "동작 B"로 지정되고 동일한 동작이 할당됩니다. 또한 런타임 동안 잘 작동합니다 (OnExecute는 두 양식 모두에 대해 올바르게 처리됩니다).

그러나 런타임 중에 Form1 메뉴 항목에는 캡션 "Action A"가 있고 Form2에는 작업 캡션과 마찬가지로 메뉴 항목 캡션 "Action"이 있습니다.

내가 잘못 포함하고 있습니까? Form2에 Form1을 포함 시켜서 작업을 공유하고 캡션을 변경할 수 있습니까? D2010/CB2010의 버그입니까?

예 :

  1. 를 Form1과 Form2를 만들기 Form1에 모두
  2. 드롭 TActionManager의에 주 메뉴를 추가하고 그 안에 조치 1을 만듭니다. 자막 수정을 Form1 조치 1 및 그 후
  3. 지정 메뉴 항목 (Form1에 TActionManager의 행)과 같은 형식 2 조치 1에서
  4. 지정 메뉴 항목 (캡션 디폴트 값으로부터 변화를 나타내는 현재 굵게 표시됨)과 같은 기본 자막을 변경. 런타임 동안
  5. 해주기 Form1이 (Action1.Caption 상이한) 캡션을 변경하고, 단계 4
+1

델파이 2009에서는 정상적으로 작동하는 것 같습니다. 'TAction.Caption'을 변경하면 두 테스트 양식의 메뉴 항목 캡션이 변경되었습니다. – TLama

+1

@TLama 메뉴 항목의 캡션이 이전에 변경되지 않은 경우 (물론 Action 속성을 설정 한 후에 만). – NGLN

+0

@NGLN, 언급하는 것을 잊어 버렸습니다. 감사! – TLama

답변

5

문제가 재현되어 이상하게 생겼습니다. 명백한 문제 외에도 왜 메뉴 항목의 캡션을 변경하려면 다음 해야 일 :

설정 같은 행동을 두 메뉴 항목의 Action 속성입니다. 이제 메뉴 항목의 캡션이 해당 항목의 캡션과 연결되어 더 이상 저장되지 않습니다 (개체 관리자에서 굵게 표시되지 않음). 그런 다음 메뉴 항목의 캡션을 독립된 값으로 변경하고 현재 저장되어 있고 메뉴 항목이 실제로 디자인 타임에 따라 변경된다는 점에 유의하십시오.

그러나 런타임에 두 번째 menuitem의 캡션은 실제로 작업의 캡션을 다시 따릅니다. 내 생각에 이런 일이 있어서는 안됩니다.

내가 재생산하지 못한 것은 런타임에 그것을 변경하는 것이 불가능하다는 것입니다. 예상대로 작동합니다 (여기 D7) :

procedure TForm2.FormCreate(Sender: TObject); 
begin 
    mnuAction1.Caption := 'Action B'; 
end; 

확실한 동작 대신 메뉴 항목의 캡션이 변경됩니까?

+0

2007 년과 동일한 문제입니다. –

+0

예, 저 역시 저에게 잘 맞았습니다 ... (C++의) 생성자에 새로운 이름을 넣은 다음 FormCreate에 적절한 캡션을 사용했습니다. – Coder12345

2

TAction.Caption 증감 캡션 새로운 값이어야하지만 형식 2는 Action1.Caption 동일 캡션을 갖는다 액션이 메뉴 항목에 연결되거나 액션 캡션이 변경 될 때 TMenuItem.Caption을 재정의합니다. 양식로드 된 메서드에서 메뉴 항목 캡션을 변경하면 두 가지 형식에 대해 서로 다른 캡션을 사용할 수있게됩니다.

+1

동의하지 않습니다. Action 속성을 설정 한 후에 변경된 메뉴 항목 캡션은 변경된 상태로 유지되어야합니다. – NGLN

+0

그리고 그들은 Form1하지만 Form2 않습니다. 값이 기본값 (이 경우 기본값은 Action1.Caption)에서 변경되었음을 나타내는 아래 답변에서 말한 것처럼 IDE에서도 굵게 표시됩니다. 이것은 아마도 Delphi/C++ Builder의 버그 일 것입니다. XE/XE2에서 이것을 테스트하지 않은 경우에도 여전히 그렇습니다. – Coder12345