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

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

?? sskinprovider.pas

?? AlphaControls是一個(gè)Delphi標(biāo)準(zhǔn)控件的集合
?? PAS
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
unit sSkinProvider;
{$I sDefs.inc}

interface

{.$DEFINE LOCALDEBUG}

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  sStylePassive, menus, sSkinMenus, sSkinManager, sConst, sScrollBar, sPanel;

type
  TsBorderIcon = (biSystemMenu, biMinimize, biMaximize, biHelp);
  TsBorderIcons = set of TsBorderIcon;

  TsCaptionButton = record
    State : integer;
    ImageIndex : integer;
    Rect : TRect;
  end;

  TsSystemMenu = class;

  TsSkinProvider = class(TComponent)
  private
    FsStyle: TsPassivePaintStyle;
    FsBorderIcons: TsBorderIcons;
    OldCaption : string;
    OldCaption1 : string;
    FMakeSkinMenu: boolean;

    procedure SetBorderIcons(const Value: TsBorderIcons);
    procedure OnVSBChange(Sender : TObject; OldValue : integer);
    procedure OnHSBChange(Sender : TObject; OldValue : integer);
    procedure ScrollBy(x, y : integer);
  protected
    MenusInitialized : boolean;
    RegionChanged : boolean;
    CaptChanged : boolean;
    CaptRgnChanged : boolean;

    VertOffset : integer;
    HorzOffset : integer;
    RangeY : integer;
    RangeX : integer;
    Scrolling : boolean;
    procedure RefreshScrolls;
    function GetVScrollInfo : TsScrollInfo;
    function GetHScrollInfo : TsScrollInfo;
    function Range(Kind : TScrollBarKind) : integer;
    procedure ClearOffset(Kind : TScrollBarKind);
  public
    ArOR : TAOR;
    RgnChanging : boolean;
    Rgnchanged : boolean;
    AutoScroll : boolean;
    VSBar : TsScrollBar;
    HSBar : TsScrollBar;
    Grip : TsGrip;
    Frozen : boolean;

    BoundsNormal : TRect;
    BoundsIconic : TRect;

    CurrentHT : integer;
    FormActive : boolean;
    Ready : boolean;
    TempBmp : TBitmap;
    MenuLineBmp : TBitmap;
    SkinManager : TsSkinManager;

    BGChanged : boolean;
    Form : TForm;
    NewInstance : Pointer;
    OldInstance : Pointer;
    Region : hrgn;
    LinesCount : integer;

    ButtonMin : TsCaptionButton;
    ButtonMax : TsCaptionButton;
    ButtonClose : TsCaptionButton;
    ButtonHelp : TsCaptionButton;

    MDIMin : TsCaptionButton;
    MDIMax : TsCaptionButton;
    MDIClose : TsCaptionButton;

    SystemMenu : TsSystemMenu;

    OldBorderIcons : TBorderIcons;

    MDIForm : TObject;
    OldBorderStyle : TFormBorderStyle;

    Activated : boolean;

    constructor Create(AOwner : TCOmponent); override;
    destructor Destroy; override;
    procedure AfterConstruction; override;
    procedure DoHook;

    function FillScrollInfo(bar : integer; var si : TScrollInfo) : boolean;
    function LastControlBottom : integer;
    function LastControlRight : integer;
    function VertBarVisible : boolean;
    function HorzBarVisible : boolean;

    procedure Loaded; override;
    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
    procedure NewWndProc(var Message: TMessage);
    function HTProcess(Message : TWMNCHitTest) : integer;
    function AboveBorder(Message : TWMNCHitTest) : boolean;

    function MaxWidth: Integer;
    function MaxHeight: Integer;

    function MDIButtonsNeeded : boolean;

    function CursorToPoint(x, y : integer) : TPoint;

    procedure PaintForm(DC : hdc);
    procedure PaintCaption(dc : hdc);
    procedure PaintAll;
    procedure PaintBG;
    procedure PaintBorderIcons;
    procedure UpdateRgn;
    procedure OurPaintHandler(Msg : TWMPaint);

    procedure SetHotHT(i : integer);
    procedure SetPressedHT(i : integer);
    procedure RepaintButton(i : integer);
    procedure DropSysMenu(x, y : integer);
    function OffsetX : integer;
    function OffsetY : integer;
    procedure RepaintMenuItem(mi : TMenuItem; R : TRect; State : TOwnerDrawState);

    function GetItemUnderMouse(p : TSmallPoint; var CurR : TRect) : TMenuItem;
    function FormChanged : boolean;
    function CaptionHeight : integer;

    function HeaderHeight : integer;
    function BorderWidth : integer;
    function BorderHeight : integer;
    function IconRect : TRect;
    function FormLeftTop : TPoint;
    function MenuPresent : boolean;
    function BtnMaxVisible : boolean;
    function IconVisible : boolean;

    function MenuHeight : integer;
    function GetLinesCount : integer;
    function ButtonsCount : integer;
    function ButtonWidth : integer;
    function SmallButtonWidth : integer;
    function ButtonHeight : integer;
    function SmallButtonHeight : integer;
    function BarWidth(i : integer) : integer;
    procedure InitFormSizes;
    procedure UpdateMenu;
    property sStyle : TsPassivePaintStyle read FsStyle write FsStyle;
  published
    property BorderIcons: TsBorderIcons read FsBorderIcons write SetBorderIcons default [biSystemMenu, biMinimize, biMaximize];
    property MakeSkinMenu : boolean read FMakeSkinMenu write FMakeSkinMenu default True;
  end;

  TsSystemMenu = class(TPopupMenu)
  public
    FOwner : TsSkinProvider;
    FForm : TCustomForm;
    ItemRestore : TMenuItem;
    ItemMove : TMenuItem;
    ItemSize : TMenuItem;
    ItemMinimize : TMenuItem;
    ItemMaximize : TMenuItem;
    ItemClose : TMenuItem;
    constructor Create(AOwner : TComponent); override;
    procedure AfterConstruction; override;
    destructor Destroy; override;
    procedure UpdateItems;
    procedure MakeSkinItems;

    function VisibleRestore : boolean;
    function VisibleMove : boolean;
    function VisibleSize : boolean;
    function VisibleMin : boolean;
    function VisibleMax : boolean;
    function VisibleClose : boolean;

    function EnabledRestore : boolean;
    function EnabledMove    : boolean;
    function EnabledSize    : boolean;
    function EnabledMin     : boolean;
    function EnabledMax     : boolean;
    function EnabledClose   : boolean;

    procedure RestoreClick(Sender: TObject);
    procedure MoveClick(Sender: TObject);
    procedure SizeClick(Sender: TObject);
    procedure MinClick(Sender: TObject);
    procedure MaxClick(Sender: TObject);
    procedure CloseClick(Sender: TObject);

    procedure SkinSelect(Sender: TObject);
  end;

const
  ScrollWidth = 18;
  IconicHeight = 26;
  IconicWidth = 160;

var
  Offs : integer;
  RM_TaskBarCreated : DWord;
  HotItem : TMenuItemData;
  SymbolWidth : integer;

function GetSkinProvider(Cmp : TComponent) : TsSkinProvider;

implementation

uses math, sVclUtils, sBorders, sGraphUtils, sSkinProps, sGradient,
{$IFNDEF ALITE}
sShowMessages,
{$ENDIF}
  sMaskData, sUtils, sMessages, sStyleSimply{$IFDEF LOCALDEBUG}, sShowMessages,
  Unit1{$ENDIF}, sStrings, sMDIForm, sAlphaGraph;

function GetSkinProvider(Cmp : TComponent) : TsSkinProvider;
var
  c : TComponent;
  sp : integer;
begin
  Result := nil;
  c := Cmp;
  while Assigned(c) and not (c is TCustomForm) do begin
    c := c.Owner;
  end;
  if (c is TCustomForm) then begin
    sp := SendMessage(TCustomForm(c).Handle, SM_GETPROVIDER, 0, 0);
    if sp <> 0 then
      Result := TsSkinProvider(sp);
  end;
end;

{ TsSkinProvider }

procedure TsSkinProvider.AfterConstruction;
begin
  inherited;
{
  OldInstance := nil;
  NewInstance := nil;
  OldInstance := Pointer(GetWindowLong(Form.Handle, GWL_WNDPROC));
  NewInstance := MakeObjectInstance(NewWndProc);
  SetWindowLong(Form.Handle, GWL_WNDPROC, LongInt(NewInstance));
}
  DoHook;

  RM_TaskBarCreated      := RegisterWindowMessage('TaskbarCreated');
  sStyle.SkinIndex       := sStyle.GetSkinIndex;
  sStyle.BorderIndex     := sStyle.GetMaskIndex(BordersMask);
  ButtonMin.ImageIndex   := sStyle.GetMaskIndex(BorderIconMinimize);
  ButtonMax.ImageIndex   := sStyle.GetMaskIndex(BorderIconMaximize);
  ButtonClose.ImageIndex := sStyle.GetMaskIndex(BorderIconClose);
  ButtonHelp.ImageIndex  := sStyle.GetMaskIndex(BorderIconHelp);
  MDIMin.ImageIndex      := sStyle.GetMaskIndex(SmallIconMinimize);
  MDIMax.ImageIndex      := sStyle.GetMaskIndex(SmallIconMaximize);
  MDIClose.ImageIndex    := sStyle.GetMaskIndex(SmallIconClose);
  InitFormSizes;

  if (Form.FormStyle = fsMDIForm) and not (csDesigning in ComponentState) then begin
    MDISkinProvider := Self;
    TsMDIForm(MDIForm) := TsMDIForm.Create(Self);
  end;

  // If form is MDIChild and menus are merged then
  if (Form.FormStyle = fsMDIChild) {and Assigned(Form.Menu)} then begin
    if Assigned(MDISkinProvider) and
         not (csDestroying in TsSkinProvider(MDISkinProvider).ComponentState) and
           not (csDestroying in TsSkinProvider(MDISkinProvider).Form.ComponentState) and sSkinData.Active
             then begin
      TsSkinProvider(MDISkinProvider).BGChanged := True;
      SendMessage(TsSkinProvider(MDISkinProvider).Form.Handle, WM_NCPAINT, 0, 0);

      TsMDIForm(TsSkinProvider(MDISkinProvider).MDIForm).RefreshScrolls;
    end;
  end;

{  SystemMenu := TsSystemMenu.Create(Self);
  SystemMenu.FForm := Form;
  SystemMenu.UpdateItems;}
end;

function TsSkinProvider.BarWidth(i : integer): integer;
begin
  Result := (ma[i].Bmp.Width div 9) * 2 + ButtonsCount * ButtonWidth;
//  Result := (ma[i].Bmp.Width div 3);
end;

function TsSkinProvider.BorderHeight: integer;
begin
  Result := GetSystemMetrics(SM_CYFRAME);// * integer(Form.BorderStyle = bsNone);
  case Form.BorderStyle of
    {bsToolWindow,} bsSingle, bsDialog : begin
      dec(Result)
    end;
    bsNone : Result := 0;
  end;
end;

function TsSkinProvider.BorderWidth: integer;
begin
  Result := GetSystemMetrics(SM_CXFRAME);// * integer(Form.BorderStyle = bsNone);
  case Form.BorderStyle of
    bsToolWindow, bsSingle, bsDialog : begin
      dec(Result)
    end;
    bsNone : Result := 0;
  end;
end;

function TsSkinProvider.ButtonHeight: integer;
begin
  if IsValidImgIndex(ButtonClose.ImageIndex) then begin
     Result := ma[ButtonClose.ImageIndex].Bmp.Height div 2;
  end
  else Result := 21;
end;

function TsSkinProvider.ButtonsCount: integer;
begin
  Result := 0;
  if (biSystemMenu in BorderIcons) then begin
    inc(Result);
    if SystemMenu.VisibleMax then begin
      inc(Result);
    end;
    if SystemMenu.VisibleMin then begin
      inc(Result);
    end;
    if (biHelp in BorderIcons) then begin
      inc(Result);
    end;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97精品久久久久中文字幕| 欧美人与z0zoxxxx视频| 亚洲成人av在线电影| 久久视频一区二区| 欧美在线影院一区二区| 国产一区二区日韩精品| 亚洲成a人片在线不卡一二三区| 久久久久久久久免费| 欧美一区二区在线看| 91视频观看视频| 国产九色sp调教91| 奇米在线7777在线精品| 亚洲午夜在线观看视频在线| 国产精品国模大尺度视频| 欧美精品一区视频| 欧美一级夜夜爽| 欧美日韩一二区| 日本精品一区二区三区四区的功能| 国产激情视频一区二区三区欧美| 久久机这里只有精品| 视频一区视频二区中文| 亚洲成人综合视频| 亚洲综合激情网| 一区二区在线观看视频在线观看| 国产精品久久久久久妇女6080 | 欧美色视频一区| av亚洲精华国产精华| 国产剧情一区二区| 国产麻豆午夜三级精品| 老司机一区二区| 青青草国产成人av片免费| 日日摸夜夜添夜夜添国产精品| 亚洲影院免费观看| 亚洲一区二区三区中文字幕在线| 一区二区三区免费| 亚洲综合在线视频| 亚洲一区在线视频| 亚洲亚洲精品在线观看| 亚洲二区在线视频| 日韩国产在线一| 青草国产精品久久久久久| 免费成人美女在线观看.| 乱中年女人伦av一区二区| 日韩成人免费电影| 男男成人高潮片免费网站| 免费观看成人鲁鲁鲁鲁鲁视频| 蜜臀av国产精品久久久久| 卡一卡二国产精品| 国产精品主播直播| 成人av动漫在线| 在线区一区二视频| 91精品久久久久久久99蜜桃| 日韩视频国产视频| 久久午夜色播影院免费高清 | 2020国产精品| 中文欧美字幕免费| 亚洲男人电影天堂| 天堂一区二区在线| 激情欧美日韩一区二区| jizzjizzjizz欧美| 欧美日韩国产成人在线91| 欧美成人伊人久久综合网| 国产欧美综合在线观看第十页| 国产日产亚洲精品系列| 亚洲欧美一区二区三区孕妇| 爽爽淫人综合网网站| 国产乱码精品一区二区三区忘忧草| www.欧美亚洲| 欧美婷婷六月丁香综合色| 精品人在线二区三区| 一区在线播放视频| 日韩电影免费在线观看网站| 国产suv一区二区三区88区| 在线视频你懂得一区| 欧美一级片在线看| 日本一区二区三区久久久久久久久不 | 中文字幕不卡三区| 亚洲成av人片| 国产91富婆露脸刺激对白| 91成人在线免费观看| 欧美videossexotv100| 国产精品不卡一区| 日韩国产欧美在线播放| 成人动漫视频在线| 777奇米成人网| 国产精品久久久久久久久免费相片| 亚洲成人免费影院| 波多野结衣亚洲| 精品免费视频.| 一片黄亚洲嫩模| 国产成人在线视频网址| 555www色欧美视频| 亚洲色图视频免费播放| 国内精品久久久久影院薰衣草 | 亚洲国产精品一区二区www| 国产一区三区三区| 欧美精品乱码久久久久久| 国产精品美女久久久久久久久久久 | 国产肉丝袜一区二区| 亚洲超碰精品一区二区| 99麻豆久久久国产精品免费| 欧美成人精品1314www| 亚洲国产aⅴ成人精品无吗| 成人激情综合网站| 精品国产欧美一区二区| 天天色天天爱天天射综合| 91免费观看国产| 国产欧美一区二区精品性| 美女在线视频一区| 欧美区一区二区三区| 一区二区三区四区不卡在线| 99久久夜色精品国产网站| 国产色产综合色产在线视频| 激情另类小说区图片区视频区| 91 com成人网| 图片区小说区国产精品视频| 色吊一区二区三区| 综合自拍亚洲综合图不卡区| 豆国产96在线|亚洲| 久久久久久久免费视频了| 精品一区二区三区在线观看 | 欧美一级一级性生活免费录像| 亚洲一区二区三区四区在线免费观看| av电影在线观看一区| 国产欧美日韩精品一区| 国产成人精品网址| 久久久久免费观看| 国产激情一区二区三区四区| 久久亚洲综合色| 国产剧情在线观看一区二区| 久久影院视频免费| 国产麻豆精品theporn| 26uuu久久综合| 国内不卡的二区三区中文字幕| 日韩欧美高清一区| 久久成人18免费观看| 精品国产露脸精彩对白 | 99久久99久久精品免费看蜜桃 | 另类小说图片综合网| 91精品国产综合久久久久久久 | 国产精品久久久久久久久图文区| 国产99久久精品| 中文字幕一区二区三区蜜月| 93久久精品日日躁夜夜躁欧美| 国产精品美女一区二区在线观看| 波波电影院一区二区三区| 中文字幕亚洲一区二区va在线| 91在线视频官网| 亚洲精品视频在线| 欧美日韩亚洲另类| 美女视频第一区二区三区免费观看网站 | 亚洲成人午夜电影| 日韩欧美一二三四区| 国产精品伊人色| 国产精品第四页| 欧美性色综合网| 青青草97国产精品免费观看 | 国产欧美综合在线观看第十页| 成人激情黄色小说| 亚洲午夜私人影院| 日韩免费高清视频| 暴力调教一区二区三区| 亚洲国产成人精品视频| 精品国产免费一区二区三区四区| 丁香一区二区三区| 亚洲一区二区精品久久av| 日韩欧美成人激情| www.亚洲人| 日本不卡123| 国产精品美女久久久久久久久久久| 色天天综合色天天久久| 裸体一区二区三区| 国产精品久久久久一区二区三区共| 欧美日韩免费高清一区色橹橹 | 欧美日韩精品一二三区| 久久91精品国产91久久小草 | 亚洲精品成人少妇| 欧美一区二区三区人| a级精品国产片在线观看| 亚洲成av人片一区二区三区| 久久久久久久综合日本| 欧美最新大片在线看 | 一区二区日韩av| 精品粉嫩超白一线天av| 色吧成人激情小说| 国产精品亚洲а∨天堂免在线| 一区二区三区在线观看视频| 精品少妇一区二区三区视频免付费| 色www精品视频在线观看| 国产精品主播直播| 日韩福利视频网| 亚洲男同性恋视频| 国产偷国产偷亚洲高清人白洁| 欧美日韩一级片网站| 波多野结衣中文一区| 亚洲成人在线网站| 最好看的中文字幕久久| 精品成a人在线观看| 欧美日韩亚洲综合在线| av电影在线观看一区|