我想让一个已创建的模态窗体找到另一个已创建的模态窗体并且让这个模态窗体得到焦点,例如:主窗体Form1创建模态窗体Form2,Form2再创建模态窗体Form3,这时我想让Form3查找出Form2并让Form2的到焦点,有没有可能呢?

解决方案 »

  1.   

    Application.FindComponent()这样可找到Form2,但你没法操作Form2,因为Form3是模态的
      

  2.   

    楼上的说得不准确,模态窗口的调用窗口是可以操作的,一句EnableWindow(Form2->Handle,TRUE)就可以激活它了.
    在Form3的类中加一个成员记录是谁调用它的,如TForm* ParentForm;
    在Form2中调用Form3的ShowModal这前将自己(this)赋给Form3的ParentForm即可,
    在Form3中可以用EnableWindow(ParentForm->Handle,TRUE);激活Form2,然后将其显示在前台.以上只是实现了楼主的要求,而实际是不可行的,强行将模态窗口的调用窗口激活会导致消息处理与程序执行顺序被打乱,造成不可预知的错误.
      

  3.   

    谢谢MM你好的解答,但是我个人不太喜欢用MDI窗体,但是又必须在程序里实现MDI窗体的功能,比如可以随意调用或察看每个窗体,用非模态的窗体总是显得窗体布局很乱,你有更好的方法吗?谢谢!
      

  4.   

    如有可能,用pagecontrol的不同页来当做你的form不知是否合乎你的要求。