PageControl抬头加关闭按钮(100分)

  • 主题发起人 主题发起人 ddzhouqian
  • 开始时间 开始时间
D

ddzhouqian

Unregistered / Unconfirmed
GUEST, unregistred user!
大家都知道,TPageControl在设计时可手动添加每一页,我现在要求在每一页中再增加一个关闭按钮,主要是用来关闭PAGE[ITEMINDEX]的方法,并且是做成控件,不光是实现功能,其实也看了下源码,感觉晕晕的,要加的那段居然是私有的,可能是自己太弱了,还请各位给予指点,不胜感激,多谢了,其实也没太大作用,就是客户有这要求,没办法,双击关闭不是挺好的嘛,还要加个按钮,我看ULTRAEDIT也没这样做啊!多谢各位了!
 
要么是改下类,要么就画个东西上去了,再写个事件!
我也关注下,发现在控件的能力真是差!
 
类不知道咋改,从哪下手,请各位帮帮忙啊
 
TPageControl = class(TCustomTabControl)
private
FPages: TList;
FActivePage: TTabSheet;
FNewDockSheet: TTabSheet;
FUndockingPage: TTabSheet;
procedure ChangeActivePage(Page: TTabSheet);
procedure DeleteTab(Page: TTabSheet; Index: Integer);
function GetActivePageIndex: Integer;
function GetDockClientFromMousePos(MousePos: TPoint): TControl;
function GetPage(Index: Integer): TTabSheet;
function GetPageCount: Integer;
procedure InsertPage(Page: TTabSheet);
procedure InsertTab(Page: TTabSheet);
procedure MoveTab(CurIndex, NewIndex: Integer);
procedure RemovePage(Page: TTabSheet);
procedure SetActivePage(Page: TTabSheet);
procedure SetActivePageIndex(const Value: Integer);
procedure UpdateTab(Page: TTabSheet);
procedure UpdateTabHighlights;
procedure CMDesignHitTest(var Message: TCMDesignHitTest); message CM_DESIGNHITTEST;
procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY;
procedure CMDockClient(var Message: TCMDockClient); message CM_DOCKCLIENT;
procedure CMDockNotification(var Message: TCMDockNotification); message CM_DOCKNOTIFICATION;
procedure CMUnDockClient(var Message: TCMUnDockClient); message CM_UNDOCKCLIENT;
procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
procedure WMLButtonDblClk(var Message: TWMLButtonDblClk); message WM_LBUTTONDBLCLK;
protected
function CanShowTab(TabIndex: Integer): Boolean; override;
procedure Change; override;
procedure DoAddDockClient(Client: TControl; const ARect: TRect); override;
procedure DockOver(Source: TDragDockObject; X, Y: Integer;
State: TDragState; var Accept: Boolean); override;
procedure DoRemoveDockClient(Client: TControl); override;
procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override;
function GetImageIndex(TabIndex: Integer): Integer; override;
function GetPageFromDockClient(Client: TControl): TTabSheet;
procedure GetSiteInfo(Client: TControl; var InfluenceRect: TRect;
MousePos: TPoint; var CanDock: Boolean); override;
procedure Loaded; override;
procedure SetChildOrder(Child: TComponent; Order: Integer); override;
procedure ShowControl(AControl: TControl); override;
procedure UpdateActivePage; virtual;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
function FindNextPage(CurPage: TTabSheet;
GoForward, CheckTabVisible: Boolean): TTabSheet;
procedure SelectNextPage(GoForward: Boolean; CheckTabVisible: Boolean = True);
property ActivePageIndex: Integer read GetActivePageIndex
write SetActivePageIndex;
property PageCount: Integer read GetPageCount;
property Pages[Index: Integer]: TTabSheet read GetPage;
是在 .
procedure InsertPage(Page: TTabSheet);还是
procedure InsertTab(Page: TTabSheet);中改啊?
 
应该是TAB吧
 
TRzPageControl
属性ShowCloseButten。
自己写一个也可以。
 
自画吧,然后驱动事件
 
to dinglj1760
我试过了,TRzPageControl不符合我的要求的,我要在每个TAB头上都加一个关闭按钮,而TRzPageControl只是加了一个按纽,我想应该只是控制整个TRzPageControl,而我要分别控制每个添加的TAB。
TO kgm我在哪驱动事件,写在哪?我是要写控件,是设计时用的
 
谁说的。他的按钮是控制当前活动页的。
我前一短时间写的一个小玩意就是用了这个控件。
 
可不可以用ActivePage as TbyTabSheet).Close!
我没有试过哦!
 
to dinglj1760:我要的是每个TAB的CAPTION的地方都要加个按扭啊,如果有三个TABSHEET那就加三个按扭,做分别控制啊!
能否实现?各位请给于明示,并给予方法或者思路啊
 
问题我已经解决了!
 
后退
顶部