补充说明:

此问题已经在新版本中解决(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.

  

Ribbon 窗体的 MDI 子窗体使用 TabbedMDIManager 切换时工具条闪屏问题的解决办法的更多相关文章

  1. 解决WinForm(C#)中MDI子窗体最大化的问题

    “用MDI方式打开一个子窗口体后,总是不能最大化显示,明明子窗口体的WindowState设置为Maximized?”,相信有很多人会遇到这的样问题,请按下面的方法设置即可使MDI子窗体最大化: 1. ...

  2. Delphi中实现MDI子窗体(转)

        Delphi中实现MDI子窗体 用MDI实现浏览子窗口,具有窗口管理功能,同屏观看多个网页的内容  ① 多文档窗体(MDI) MDI窗体是一种具有主子结构的窗体体系,微软的Word便是其中的一 ...

  3. 保证相同类型的MDI子窗体只会被打开一次的方法

    本文转载:http://www.cnblogs.com/Ricky81317/archive/2008/09/17/1292443.html 看到论坛中有朋友问,如何可以保证在MDI主窗体中,同一类型 ...

  4. 在DLL动态链接库中封装VCL的MDI子窗体

    在DLL动态链接库中封装VCL的MDI子窗体不多说了,看代码就应该明白了,曾经我遇到的问题,现在放出来大家共享! 这里是工程文件的部分: 在DLL中封装MDI子窗体需要重写DLL入口函数,具体代码如下 ...

  5. Delphi MDI 子窗体的创建和销毁 [zhuan]

    1.如果要创建一个mdi child,先看是否有这个child 存在,如果有,则用它,如果没有再创建 //该函数判断MDI 子窗体是否存在,再进行创建和显示function isInclude(for ...

  6. 解决WinForm(C#)中MDI子窗体最大化跑偏的问题

    “用MDI方式打开一个子窗口体后,总是不能最大化显示,明明子窗口体的WindowState设置为Maximized?”,相信有很多人会遇到这的样问题,请按下面的方法设置即可使MDI子窗体最大化: 1. ...

  7. 用DLL方式封装MDI子窗体

    用DLL方式封装MDI子窗体是一种常用的软件研发技术,他的长处: 研发人员能够负责某一个模块的编写包括(界面+逻辑),能够互不干扰,模块研发完成后,主程式统一调用. 易于程式升级,当程式升级时,不用编 ...

  8. winform里操作打开在panel里的form窗体,子窗体操作同级子窗体或者父窗体的方法

    最近开始了一个winform项目,原先一直都是web项目.遇到个问题,就是在框架内,左侧和中间的main都是用panel来实现的form,就是把form窗体打开到panel里,实现左侧是导航,中间是操 ...

  9. 主窗体里面打开子窗体&&打印饼图《Delphi 6数据库开发典型实例》--图表的绘制

    \Delphi 6数据库开发典型实例\图表的绘制 1.在主窗体里面打开子窗体:ShowForm(Tfrm_Print); procedure Tfrm_Main.ShowForm(AFormClass ...

随机推荐

  1. Java [Leetcode 160]Intersection of Two Linked Lists

    题目描述: Write a program to find the node at which the intersection of two singly linked lists begins. ...

  2. function 中定义函数的默认返回值,

    result有默认值的int类型的为0,string类型的为‘’,tobject类型的为nil等等

  3. POJ 1312 Numerically Speaking

    题意:a = 1, b = 2, ..., z = 26, aa = 27, ... 给字符串或者数字,输出对应的答案. 解法:类似26进制……但又不完全是……拿java大数模拟了一下…… 代码: i ...

  4. hashCode之一--两个对象值相同,有相同的hash code

    两个对象值相同(x.equals(y) == true),则一定有相同的hash code. 这是java语言的定义:  因为:Hash,一般翻译做“散列”,也有直接音译为"哈希" ...

  5. 【Android】以BaseAdapter做适配器的ListView及其性能优化

    适配器的Java类 package com.app.adapter; import org.json.JSONArray; import org.json.JSONObject; import and ...

  6. awk简单使用『摘.非原创』

    1 awk简介 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入.一个或多个文件,或其它命令的输出.它支持用户自定义函数和动态正则表达式等先进功能,是lin ...

  7. 求职基础复习之快速排序c++版

    #include<iostream> using namespace std; int partition(int a[],int p,int q){ int x = a[q]; ; fo ...

  8. JQuery插件之图片轮播插件–slideBox

    来源:http://www.ido321.com/852.html 今天偶然发现了一个比较好用的图片轮播插件—slideBox 先看看效果:http://slidebox.sinaapp.com/ 代 ...

  9. Tkinter教程之Listbox篇

    本文转载自:http://blog.csdn.net/jcodeer/article/details/1811310 #Tkinter教程之Listbox篇#Listbox为列表框控件,它可以包含一个 ...

  10. Directory.GetCurrentDirectory

    1.一个应用程序中,Directory.GetCurrentDirectory获得的当前工作目录是C:\Windows\System32,这是为什么呢?是如何设置的? 2.在WinXP下:System ...