我是通过这段代码控制不给显示多个同样的子窗体的.代码如下: 
 if not assigned(frm_test) then
   begin
    frm_test:=tfrm_test.Create(application);
    frm_test.Show;
   end
  else
   begin
     DefMDIChildProc(frm_test.Handle, WM_SETFOCUS, 0, 0);
   end;----------------------------------------
当这个窗体存在时就把这个窗体设成活动窗体显示的最前面,因为我们的的子窗体一创建就是最大化的.
以上代码无法实现设置MDI活动子窗体功能......在线等侍.....

解决方案 »

  1.   

    if not assigned(frm_test) then frm_test:=tfrm_test.Create(application);
     frm_test.Show;
     试试!
      

  2.   

    不好意思是...我的意思是,窗体已经存在的,但不是活动窗体,我现在需要把它变成活动窗体,怎么搞呀DefMDIChildProc(frm_test.Handle, WM_SETFOCUS, 0, 0); 问题在这里,无法把窗体变成活动的窗体
      

  3.   

    if not assigned(frm_test) then frm_test:=tfrm_test.Create(application);
     frm_test.Show;
    可行的试试看
      

  4.   

    就是show,不愿意用show用BringToFront也可以,只是减少了一步而已。
      

  5.   

    你在运行时可以把菜单或者按纽的enabled设为false,等你退出mdichildform时再设为true就不会出现你所说的情况了。
      

  6.   

    if not assigned(FrmGeiTest) then
      begin
        FrmGeiTest:=TFrmGeiTest.Create(self);
        FrmGeiTest.WindowState:=wsMaximized;
        FrmGeiTest.Show();
      end
      else
      begin
        FrmGeiTest.BringToFront;
        FrmGeiTest.WindowState:=wsMaximized;
        FrmGeiTest.SetFocus;
      end;