很急的问题!关于窗口的Handle(50分)

  • 主题发起人 主题发起人 MicroZeng
  • 开始时间 开始时间
各位大侠,这个问题还没有结束呢,没有人能回答吗?<br>我是在用一个bsDialog的窗口Form1,用ShowModal显<br>示的,在这个窗口上如果用OpenDialog,SaveDialog,<br>切换到别的窗口后再切换回来,那么,OpenDialog或者<br>SaveDialog也就看不见了,躲在Form1后面了。用eyes<br>的<br>windows.setparent(opendialog1.handle, getdesktopwindow);<br>或者用ZRY的方法:<br>with Application do<br>begin<br>&nbsp; NormalizeTopMosts;<br>&nbsp; if(OpenDialog1.Execute) then .....;<br>&nbsp; RestoreTopMosts;<br>end;<br>都无效,怎么办啊!!!<br><br><br>
 
我愿意出200大洋求解,决不食言!
 
DreamTiger: 奇怪,我试验了你的情况,没发生你说的情况牙! opendialog始终<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 在他被调用的主窗口之上牙!
 
faint!又中圈套了,是Rx的AppEvent中设定了一个OnActive,<br>procedure TMainForm.AppEvents1Activate(Sender: TObject);<br>begin<br>&nbsp; Screen.ActiveForm.BringToFront;<br>end;<br>cAKK,不好意思,也把你骗了。到另一个地方拿分吧。
 
to DreamTiger: 是什么意思? 我没有看懂。我想或许可以使用一个办法, 把所有的<br>TOpenDialog, TSaveDialog...等Dialog改写一下, 增加一个可以赋值的Handle, 缺省时为ActiveForm, 调用时如下:<br>&nbsp; &nbsp;OpenDialog1.Handle := EditForm.Handle;<br>&nbsp; &nbsp;OpenDialog1.Execute;<br>&nbsp; &nbsp;…………………<br>这样应该可以的吧?<br>但是我写构件和对这些较底层的东西确实太薄弱了, 哪位大虾能告诉我怎么改写吗?
 
呵呵,我的问题已经解决了,是由于Screen.ActiveForm.BringToFront引起的。
 
to DreamTiger: <br>要在那里改正? 我没有使用Screen.ActiveForm.BringToFront, 是系统自动调用的吧? 请写信告诉我好吗?mailto: xqzeng@soim.com<br>无限感激!因为这个问题确实困了我好久了。
 
查看TApplication.NormalizeTopMosts方法<br><br>TApplication.NormalizeTopMosts:<br>Makes forms that have been designated as topmost forms (their<br>FormStyle is fsStayOnTop) behave as if they were not topmost forms. <br><br>procedure NormalizeTopMosts;<br><br>Description<br><br>Use NormalizeTopMosts to have a message box or dialog box that is <br>displayed using the Windows API functions (such as MessageBox and <br>MessageDlg) directly, appear on top of a topmost form. Otherwise the <br>form remains on top, which may obscure the message box.<br><br>Calling NormalizeTopMosts is not necessary when when using Delphi <br>methods and functions to display message boxes.<br><br>To return the forms designated as fsStayOnTop to be topmost again, <br>call RestoreTopMosts.<br><br>Delphi帮助中写得很清楚呀,连例子都有。<br>我前面写的那段代码你没试过吗?应该可以解决的。<br>
 
多人接受答案了。
 
后退
顶部