用过CuteFTP的知道,或者是在Delphi6,JBuilder中可以看到这种界面:
              
每一个Unit是用TabControl控制的,但是每个Unit下面有又Code和Diagram的
页面切换。不知道这个用的是什么控件,应该也是Delphi提供的标准控件吧?
或者是通过API实现的?好像和一般的有很大不同,它的Code 和Diagram的切换标签嵌入到了一个状态栏中,这个怎么实现的呢?

解决方案 »

  1.   

    TabControl和PageControl,win32控件中
      

  2.   

    To noil0125:
    似乎不是这样的。
    新建一个工程,然后加入一个PageControl,添加页面后,将TabPosition 设为Bottom,
    但这样并不能得到那种效果。
      
    观察可以发现,不仅是标签的形状不一样,而且标签被嵌入到状态栏中了!
      
    我需要的就是这种效果。
      

  3.   

    dxpagecontral这个控件可以实现你想要的效果,试试吧
      

  4.   

    先创建Frames,
    unit TabForm;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      Frame2u, Frame3u, StdCtrls, ComCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Tab: TTabControl;
        procedure TabChange(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        procedure ShowFrame (FrameName: string);
      end;var
      Form1: TForm1;implementation{$R *.DFM}type
      TFrameClass = class of TFrame;procedure TForm1.ShowFrame(FrameName: string);
    var
      Frame: TFrame;
      FrameClass: TFrameClass;
    begin
      Frame := FindComponent (FrameName + '1') as TFrame;
      if not Assigned (Frame) then
      begin
        FrameClass := TFrameClass (FindClass ('T' + FrameName));
        Frame := FrameClass.Create (Self);
        Frame.Parent := Tab;
        Frame.Visible := True;
        Frame.Name := FrameName + '1';
      end;
      Frame.BringToFront;
    end;procedure TForm1.TabChange(Sender: TObject);
    begin
      ShowFrame (Tab.Tabs [Tab.TabIndex]);
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      ShowFrame (Tab.Tabs [Tab.TabIndex]);
    end;end.
      

  5.   

    非常抱歉,上面的代码我试了,达不到我说的效果.
    我现在要做的东西如果能用上这种界面就很方便,而且也很正式。
      
    不知我说清楚没有,我就是指的 Delphi里面的编辑区中的那种界面。
    编辑区域下面有个Code 和Diagram可以相互切换,就要这种效果。 而且切换图标潜入到状态中。chenwc(海市蜃楼)兄说的那个控件组的全称是什么呢?  
      

  6.   

    先放一个PageControl控件
    然后在每页上放置一个Notebook控件,在PageControl下面放置一个TabSet
    在onshow中加入下列代码。
     TabSet1.Tabs:=Notebook1.Pages;
    加入下列代码
    procedure TForm1.TabSet1Click(Sender: TObject);
    begin
      if PageControl1.ActivePageIndex = 1 then
        Notebook1.PageIndex := TabSet1.TabIndex
      else if PageControl1.ActivePageIndex = 0 then
        Notebook2.PageIndex := TabSet1.TabIndex
    end;procedure TForm1.PageControl1Change(Sender: TObject);
    begin
      if PageControl1.ActivePageIndex = 0 then
        TabSet1.Tabs := Notebook2.Pages
      else if PageControl1.ActivePageIndex = 1 then
        TabSet1.Tabs := Notebook1.Pagesend;procedure TForm1.FormShow(Sender: TObject);
    begin
      TabSet1.Tabs := Notebook2.Pages;
    end;
    我测试了,跟Delphi6中Code editor一模一样
      

  7.   

    谢谢cxz7531(cat) 兄弟,似乎是这样的。
      
    可能有人说用控件1stClass很容易实现,可我觉得能用Delph自带的控件实现,就不用第三方的了。
      
    不过还有一点,你提到的用win3.1控件,察看帮助后,按照帮助的意思,似乎用
    TabControl,TPageControl似乎也能实现,而且更为正式一些.
        
    希望能继续讨论!