var
 ChildNum:integer;//=-1procedure TMainFrm.CreateChildForm(const ChildName: string);
var Child: TChildFrm;
begin
  ChildNum:=ChildTag+1;
  Child := TChildFrm.Create(Application);
  Child.Name:= 'Child'+inttostr(ChildNum);
end;
procedure TMainFrm.TabSet1Click(Sender: TObject);
var
  Index: Integer;
begin
  Index := TabSet1.TabIndex ; 
  TChildFrm('Child'+inttostr(Index)).BringToFront  ; //
end;
我想实现象wps多文档处理窗口一样,单击下面一横排的标签中的某个标签,上面文档窗口显示出相应的文档,我在新子窗口创建时命名与标签命名序号一致,单击标签时就知道了文档子窗口的名称,可运行时单击时出错。请问如何表达'Child'+inttostr(Index)这个窗口?

解决方案 »

  1.   

    TChildFrm('Child'+inttostr(Index)).BringToFront;
    这句肯定错的
    'Child'+inttostr(Index)是个字符串吧?
    把一个字符串强制转换成一个类?
      

  2.   

    在你的标签控件上增加一个属性:Data(或者本来就有则直接可以用)在你新建一个窗体时,也同时新建一个标签项,将标签项的Data指向新建的ChildFrm,点击标签项时:TChildFrm(Sender.Data).BringToFront  
      

  3.   

    procedure TMainFrm.TabSet1Click(Sender: TObject);
    var
      i: Integer;
      formName: string;
    begin
      formName := 'Child' + IntToStr(TabSet1.TabIndex);
      //要在MainForm的子窗体中查找的
      for i := 0 to MDIChildCount - 1 do
        if MDIChildren[i].Name = formName then
        begin
          MDIChildren[i].Show;
          Break;
        end;
    end;