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.
    

      

  • 相关阅读:
    HDU 1010 Tempter of the Bone(DFS剪枝)
    HDU 1013 Digital Roots(九余数定理)
    HDU 2680 Choose the best route(反向建图最短路)
    HDU 1596 find the safest road(最短路)
    HDU 2072 单词数
    HDU 3790 最短路径问题 (dijkstra)
    HDU 1018 Big Number
    HDU 1042 N!
    NYOJ 117 求逆序数 (树状数组)
    20.QT文本文件读写
  • 原文地址:https://www.cnblogs.com/xiefang2008/p/5275905.html
Copyright © 2011-2022 走看看