Procedure Show_Form_ByStr(AFormPName:String);
var
  myClass:TPersistentClass;
begin
  //找已注册的表单类
  myClass:=GetClass(AFormPName);
  if myClass=nil then
    messagedlg('没有找到表单类 '+AFormPName,mtWarning,[mbOK],0)
  else
    if (???)  //已经在运行,就直接Show它。请问这个位置应该如何写条件?
    else
       //创建实例并运行它end;

解决方案 »

  1.   

    if myClass = nil then
         myClass := TFrm_BuyBargain.Create(self)
      else
         myClass.BringToFront ;
      

  2.   

    if myClass = nil then
         myClass := TPersistentClass.Create(self)
      else
         myClass.BringToFront ;
      

  3.   

    TO  gzclove(西二小风) :
      我的myclass是依据类的名字来确定的,运行时并不固定:myClass:=GetClass(AFormPName)。通常来说,这个Form的类是已经存在了的,因而一定有 mylass<>nil 出现。问题是,这个myclass可能已经有一个实例在运行了,如何侦测之?
    TO  QWERT520(别来无恙):
      如果用公共变数,那每一个子窗口就得对应着一个变数,系统里岂不要定义几百个公共变数?
      

  4.   

    if Not Assigned(form2) then
    begin
      Form2.show;
    end;