我想使打开的各个MDI子窗口名称显示在主窗口下的一排按扭上可快速切换,用delphi该怎么实现呢?
就像wps office 2002的文件切换功能,在MDI窗口中。
我搜索过以前的帖子但找不到具体作法,
我比较笨,请说明具体作法!

解决方案 »

  1.   

    MainForm.Next;
    具体指定一个就不知道了
      

  2.   

    我在窗体上放一个Panel,Panel上在放按扭来切换窗体,
    具体的代友怎么写呀!如果谁有例子请发到我的信箱来,谢谢。
    [email protected]
      

  3.   

    TO: Nizvoo(会点Pascal)我按你的办法在创建窗体时创建一个书签,
    你的办法是可行的,但我写出来的代码执行时效果不是很好,请指点!
      

  4.   

    简单:用一个TabControl, 然后如此添加:AddObject;切换时用 
    MDIChildren[i].BringToForeground;
    MDIChildren[i].SetFocus;
    就可以了。
      

  5.   

    这两句代码要写在TabSheet1那个事件下面呀
    编译时这个BringToForeground总提示说没有定义
    MDIChildren[i].BringToForeground;
    MDIChildren[i].SetFocus;
      

  6.   

    设置你的主窗口的windowsmenu属性
      

  7.   

    to: gzyzljk(正龙剑客) 
    能说得详细点吗?
      

  8.   

    我现在已实现创建窗体时创建一个书签,
    怎么再将这个对应起来,即点书签时激活相对应的窗体。
    就像wps office 2002的文件切换功能,在MDI窗口中。
    请指点!
      

  9.   

    我现在已实现创建窗体时创建一个书签,
    怎么再将这个对应起来,即点书签时激活相对应的窗体。
    就像wps office 2002的文件切换功能,在MDI窗口中。
    请指点!
      

  10.   

    我现在已实现创建窗体时创建一个书签,
    怎么再将这个对应起来,即点书签时激活相对应的窗体。
    就像wps office 2002的文件切换功能,在MDI窗口中。
    请指点!
      

  11.   

    TO:sherlock(泰坦尼克上的Jack)
    我把这句代码加在我程序中是可以切换,
    但可能我原先的语句写的不是很好,
    组合起来总是按扭和窗体名不对应,请指点。
      

  12.   

    在OnButtonClick事件中写:
    var
    i : integer;
    begin
    for i := 0 to MDIChildCount -1 do begin
    if MDIChildren[i].tag = TButton(Sender).tag then begin
    MDIChildren[i].Show;
    break;
    end;当然前提是在你每创建一个MDIChild的时候就同时创建一个按钮,同时这个按钮的tag等于该子窗口的Tag.
    经试验,这种方法的速度很快.
      

  13.   

    搞不懂你的意思
    要速度的话auto create 要的时候show一下不行了
      

  14.   

    TO:sunware()
    我把你的代码加在我程序中是可以切换,
    但可能我原先的语句写的不是很好,
    组合起来总是按扭和窗体名不对应,如:如果我创建两个子窗体按下第一个书签变成调出第二个子窗体按下第二个书签变成调出第一个子窗体,如果我创建三个子窗体,第二、三问题如上,第一个窗体根本调不出来。
    请指点。
      

  15.   

    TO:sunware()
    你能给我个例子吗?
    [email protected]
      

  16.   

    TO:sunware()
    能说一下用PageControl1作切换的方法吗?
      

  17.   

    用PageControl是不能切换MDIChild的.因为你如果设计了PageControl那么一定是把align设为alClient,那么MDIForm的Client区间就没有了,MDIChild放在什么地方呢?
    (另外,PageControl和MDIChild的设计目的都是差不多的,你既然选了PageControl那还要MDIChild干什么?)如果你只是对那几个标签叶感兴趣,那你可以用win3.1页下的TTabSet,程序部分基本和我给你的代码一样.只不过TTabset用的是Tstrings来保存每个页面的名称,所以你得另外再开一个数组用来放tag.不过,我对你程序界面的美感表示怀疑.其实如果你一定要用多窗口,那么还是按钮切换的方式比较好,因为这是microsoft自win95以来一直在使用的经典设计.
      

  18.   

    TO:sunware()
    我是用PageControl来代替你的Panel和Button的,
    首先在主窗体上放一个toolbar在这个上面放个PageControl,
    然后在创建一个窗体时就创建一个相对应的TabSheet.
    我现在遇到的问题如下:
    如果我创建两个子窗体按下第一个书签变成调出第二个子窗体按下第二个书签变成调出第一个子窗体,如果我创建三个子窗体,第二、三问题如上,第一个窗体根本调不出来。
    请指点。
      

  19.   

    TO:sunware()
    代码寄给你了,收到了吗?
      

  20.   

    我就改了Main.pas,就把这个文件(5K大)寄给你了,请查收.
      

  21.   

    对了,差点忘了,这个程序有一个最大的Bug就是如果你关闭了一个子窗口,那么它对应的Tabsheet也应该被销毁(Destroy),但是在这个程序里我没有加入相关的处理.所以如果你关闭了子窗口,那么就再点上面的sheet就会出问题了.这个Bug和你问的问题不是同一个问题,所以就不在这次的讨论范围之内啦!