亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? spagecontrol.pas

?? AlphaControls是一個Delphi標準控件的集合
?? PAS
?? 第 1 頁 / 共 3 頁
字號:
unit sPageControl;
{$I sDefs.inc}

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, sConst, ExtCtrls, sPanel, sGraphUtils, sUtils, ImgList,
  Consts, ComStrs, CommCtrl, sVclUtils, sGradient, sTabControl, sCommonData;

type
  TsPageControl = class;

  TsTabSheet = class(TCustomControl)
  private
    FImageIndex: TImageIndex;
    FPageControl: TsPageControl;
    FTabVisible: Boolean;
    FTabShowing: Boolean;
    FOnHide: TNotifyEvent;
    FOnShow: TNotifyEvent;
    FCommonData: TsCommonData;
    FHighlighted: Boolean;
    function GetPageIndex: Integer;
    function GetTabIndex: Integer;
    procedure SetHighlighted(Value: Boolean);
    procedure SetImageIndex(Value: TImageIndex);
    procedure SetPageControl(APageControl: TsPageControl);
    procedure SetPageIndex(Value: Integer);
    procedure SetTabShowing(Value: Boolean);
    procedure SetTabVisible(Value: Boolean);
    procedure UpdateTabShowing;
    procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED;
    procedure CMShowingChanged(var Message: TMessage); message CM_SHOWINGCHANGED;
    procedure WMEraseBkGND (var Message: TWMPaint); message WM_ERASEBKGND;
  protected
    procedure CreateParams(var Params: TCreateParams); override;
    procedure DoHide; dynamic;
    procedure DoShow; dynamic;
    procedure ReadState(Reader: TReader); override;
    procedure Loaded; override;
  public
    BGChanged : boolean;
    procedure AfterConstruction; override;
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure Paint; override;
    procedure WndProc (var Message: TMessage); override;
    procedure VisibleChanging; override;

    property PageControl: TsPageControl read FPageControl write SetPageControl;
    property TabIndex: Integer read GetTabIndex;
    property Align;
    property Highlighted: Boolean read FHighlighted write SetHighlighted default False;
  published
    property Caption;
    property CommonData : TsCommonData read FCommonData write FCommonData;
    property ImageIndex: TImageIndex read FImageIndex write SetImageIndex default 0;
    property Left stored False;
    property PageIndex: Integer read GetPageIndex write SetPageIndex stored False;
    property TabVisible: Boolean read FTabVisible write SetTabVisible default True;
    property Top stored False;
    property Visible stored False;
    property Width stored False;
    property OnHide: TNotifyEvent read FOnHide write FOnHide;
    property OnShow: TNotifyEvent read FOnShow write FOnShow;
  end;

  TsPageControl = class(TsCustomTabControl)
  private
    FPages: TList;
    FActivePage: TsTabSheet;
    FNewDockSheet: TsTabSheet;
    FUndockingPage: TsTabSheet;
    procedure ChangeActivePage(Page: TsTabSheet);
    procedure DeleteTab(Page: TsTabSheet; Index: Integer);
    function GetActivePageIndex: Integer;
    function GetDockClientFromMousePos(MousePos: TPoint): TControl;
    function GetPage(Index: Integer): TsTabSheet;
    function GetPageCount: Integer;
    procedure InsertPage(Page: TsTabSheet);
    procedure InsertTab(Page: TsTabSheet);
    procedure MoveTab(CurIndex, NewIndex: Integer);
    procedure RemovePage(Page: TsTabSheet);
    procedure SetActivePage(Page: TsTabSheet);
    procedure SetActivePageIndex(const Value: Integer);
    procedure UpdateTab(Page: TsTabSheet);
    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): TsTabSheet;
    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;

    procedure WMPaint (var Message: TWMPaint); message WM_PAINT;
    procedure DrawSkinTab(Index: Integer; State : integer); override;
    procedure WndProc (var Message: TMessage); override;
  public
    Skinable : boolean;
    procedure AfterConstruction; override;
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    function FindNextPage(CurPage: TsTabSheet; GoForward, CheckTabVisible: Boolean): TsTabSheet;
    procedure SelectNextPage(GoForward: Boolean);
    property ActivePageIndex: Integer read GetActivePageIndex write SetActivePageIndex;
    property PageCount: Integer read GetPageCount;
    property Pages[Index: Integer]: TsTabSheet read GetPage;
    property ScrollOpposite;
    property Style;
    property RaggedRight;
  published
    property ActivePage: TsTabSheet read FActivePage write SetActivePage;
    property Align;
    property Anchors;
    property BiDiMode;
    property Constraints;
    property DockSite;
    property DragCursor;
    property DragKind;
    property DragMode;
    property Enabled;
    property Font;
    property Images;
    property MultiLine;
    property OwnerDraw;
    property ParentBiDiMode;
    property ParentFont;
    property ParentShowHint;
    property PopupMenu;
    property ShowHint;
    property TabHeight;
    property TabOrder;
    property TabStop;
    property TabPosition;
    property TabWidth;
    property Visible;
    property OnChange;
    property OnChanging;
    property OnContextPopup;
    property OnDockDrop;
    property OnDockOver;
    property OnDragDrop;
    property OnDragOver;
    property OnDrawTab;
    property OnEndDock;
    property OnEndDrag;
    property OnEnter;
    property OnExit;
    property OnGetImageIndex;
    property OnGetSiteInfo;
    property OnMouseDown;
    property OnMouseMove;
    property OnMouseUp;
    property OnResize;
    property OnStartDock;
    property OnStartDrag;
    property OnUnDock;
  end;

implementation

uses sStyleSimply, sDefaults, sBorders, sMaskData, math, sSkinProps, sAlphaGraph,
  sMessages;

{ TsTabSheet }

constructor TsTabSheet.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FCommonData := TsCommonData.Create(Self, False);
  FCommonData.COC := COC_TsTabSheet;
  Align := alClient;
  ControlStyle := ControlStyle + [csSetCaption] - [csOpaque];
  Visible := False;
  FTabVisible := True;
  FHighlighted := False;
end;

destructor TsTabSheet.Destroy;
begin
  if FPageControl <> nil then begin
    if FPageControl.FUndockingPage = Self then FPageControl.FUndockingPage := nil;
    FPageControl.RemovePage(Self);
  end;
  if Assigned(FCommonData) then FreeAndNil(FCommonData);
  inherited Destroy;
end;

procedure TsTabSheet.DoHide;
begin
  if Assigned(FOnHide) then FOnHide(Self);
end;

procedure TsTabSheet.DoShow;
begin
  if Assigned(FOnShow) then FOnShow(Self);
end;

function TsTabSheet.GetPageIndex: Integer;
begin
  if FPageControl <> nil then
    Result := FPageControl.FPages.IndexOf(Self) else
    Result := -1;
end;

function TsTabSheet.GetTabIndex: Integer;
var
  I: Integer;
begin
  Result := 0;
  if not Assigned(Self) then Exit;
  if not FTabShowing then begin
    Dec(Result)
  end
  else begin
    for I := 0 to PageIndex - 1 do begin
      if TsTabSheet(FPageControl.FPages[I]).FTabShowing then begin
        Inc(Result);
      end;
    end;
  end;
end;

procedure TsTabSheet.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.WindowClass.style := Params.WindowClass.style and not (CS_HREDRAW or CS_VREDRAW);
end;

procedure TsTabSheet.ReadState(Reader: TReader);
begin
  inherited ReadState(Reader);
  if Reader.Parent is TsPageControl then PageControl := TsPageControl(Reader.Parent);
end;

procedure TsTabSheet.SetImageIndex(Value: TImageIndex);
begin
  if FImageIndex <> Value then begin
    FImageIndex := Value;
    if FTabShowing then FPageControl.UpdateTab(Self);
  end;
end;

procedure TsTabSheet.SetPageControl(APageControl: TsPageControl);
begin
  if FPageControl <> APageControl then begin
    if FPageControl <> nil then FPageControl.RemovePage(Self);
    Parent := nil;
    Parent := APageControl;
    if APageControl <> nil then APageControl.InsertPage(Self);
  end;
end;

procedure TsTabSheet.SetPageIndex(Value: Integer);
var
  I, MaxPageIndex: Integer;
begin
  if FPageControl <> nil then begin
    MaxPageIndex := FPageControl.FPages.Count - 1;
    if Value > MaxPageIndex then raise EListError.CreateResFmt(@SPageIndexError, [Value, MaxPageIndex]);
    I := TabIndex;
    FPageControl.FPages.Move(PageIndex, Value);
    if I >= 0 then FPageControl.MoveTab(I, TabIndex);
  end;
end;

procedure TsTabSheet.SetTabShowing(Value: Boolean);
var
  Index: Integer;
begin
  if FTabShowing <> Value then begin
    if Value then begin
      FTabShowing := True;
      FPageControl.InsertTab(Self);
    end
    else begin
      Index := TabIndex;
      FTabShowing := False;
      FPageControl.DeleteTab(Self, Index);
    end;
  end;
end;

procedure TsTabSheet.SetTabVisible(Value: Boolean);
begin
  if FTabVisible <> Value then begin
    FTabVisible := Value;
    UpdateTabShowing;
//    sStyle.Invalidate;
  end;
end;

procedure TsTabSheet.UpdateTabShowing;
begin
  SetTabShowing((FPageControl <> nil) and FTabVisible);
end;

procedure TsTabSheet.CMTextChanged(var Message: TMessage);
begin
  if FTabShowing then FPageControl.UpdateTab(Self);
end;

procedure TsTabSheet.CMShowingChanged(var Message: TMessage);
begin
  inherited;
  if Showing then begin
    try
      DoShow
    except
      Application.HandleException(Self);
    end;
  end else if not Showing then begin
    try
      DoHide;
    except
      Application.HandleException(Self);
    end;
  end;
end;

procedure TsTabSheet.SetHighlighted(Value: Boolean);
begin
  if not (csReading in ComponentState) then
    SendMessage(PageControl.Handle, TCM_HIGHLIGHTITEM, TabIndex,
      MakeLong(Word(Value), 0));
  FHighlighted := Value;
end;

procedure TsTabSheet.Paint;
begin
  if not Assigned(Parent) or (csDestroying in Parent.ComponentState) or (csDestroying in ComponentState) or not (Visible or (csDesigning in ComponentState)) then Exit;
  if Assigned(PageControl) and PageControl.Skinable then begin
    BitBlt(Canvas.Handle, 0, 0, Width, Height, PageControl.FCommonData.FCacheBmp.Canvas.Handle, Left, Top, SRCCOPY);

//    RepaintsControls(Self, False);   //!!!
//    PaintPassiveControls(Self);
  end else begin
    inherited;
  end;
end;

procedure TsTabSheet.WndProc(var Message: TMessage);
begin
  if Assigned(FCommonData) then begin
    FCommonData.WndProc(Message);
    if FCommonData.Skinned then case Message.Msg of
      CM_VISIBLECHANGED : begin
//        SendMessage(Handle, CM_INVALIDATE, 0, 0);
//        SendMessage(Handle, WM_NCPAINT, 0, 0);
      end;
      WM_SIZE : begin
        Repaint;
      end;
      WM_MOVE : begin
        Repaint;
      end;
//      SM_SETBGCHANGED : if not (csLoading in ComponentState) then
//        FCommonData.BGChanged := True;
      SM_GETCACHE : begin
        Message.Result := 1;
        if not Assigned(PageControl) then Exit;
        GlobalCacheInfo.X := PageControl.PageRect.Left;
        GlobalCacheInfo.Y := PageControl.PageRect.Top;
        GlobalCacheInfo.Bmp := PageControl.FCommonData.FCacheBmp;
        GlobalCacheInfo.Ready := True;
      end;
    end;
  end;
  if Message.Result <> 1 then inherited;
end;

procedure TsTabSheet.AfterConstruction;
begin
  inherited;
  CommonData.Loaded;
end;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产mv日韩mv欧美| 亚洲尤物在线视频观看| 久久尤物电影视频在线观看| 久久网站最新地址| 激情综合色播激情啊| 成人午夜电影网站| 这里只有精品99re| 国产精品三级久久久久三级| 亚洲bt欧美bt精品| 成人丝袜18视频在线观看| 国产日韩欧美综合一区| 免费在线观看一区| 91视频国产资源| 日韩精品中午字幕| 亚洲免费成人av| 久草这里只有精品视频| 在线观看精品一区| 国产日韩欧美精品在线| 91女神在线视频| 午夜激情久久久| 在线观看欧美精品| 精品一区二区三区在线观看国产| 国产色产综合色产在线视频| 美腿丝袜亚洲色图| 欧美精品精品一区| 性做久久久久久免费观看 | 成人丝袜视频网| 一区二区三区精品| 色综合网站在线| 日本一二三不卡| 国产白丝网站精品污在线入口| 一区二区三区在线看| 精品国产乱码久久久久久夜甘婷婷| 亚洲成人av电影| 国产视频一区二区在线| 欧美探花视频资源| 亚洲国产你懂的| 欧美日韩精品一区二区天天拍小说 | 日本怡春院一区二区| 欧美综合久久久| 国产综合色在线视频区| 亚洲一区二区欧美| 欧美激情一区在线| 日韩一级二级三级| 国内精品写真在线观看| 一区二区视频在线| 色综合色综合色综合色综合色综合 | 成人h动漫精品一区二| 中文字幕精品一区二区三区精品| 欧美性生活影院| gogogo免费视频观看亚洲一| 1区2区3区精品视频| 色网综合在线观看| 成人综合婷婷国产精品久久蜜臀 | 亚洲黄色小说网站| 中文字幕第一页久久| 日韩精品一区二区三区老鸭窝| 色妹子一区二区| 伊人一区二区三区| 亚洲国产精品v| 久久久不卡影院| 99国产精品久久| 亚洲国产婷婷综合在线精品| 中文字幕亚洲在| 国产精品人成在线观看免费 | 国产精品美女久久久久久久久| 日韩视频在线你懂得| 91麻豆精品久久久久蜜臀 | 日韩欧美中文字幕精品| 欧美日韩中文字幕一区| 免费黄网站欧美| 日韩专区欧美专区| 欧美国产一区在线| 久久久精品国产免大香伊| 久久免费视频色| 久久午夜老司机| 中文字幕精品一区二区精品绿巨人 | 国产人成一区二区三区影院| ww亚洲ww在线观看国产| 日韩欧美国产wwwww| 日韩欧美国产系列| 26uuu色噜噜精品一区| 精品日产卡一卡二卡麻豆| 色婷婷精品久久二区二区蜜臂av| 91蜜桃网址入口| 色综合夜色一区| 欧美性色黄大片手机版| 91精品国产综合久久久久久久 | 久久久久久久久岛国免费| 精品国偷自产国产一区| 精品福利av导航| 欧美激情一区在线| 亚洲男同1069视频| 午夜精品久久久久影视| 久久99久久精品欧美| 亚洲天堂中文字幕| 久久精品网站免费观看| 中文字幕第一区综合| 一区二区三区在线免费观看 | 捆绑紧缚一区二区三区视频| 国产一区二区在线免费观看| 午夜精品久久久久久久99樱桃| 日日摸夜夜添夜夜添国产精品 | 亚洲精品视频在线观看网站| 亚洲成人777| 国产精品91一区二区| 人禽交欧美网站| 国产在线一区二区综合免费视频| 国产成人在线色| 国产一区二区影院| 白白色 亚洲乱淫| 欧美另类变人与禽xxxxx| 精品成人在线观看| 亚洲欧美激情小说另类| 免费观看久久久4p| 不卡av在线免费观看| 欧美日韩国产片| 国产亚洲欧美色| 亚洲一区二区三区在线看 | 国产成人鲁色资源国产91色综| 91麻豆自制传媒国产之光| 欧美一区二区三区成人| 欧美日韩国产一二三| 亚洲国产成人私人影院tom| 午夜日韩在线电影| av中文字幕一区| 日韩精品在线一区| 亚洲精品成人少妇| 国产一区二区免费看| 在线免费观看日本欧美| 久久亚洲精华国产精华液| 午夜精品一区二区三区电影天堂| 粉嫩欧美一区二区三区高清影视 | 555夜色666亚洲国产免| 国产精品美女一区二区在线观看| 日本中文字幕一区| 色天天综合色天天久久| 国产精品少妇自拍| 狠狠狠色丁香婷婷综合激情| 欧美在线播放高清精品| 亚洲三级电影网站| 国产福利91精品一区二区三区| 欧美精品一二三| 亚洲国产精品精华液2区45| 蜜桃精品视频在线| 欧美精品日韩精品| 夜夜爽夜夜爽精品视频| 91美女在线视频| 国产精品国产三级国产aⅴ原创| 亚洲色图另类专区| 成人在线一区二区三区| 精品国产乱码久久久久久老虎| 午夜精品福利一区二区三区蜜桃| 91在线观看地址| 国产精品天干天干在线综合| 国产一区二区视频在线播放| 日韩视频在线你懂得| 蜜臀av一区二区在线免费观看| 欧美日韩亚洲高清一区二区| 一区二区三区四区中文字幕| 日本久久一区二区| 亚洲激情在线播放| 色综合天天综合网国产成人综合天 | 91天堂素人约啪| 中文字幕一区二区视频| 成人精品视频一区二区三区尤物| 久久免费看少妇高潮| 国产一区二区三区视频在线播放| 欧美一区二区在线不卡| 麻豆91小视频| 日韩久久久久久| 久久国产夜色精品鲁鲁99| 欧美精品一区二区三区视频| 精品制服美女久久| 久久久777精品电影网影网| 国产精品白丝jk黑袜喷水| 中文一区一区三区高中清不卡| 国产高清精品网站| 中文字幕一区二区三区色视频| 97久久精品人人澡人人爽| 亚洲精品高清视频在线观看| 欧美性猛交xxxx乱大交退制版| 日韩精品色哟哟| 精品国产一区二区在线观看| 国产成人综合亚洲91猫咪| 亚洲欧洲美洲综合色网| 色综合 综合色| 五月天激情小说综合| 精品福利一二区| 99久久精品免费看国产| 午夜精品国产更新| 久久网这里都是精品| 成人av免费在线| 亚洲成人免费视频| 久久这里只有精品首页| 一本久道中文字幕精品亚洲嫩| 日韩极品在线观看| 国产午夜精品久久久久久久| 91色视频在线| 蜜桃一区二区三区在线观看|