高分求这种TPageControl怎样开发?(200分)

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

dcba

Unregistered / Unconfirmed
GUEST, unregistred user!
我想开发一个新的TPageControl;就是可以同时将其所拥有的所有TabSheet的Tab,分别在上下左右显示出来,
就是不像是现在的TPageControl,只能要么在top,要么在bottom,显示所有tab,但是我找了半天的源代码,也没有找到
他是在那段代码里或方法里画出这些tab的?我该重写那些过程或函数呢?
 
你上面放TTabControl,下面放TPageControl。模拟一下就可以了。
Delphi的TPageControl是ComCtrls,不是简单的组合出来的,看看它的参数就知道了
procedure TCustomTabControl.CreateParams(var Params: TCreateParams);
const
AlignStyles: array[Boolean, TTabPosition] of DWORD =
((0, TCS_BOTTOM, TCS_VERTICAL, TCS_VERTICAL or TCS_RIGHT),
(0, TCS_BOTTOM, TCS_VERTICAL or TCS_RIGHT, TCS_VERTICAL));
TabStyles: array[TTabStyle] of DWORD = (TCS_TABS, TCS_BUTTONS,
TCS_BUTTONS or TCS_FLATBUTTONS);
RRStyles: array[Boolean] of DWORD = (0, TCS_RAGGEDRIGHT);
begin
InitCommonControl(ICC_TAB_CLASSES);
inherited CreateParams(Params);
CreateSubClass(Params, WC_TABCONTROL);
with Params do
begin
Style := Style or WS_CLIPCHILDREN or
AlignStyles[UseRightToLeftAlignment, FTabPosition] or
TabStyles[FStyle] or RRStyles[FRaggedRight];
if not TabStop then Style := Style or TCS_FOCUSNEVER;
if FMultiLine then Style := Style or TCS_MULTILINE;
if FMultiSelect then Style := Style or TCS_MULTISELECT;
if FOwnerDraw then Style := Style or TCS_OWNERDRAWFIXED;
if FTabSize.X <> 0 then Style := Style or TCS_FIXEDWIDTH;
if FHotTrack and (not (csDesigning in ComponentState)) then
Style := Style or TCS_HOTTRACK;
if FScrollOpposite then Style := Style or TCS_SCROLLOPPOSITE;
WindowClass.style := WindowClass.style and not (CS_HREDRAW or CS_VREDRAW) or
CS_DBLCLKS;
end;
end;
 
放两个模拟。
 
用按钮模拟
 
多人接受答案了。
 
后退
顶部