我用从数据库取出的字段来打开MDI窗口,但是我想让每个窗口只能打开一个,该怎么办啊?
这是我的代码:procedure  tform17.stf(Sender: TObject);
var
  FClass: TPersistentClass;
  FForm : TForm;
begin
  FClass := FindClass((Sender as TMenuItem).Hint);
  if Assigned(FClass) then
  begin
    FForm := TFormClass(FClass).Create(Self);
//    fform.show;
    //……你可以随便处理这个根据类名创建出来的窗体。     fform.Show;  end
  else
    ShowMessage('类TForm1未注册!');end;帮我改改啦~谢谢大虾o(∩_∩)o 

解决方案 »

  1.   

    function CheckOpenForm(FormClass: TFormClass;var fm; caption: string): Boolean;
    var
    i: integer;
    Child: TForm;
    begin
      for i := 0 to Screen.FormCount - 1 do
      //if screen.Forms[i].Owner = Aowner then exit else
      //如有一窗口打开,将不打开新的窗口
        if (Screen.Forms[i].ClassType = FormClass) and ( caption = screen.Forms[i].Caption) then
        begin
          begin
            Child := Screen.Forms[i];
            if Child.WindowState = wsMinimized then    //如已存在但最少化的窗口,将还原显示
                ShowWindow(Child.handle, SW_SHOWNORMAL)
            else
              ShowWindow(Child.handle, SW_SHOWNA);
            if (not Child.Visible) then Child.Visible := True;
            Child.BringToFront;
            Child.Setfocus;
            Child.WindowState := wsMaximized;
            TForm(fm) := Child;
            Result := True;
            exit;
          end;
        end;
      Result := False;
      

  2.   

    CheckOpenForm(TFrmSearch,FrmSearch,'导航名称')
      

  3.   

    看不太懂,是用了这个就不用show了么?