• Ribbon 窗体的 MDI 子窗体使用 TabbedMDIManager 切换时工具条闪屏问题的解决办法


    补充说明:

    此问题已经在新版本中解决(15.2.6),方法更加简单,只需要在 MDIChild 窗体的 Create 方法中,将 Ribbon 的 Visible 属性设置为 false 就可以了,且无刷新。

    ----------------------------------------------------------------------------------------------------

    以下为历史的解决方案

    ----------------------------------------------------------------------------------------------------

    当 MDI 主窗体和子窗体都有 Ribbon ,且使用了 TabbedMDIManager 以 Tab 页的形式显示子窗体,在切换子窗体时,会在客户区闪现 ribbon 工具条。

    查 DevExpress 网站,解决办法如下:

    1、主窗体使用 TRibbonForm。

    主窗体创建子窗体时示例代码如下

    function TMainForm.CreateScriptEditorTab(pCaption: string): TScriptEditorTabSheet;
    var
      tabSheet: TScriptEditorTabSheet;
      se: TScriptEditor;
    begin
      Ribbon.BeginUpdate;
      BarManager.BeginUpdate;
      se := TScriptEditor.Create(Application, Self);
      BarManager.EndUpdate();
      ribbon.EndUpdate;
    end;
    

      

    2、子窗体使用普通 TForm。

    type
      TScriptEditor = class(TForm)
        BarManager: TdxBarManager;
        RibbonTab_Start: TdxRibbonTab;
        Ribbon: TdxRibbon;
        BarManagerBar1: TdxBar;
        menuItem_ExecuteScript: TdxBarLargeButton;
        QueryEditor: TQueryEditor;
        procedure FormActivate(Sender: TObject);
        procedure menuItem_ExecuteScriptClick(Sender: TObject);
      private
        Framework: IFramework;
      public
        constructor Create(AOwner: TComponent; pFramework: IFramework); overload;
        procedure UpdateRibbonMessage(var Message: TMessage);message UM_CHILD_RIBBON_MESSAGE;
      end;
    
    implementation
    
    {$R *.dfm}
    
    { TScriptEditor }
    
    constructor TScriptEditor.Create(AOwner: TComponent; pFramework: IFramework);
    begin
      inherited Create(AOwner);
      Framework := pFramework;
    end;
    
    procedure TScriptEditor.FormActivate(Sender: TObject);
    begin
      Framework.RibbonObject.BeginUpdate;
      PostMessage(Handle, UM_CHILD_RIBBON_MESSAGE, 0, 0);
    end;
    
    procedure TScriptEditor.menuItem_ExecuteScriptClick(Sender: TObject);
    begin
      QueryEditor.Execute;
    end;
    
    procedure TScriptEditor.UpdateRibbonMessage(var Message: TMessage);
    begin
      Framework.RibbonObject.EndUpdate;
    end;
    
    end.
    

      

  • 相关阅读:
    python数据类型三(字典)
    python数据类型二(列表和元组)
    python数据类型一(重点是字符串的各种操作)
    python基础二
    jquery validate学习心得
    Block 朴实理解
    Block 使用场景
    Block 进阶
    MD5加密
    SQL语句中 chinese_prc_CS_AI_WS 以及replace用法
  • 原文地址:https://www.cnblogs.com/xiefang2008/p/5275905.html
Copyright © 2020-2023  润新知