如何使用Delphi在快速访问栏中单击 more命令按钮后启用禁用的功能区按钮?
答案 0 :(得分:8)
这是一个已知的错误
Quality Central报告70342:
使用功能区控件时,如果使用 添加一个快速访问工具栏,然后 在运行时选择“更多命令” 自定义快速访问工具栏, 许多(虽然并不总是全部)的 各种功能区中的动作组件 团体将成为永久的 禁用。
请参阅报告本身以获取更多信息: http://qc.embarcadero.com/wc/qcmain.aspx?d=70342
报告仍然开放,所以我在D2011中可能也没有解决,但质量中心可能会落后一点。
<强>更新强>
报告指出没有解决方法,但Jack Sudarev在评论中发表了一篇文章:
procedure TForm6.ActionManager1StateChange(Sender: TObject);
begin
UpdateActions(ActionManager1);
end;
procedure TForm6.UpdateActions(ActionManager: TActionManager);
var
i: Integer;
begin
if not Assigned(ActionManager) then
Exit;
for i := 0 to ActionManager.ActionCount - 1 do
begin
(ActionManager.Actions[i] as TAction).Enabled := False;
(ActionManager.Actions[i] as TAction).Enabled := True;
end;
end;
答案 1 :(得分:1)
这就是我所做的:
procedure TmainTranslatform.MyUpdateActions(ActionManager: TActionManager);
var
i: Integer;
begin
if not Assigned(ActionManager) then
Exit;
for i := 0 to ActionManager.ActionCount - 1 do
begin
if (ActionManager.Actions[i] is TFileOpen) then
begin
(ActionManager.Actions[i] as TFileOpen).Enabled := False;
(ActionManager.Actions[i] as TFileOpen).Enabled := True;
end;
if (ActionManager.Actions[i] is TAction) then
begin
(ActionManager.Actions[i] as TAction).Enabled := False;
(ActionManager.Actions[i] as TAction).Enabled := True;
end;
end;
end;