看看这个对你有没有用吧 作者: 轻舞肥羊 标题: 解决MDI子窗体建立时动画闪烁问题 关键字: MDI 分类: 开发经验 密级: 公开 (评分: , 回复: 0, 阅读: 262) »» MDI子窗体如果在设计期最大化,那么在建立窗体的时候会有一个从普通状态到最大化的动画 过程,如果MDI子窗体上的控件太多则会发生比较强的闪烁现象,下面实现一个基类解决此问题, 机制是通过锁定MDI主窗口的更新来实现,缺点是要引用MDI主窗体或使用全局变量记录句柄. http://www./delphibbs/dispq.asp?lid=2066407 type TFrmBaseMDIChild = class(TForm) public constructor Create(AOwner: TComponent);reintroduce;override; end; constructor TFrmBaseMDIChild.Create(AOwner: TComponent); begin //MDIMainForm为MDI主窗体,如果不想引用,可以用全局变量保存 LockWindowUpdate(MDIMainForm.Handle); try inherited; finally LockWindowUpdate(0); end; end; 另外一种解决方法(好象有问题,有待测试) 覆盖CreateNew方法来解决,缺点是设计期指定的FormState属性无效. 一定要在代码中指定.否则覆盖这个方法就失去了意义. type TFrmBaseMDIChild = class(TFrmBase) public constructor CreateNew(AOwner: TComponent; Dummy: Integer = 0);reintroduce;override; end; constructor TFrmBaseMDIChild.CreateNew(AOwner: TComponent; Dummy: Integer); begin inherited; WindowState := wsMaximized; //这里指定状态为最大化,不会产生闪烁 end; |
|