我想通过菜单创建子窗体,可是菜单很多,每次在创建前要检查一下是否已经创建过了该菜单要创建的窗体。想把检查是否已经创建和创建写成一个过程以下是大致思路:
procedure TMainFrm.CreateChild({不知此处如何设参数});
 var
  i:integer;
  bExit:boolean;
 begin
  bExit:=False
  for i=MainFrm.MDIChildCount downto 0
    begin
      if MainFrm.MDIChildren[i].Name=ChildName  then
        begin
         MainFrm.MDIChildren[i]{调用一个API,恢复到初始状态}
         bExit:=True
        end;
    end;
  if bExit=False then
      Application.CreateForm({不知此处如何用参数});
 end;
以上是我只做一个菜单用的方法,谁有别的方法思路请给予指导一下。

解决方案 »

  1.   

    楼上的说的对呀,也可以创建了一个窗体后,把对应的菜单按钮设成false.
    当关闭窗口时再把这个菜单对应的按钮设成true.
      

  2.   

    MainFrm.MDIChildren[i].BringToFront;//调到最前面
      

  3.   

    如果没有创建,那么创建它,如果已经创建,把它置为最前面。procedure TMainFrm.CreateChild(ChildName: string, TChildClass: string);
     var
      i:integer;
    begin
      for i= MDIChildCount downto 0
      begin
        if MDIChildren[i].Name=ChildName  then 
          MDIChildren[i].BringToFront
        else
        begin
          ChildName := TChildClass.Creat(Self);
          ChildName.Show;
        end;
      end;
    end;
      

  4.   

    Params ChildName is  name of the child form.
    params TChildClass is class name of the child form.