如何保证一个MDI子窗口一直最大化(100分)

  • 主题发起人 savetime
  • 开始时间
S

savetime

Unregistered / Unconfirmed
GUEST, unregistred user!
有多个MDI子窗口同时显示在MDI窗口内,但有一个窗口无论其它子窗口的窗口状态如何都<br>必须是最大化的。<br>我通过捕获该窗口的WM_WINDOWPOSCHANGING事件中设置WindowState = wmMaximized可以<br>部分实现,但如果其它某一子窗口状态成为还原时,该窗口也被还原。<br>谁能解决这一问题。
 
<br>在该MDIChild的OnPaint事件中加入代码。
 
试试覆盖MDI子窗口的这个过程:<br>procedure CreateParams(var Params: TCreateParams); override;<br>通过 Params 来改变窗口的属性(风格)<br>用一全局变量来控件是否是第一个子窗口。<br>
 
我感觉控制子窗口的最大最小化要重写主窗口的某个事件(该事件设置子窗口的状态),<br>但我不知道是哪个事件。
 
好像不行吧!<br>
 
[?]<br>被骂了。看来以后要多订邮件,不然被骂了也不知道。[:(]<br>如果我不对,应该指出哪不对啊。<br><br>在必须最大化的MDIChild的OnPaint事件中<br>WindowState := wsMaximized
 
&gt;被骂了。看来以后要多订邮件,不然被骂了也不知道。[:(]<br>&gt;如果我不对,应该指出哪不对啊。<br>&gt;在必须最大化的MDIChild的OnPaint事件中<br>&gt;WindowState := wsMaximized<br><br>对不起,我最近吃多了辣椒。<br>你的方法根本行不通,你自己试试。<br>即使我不试验,你的方法也是非常不可取的,OnPaint事件太频繁被调用,怎么可能在这里<br>最大化?不考虑根本原理的程序员何以能写出高质量的程序?
 
//一个窗口无论其它子窗口的窗口状态如何都必须是最大化的。<br>如果一个始终是最大化的,那么你是如何操作其它子窗口的?<br>
 
<br>说得好!<br>如果我能给你代码,那代码就能实现所要的功能。至少从原理上说是可以实现的。<br>加上判断语句吧。<br>&nbsp; if WindowState &lt;&gt; wsMaximized then<br>&nbsp; &nbsp; WindowState := wsMaximized;
 
在必须最大化的MDIChild的OnResize事件中<br>WindowState := wsMaximized
 
不知道这样可不可以<br>WindowState := wsMaximized<br>然后,去 掉 窗体的最小化
 
<br>TImage能保存原有的图像,就是在WM_paint中实现。<br><br>如果觉得不好,就试试下面方法。<br>&nbsp; private<br>&nbsp; &nbsp; { Private declarations }<br>&nbsp; &nbsp; procedure Test(var Msg: TWMSize);message WM_SIZE;<br><br>procedure TForm2.Test(var Msg: TWMSize);<br>begin<br>&nbsp; inherited;<br>&nbsp; if WindowState &lt;&gt; wsMaximized then<br>&nbsp; &nbsp; WindowState := wsMaximized;<br>end;
 
》如果一个始终是最大化的,那么你是如何操作其它子窗口的?<br>我先建立一个必须最大化的子窗口,然后建立一个子窗口,让它的状态为还原<br>或最小化,该最大化窗口状态必须仍为最大化,但未Active罢了。<br>天心ERP的界面就是这样。<br>
 
》 &nbsp;if WindowState &lt;&gt; wsMaximized then<br>》 &nbsp; &nbsp;WindowState := wsMaximized;<br>写WindowState属性时Forms.pas会判断 WindowState 是否需要设置。<br><br>说WM_SIZE事件的人都没有考虑原理,我在问题中已经写了WM_WINDOWPOSCHAHGING,其它<br>判断窗口大小的事件有什么用?
 
在 Params &nbsp;中不让它改变大小,不就行了。
 
是的。不应该在改变大小后再做。[:)]<br>
 
to jsxjd, 如何做?
 
http://loqi.myetang.com/down/mdi.zip<br>我的这个程序(包含源码)是为了解答一位富翁朋友而作的,完全可以完成你的要求<br>这个Demo是用一个网页作为MDI的背景的,并且还可以点击网站链接。<br>你的要求其实比这个简单多了,看看吧
 
可以让这个窗口一直占据客户区的全部,<br>并且让它没有窗口边框和标题栏(通过CreateParams),<br>在PB中加MDI背景往往就是这样的<br><br>
 
顶部