这种切换页面的功能是如何实现的呢???(分少,见笑了,re者都有分!)

SharpCoder 2003-09-22 11:45:15
用过CuteFTP的知道,或者是在Delphi6,JBuilder中可以看到这种界面:

每一个Unit是用TabControl控制的,但是每个Unit下面有又Code和Diagram的
页面切换。不知道这个用的是什么控件,应该也是Delphi提供的标准控件吧?
或者是通过API实现的?好像和一般的有很大不同,它的Code 和Diagram的切换标签嵌入到了一个状态栏中,这个怎么实现的呢?
...全文
50 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
路人陈 2003-09-22
  • 打赏
  • 举报
回复
dxpagecontral这个控件可以实现你想要的效果,试试吧
SharpCoder 2003-09-22
  • 打赏
  • 举报
回复
To noil0125:
似乎不是这样的。
新建一个工程,然后加入一个PageControl,添加页面后,将TabPosition 设为Bottom,
但这样并不能得到那种效果。

观察可以发现,不仅是标签的形状不一样,而且标签被嵌入到状态栏中了!

我需要的就是这种效果。
noil0125 2003-09-22
  • 打赏
  • 举报
回复
TabControl和PageControl,win32控件中
SharpCoder 2003-09-22
  • 打赏
  • 举报
回复
谢谢cxz7531(cat) 兄弟,似乎是这样的。

可能有人说用控件1stClass很容易实现,可我觉得能用Delph自带的控件实现,就不用第三方的了。

不过还有一点,你提到的用win3.1控件,察看帮助后,按照帮助的意思,似乎用
TabControl,TPageControl似乎也能实现,而且更为正式一些.

希望能继续讨论!
cxz7531 2003-09-22
  • 打赏
  • 举报
回复
先放一个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.Pages

end;

procedure TForm1.FormShow(Sender: TObject);
begin
TabSet1.Tabs := Notebook2.Pages;
end;
我测试了,跟Delphi6中Code editor一模一样
SharpCoder 2003-09-22
  • 打赏
  • 举报
回复
非常抱歉,上面的代码我试了,达不到我说的效果.
我现在要做的东西如果能用上这种界面就很方便,而且也很正式。

不知我说清楚没有,我就是指的 Delphi里面的编辑区中的那种界面。
编辑区域下面有个Code 和Diagram可以相互切换,就要这种效果。 而且切换图标潜入到状态中。

chenwc(海市蜃楼)兄说的那个控件组的全称是什么呢?
readersm68 2003-09-22
  • 打赏
  • 举报
回复
先创建Frames,
unit TabForm;

interface

uses
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,931

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧