求助!大家快点来帮帮我啊!!(100分)

  • 主题发起人 主题发起人 nicet
  • 开始时间 开始时间
如果还不能解决,也不要问了,我要走了。[:8D]
 
try<br>&nbsp; &nbsp; Hide;<br>&nbsp; &nbsp; Application.NormalizeAllTopMosts;<br>&nbsp; &nbsp; LitterWin.ShowModal;<br>&nbsp; &nbsp; Application.RestoreTopMosts;<br>finally<br>&nbsp; &nbsp; show;<br>end;<br><br>这个是放在哪里?form2的shown里面么?
 
当然是form1的button1.onclick中了
 
eagle_han,谢谢
 
eagle_han,<br>&nbsp; &nbsp; LitterWin.ShowModal;中的LitterWin应该换成什么呢?
 
SetWindowPos肯定可以的, &nbsp;注意下面的handle是属于那一个窗体的<br>SetWindowPos(Form2.handle, hwnd_topmost, 0, 0, 0, 0, swp_nomove or swp_nosize)<br><br>procedure TForm1.mnuProgramInTopClick(Sender: TObject);<br>begin<br>&nbsp; if mnuProgramInTop.Checked =true then &nbsp;//mnuProgramInTop指菜单名<br>&nbsp; &nbsp; SetWindowPos(self.Handle , HWND_NOTOPMOST, 0,0,0,0, SWP_NOMOVE + SWP_NOSIZE) //设置为普通窗口<br>&nbsp; else<br>&nbsp; &nbsp; SetWindowPos(self.Handle, HWND_TOPMOST, 0,0, 0,0, SWP_NOMOVE + SWP_NOSIZE); &nbsp;//放在最前面<br>end;<br><br>看以前的贴子:<br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=638858<br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=382348<br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=382348 <br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=255545<br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=452684<br>
 
htw,我都照你说的做了,可是真的还不行,运行后,再打开其他窗口(比如说“我的文档”,<br>“资源管理器”等等),form2就没有了亚!我很急啊。
 
重载以下过程:<br>...<br>&nbsp; private<br>&nbsp; &nbsp; { Private declarations }<br>&nbsp; &nbsp; procedure CreateParams(VAR Params: TCreateParams); override;<br>&nbsp; ...<br><br><br>procedure TForm2.CreateParams(var Params:TCreateParams );<br>begin<br>&nbsp; inherited CreateParams(Params); &nbsp;<br>&nbsp; with Params do &nbsp;begin<br>&nbsp; &nbsp; ExStyle :=ExStyle or WS_EX_TOPMOST; &nbsp;<br>&nbsp; end;<br><br>&nbsp; Parent := 0;//important,表示Form2的父窗口不是Form1,就可以最前了<br>end;<br>
 
Pan Ying,我照你说的做了,写在了Form2中可是编译后,自动显示错误,<br>错在 Parent := 0;上<br><br>是否还要定义Parent :integer;?<br><br>
 
把0改成nil试试看
 
Pan Ying, 编译通过了,可是好像还是无法实现Form2的“总在最上面”啊!!<br>这个问题我都在这里问了一天了。好累啊~[:(]
 
对不起,<br>我试了一下,好像没有成功,等我再试试别的方法。
 
将Parent := 0;<br>改成<br>Params.WndParent := 0;<br>就可以了,<br>我试过了。
 
Pan Ying,谢谢,这样是可以的。<br><br>Kingron,你说你的笔记中<br>必须修改代码如下:<br>try<br>&nbsp; &nbsp; Hide;<br>&nbsp; &nbsp; Application.NormalizeAllTopMosts;<br>&nbsp; &nbsp; LitterWin.ShowModal;<br>&nbsp; &nbsp; Application.RestoreTopMosts;<br>finally<br>&nbsp; &nbsp; show;<br>end;<br>这些正确的到底应该加在哪里,还有LitterWin应该换成是什么呢?<br>Kingron,如果你看到,请回个话好么!
 
哎呀,我昨天回去了,这个LitterWin就是你的Form2啊!!!~~~~~[:(]<br>至于代码放在那个地方,就是你需要Form2.show的地方啊,例如你使用按钮触发这个OnTop<br>窗口,那么就放在Button的Click中,放在你原来的Form2.Show的地方就可以了,把原来的Form2.Show删除即可。<br>
 
我可以告诉你,绝对没有问题的,我测试过啦!!!!<br>不过看在你是MM的面上,我就不忍心说你了~~~~~~~~~~~[^]
 
哦,是个MM啊! [:)]<br><br>还要把show 改为showmodal<br>&nbsp; Fomr2.ShowModal;<br><br>
 
Kingron,的方法我试过了,也是可以的.<br>[:D]谢谢各位大哥拉!<br>特别感谢以下两位:Pan Ying,Kingron!!谢谢你们一天来这么支持我,可惜我没有分数了[^]
 
后退
顶部