1

如何启用使用 Delphi 在快速访问栏中单击更多命令按钮后禁用的功能区按钮?

4

2 回答 2

8

这是一个已知的错误

质量中心报告 70342:

使用 Ribbon Controls 时,如果添加快速访问工具栏,然后在运行时选择“更多命令”来自定义快速访问工具栏,则各种功能区组中的许多(尽管不是全部)操作组件将永久禁用。

有关更多信息,请参阅报告本身:http: //qc.embarcadero.com/wc/qcmain.aspx?d= 70342

该报告仍处于打开状态,所以我可能在 D2011 中也没有解决,但 Quality Central 可能有点落后。

更新

该报告指出没有解决方法,但 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;
于 2010-08-26T17:55:23.680 回答
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;
于 2011-06-19T20:07:12.437 回答