zoukankan      html  css  js  c++  java
  • 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.
    

      

  • 相关阅读:
    详解 字符转换流
    详解 编码和解码
    详解 字符流
    详解 序列输入流
    详解 数据输入输出流
    八皇后
    这次我们从底层把线程说清楚
    四数之和递归
    PCB 内网实现《OCR文字识别》实现逻辑
    PCB 线路板人生
  • 原文地址:https://www.cnblogs.com/xiefang2008/p/5275905.html
Copyright © 2011-2022 走看看