这是判断子窗口是否存在如果不存在就创建字窗口如果存在就激活它。
第一次执行是没有错误码的,但是关闭了子窗口第二次执行就出现'abstract error'的错误。为什么会这样的, 请高手帮帮忙。!
if not Assigned(childform) then
 begin
Application.createform(Tchildform,childform)
  end
  else
   childform.BringToFront;

解决方案 »

  1.   

    if not Assigned(childform) then 這樣判斷還不夠準确!!!
      

  2.   

    关闭时不要使用Close,使用Destroy过程 .
      

  3.   

    CreateForm仅用于建立主窗体,因为它会把用这个方法建立的窗体设为Application.MainForm(参见DELPHI的帮助文档),所以你应该用:
    childform := TChildForm.Create(....)
    这个...可是是Self(指这段代码的窗体本身)或nil或Application
      

  4.   

    skimwater(掠水惊鸿) 
     我试过你的方法,但是会出错,不知道是不是我用了xpmenu控件,因为它转到了xpnuemu里的一个过
    程。
     SeaWave() 
     你的方法也有问题。一执行就出现在错误。
     aiirii(ari) 
     要怎么样判断才准确啊。
      

  5.   

    这样写就行了谢谢aiirii(ari) 的提示。
    for i:=0 to mainform.MDIChildCount-1 do
         begin
            if mainform.MDIChildren[i]=childform then
             begin
              childform.BringToFront;
              exit;
              end;
         end;
      Application.createform(Tchildform,childform);