Delphi 如何禁用TdxRibbon中的控件(DevExpress ribbon控件)?

Delphi 如何禁用TdxRibbon中的控件(DevExpress ribbon控件)?,delphi,devexpress,ribbon,Delphi,Devexpress,Ribbon,我的Delphi应用程序中有一个DevExpress VCL功能区 该应用程序不时会进行一些更新,在此期间,我需要确保用户不会做任何事情,因此我希望能够禁用功能区上的所有控件,但我无法让每个选项卡上的控件计数正常工作 无论我如何操作,ComponentCount都返回0,但我可以看到控件。 我的测试代码如下所示: procedure TfrmMain.RibbonDisable(var aMessage: TMessage); var i: integer; begin try

我的Delphi应用程序中有一个DevExpress VCL功能区 该应用程序不时会进行一些更新,在此期间,我需要确保用户不会做任何事情,因此我希望能够禁用功能区上的所有控件,但我无法让每个选项卡上的控件计数正常工作

无论我如何操作,ComponentCount都返回0,但我可以看到控件。 我的测试代码如下所示:

procedure TfrmMain.RibbonDisable(var aMessage: TMessage);
var
  i: integer;
begin
  try
    for i := 0 to ribMain.TabCount - 1 do
      begin
        ribMain.Tabs.Items[i].Active := True;
        ShowMessage(IntToStr(ribMain.ActiveTab.ComponentCount));
      end;
  except
    on E:exception do
      Logfile.Error('frmMain.RibbonDisable: ' + E.Message);
  end;
end;
只需在执行更新时禁用整个系统:

ribMain.Enabled := False;
或者,如果确实要仅禁用选项卡项,请使用以下命令:

procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
begin
  for I := 0 to ribMain.BarManager.ItemCount - 1 do
    ribMain.BarManager.Items[I].Enabled := False;
end;

几乎每个工具栏控件都有一个共同点,那就是您禁用的是操作,而不是显示的内容。

什么版本的VCL DevXpress?可能他们希望您使用操作。@Warren p我不确定您所说的操作是什么意思?我使用了第二种解决方案,因为它向用户指示某些内容正在显示(按钮呈灰色)