를 추가 한 후 비활성화 된 상태를 업데이트하지 : 델파이 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로 보이는 세트가) 초기 작업의 화면 캡처입니다 : 코드에서
,이이
TIA.