我的一个MDI父窗口中可以显示五六个MDI子窗口,新的总是盖掉旧的子窗口,但是他们都没有关掉,我现在添加了一个按钮,梦想的功能是点击后关闭当前的MDI子窗口,如果还有别的子窗口就显示,没有就算了,怎么实现?我点击按钮让出现MDI窗口时这样实现的:  if Assigned(frmMoneyBasic) then
  begin
    frmMoneyBasic.Show;
    frmMoneyBasic.SetFocus;
  end
  else
  begin
    Application.CreateForm(TfrmMoneyBasic,frmMoneyBasic);
    frmMoneyBasic.Parent := pnl1;
  end;

解决方案 »

  1.   

    iCount := MainForm.MDIChildCount;MDIChildFrm := MainForm.MDIChildren[iCount];MDIChildFrm.Show;
      

  2.   

    但是显示的不一定是最大编号的那个mdi窗口啊!这样不行!
      

  3.   

    1、你在按钮里面写代码:
      Close;2、每一个MDI子窗口的 OnClose 事件中:
      Action := caFree;试试
      

  4.   

    我的方法是在按钮的hint里面存一个数字,用来标记哪个是最后按的哪个是最先按的,关闭的时候反着过来就行!
      

  5.   

    梦想的功能是点击后关闭当前的MDI子窗口,如果还有别的子窗口就显示,没有就算了,怎么实现? 
    不太明白你的意思,你是要关闭当前的MDI子窗口?那下面这句就可以实现。
    Application.MainForm.ActiveMDIChild.Close;
      

  6.   

    我实现了,在每个窗体的tag里面设置一个数字,数字越大说明越是最近打开的,关闭的时候把tag最大的先关掉,这样就实现了!