2013-10-29 2 views
1

를 추가 한 후 비활성화 된 상태를 업데이트하지 : 델파이 XE2를, 32 비트 Windows VCL은 액션 매니저에서 응용 프로그램을ActionMainMenuBar 메뉴 항목을 수동으로 사용하여 작업 항목

을 형성, 나는 작업을 추가하고, 카테고리 이름을 할당했습니다. 그런 다음 ActionManager에서 폼의 ActionMainMenuBar로 범주를 끌어다 놓습니다. ActionMainMenuBar에 메뉴 항목을 만들 때이 작업을 수행했습니다. 코드를 통해 수동으로 작업을 만들고 추가 할 계획이고 '첫 번째'작업에 대한 실제 사용이 없기 때문에 나는 Visbile := False으로 설정하여 숨 깁니다.

그러나 런타임에 프로그래밍 방식으로 동작을 만들고 메뉴에 추가 한 후에도 메뉴는 비활성화 된 상태로 유지됩니다. 추가 된 동작이 활성화되어 있고 유효한 OnExecute 이벤트 처리기가 있기 때문에 예상하지 못한 것입니다.

내 질문은 어떻게 하나 이상의 작업 항목 (하위 메뉴 항목)을 추가 한 후에 활성화되도록 메뉴 항목을 새로 고칠 수 있습니까?

: 여기

// Create menu for each session in the Session menu 
    // eg. Session 1, Session 2, Session 3 etc. 
    var 
    p: Integer; 
    s: String; 
    begin 
    // this code executes a number of times ie in a loop 
    p := Pos(' ', s); 
    a := TAction.Create(actMgr); 
    a.Category := 'Session'; 
    a.Name := 'actSession' + Copy(s, p + 1, Length(s) - p); 
    a.Caption := 'Session ' + Copy(s, p + 1, Length(s) - p); 
    a.Enabled := True; 
    a.OnExecute := actSessionExecute; 

    p := ActionMainMenuBar1.ActionClient.Items[3].Items.Count - 1; 
    actMgr.AddAction(a, ActionMainMenuBar1.ActionClient.Items[3].Items[p]); 

    end; 


    procedure TfMain.actSessionExecute(Sender: TObject); 
    begin 
    showmessage(TAction(Sender).Name); 
    end; 

디자인 모드에서 ActionMainMenuBar의 액션 매니저 및 (False로 보이는 세트가) 초기 작업의 화면 캡처입니다 : 코드에서

,이이 This is what it looks like initially in design mode

TIA.

답변

0

작업 항목을 추가 한 후 ActionMainMenuBar1.ActionClient.Items[3].CommandStyle := csMenu;을 호출하면 명령 속성이 다시 만들어 지므로 세션 범주에 액세스 할 수 있습니다.