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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? suititlebar.pas

?? 一套還不錯的DELPHI皮膚控件!
?? PAS
?? 第 1 頁 / 共 4 頁
字號:
///////////////////////////////////////////////////////////////////////////////////
//
//
//  FileName    :   SUITitleBar.pas
//  Creater     :   Shen Min
//  Date        :   2001-10-15 V1-V3
//                  2003-06-15 V4
//  Comment     :
//
//  Copyright (c) 2002-2003 Sunisoft
//  http://www.sunisoft.com
//  Email: support@sunisoft.com
//
////////////////////////////////////////////////////////////////////////////////////

unit SUITitleBar;

interface

{$I SUIPack.inc}

uses Windows, Controls, Classes, Forms, Messages, Graphics, Menus, ExtCtrls,
     Dialogs, SysUtils,
     SUIThemes, SUIMgr, SUIPopupMenu;


type
    TsuiTitleBarSections = class;
    TsuiTitleBarButtons = class;
    TsuiTitleBar = class;

    TsuiTitleBarButtonClickEvent = procedure (Sender : TObject; ButtonIndex : Integer) of object;

    TsuiTitleBarPopupMenu = class(TsuiPopupMenu)
    private
        m_TitleBar : TsuiTitleBar;
        
        procedure OnMin(Sender: TObject);
        procedure OnMax(Sender: TObject);
        procedure OnClose(Sender: TObject);

    public
        constructor Create(AOwner: TComponent); override;
        destructor Destroy(); override;
        procedure Popup(X, Y: Integer); override;

        property TitleBar : TsuiTitleBar read m_TitleBar write m_TitleBar;
    end;


    TsuiTitleBar = class(TCustomPanel)
    private
        m_UIStyle : TsuiUIStyle;
        m_FileTheme : TsuiFileTheme;        
        m_Sections : TsuiTitleBarSections;
        m_Buttons : TsuiTitleBarButtons;
        m_AutoSize : Boolean;
        m_ButtonInterval : Integer;
        m_Caption : TCaption;
        m_Active : Boolean;
        m_LeftBtnXOffset : Integer;
        m_RightBtnXOffset : Integer;
        m_RoundCorner : Integer;
        m_DrawAppIcon : Boolean;
        m_SelfChanging : Boolean;
        m_DefPopupMenu : TsuiTitleBarPopupMenu;
        m_BorderColor : TColor;
        m_Custom : Boolean;

        m_MouseDown : Boolean;
        m_InButtons : Integer;
        m_BtnHeight : Integer;
        m_BtnTop : Integer;

        m_OnBtnClick : TsuiTitleBarButtonClickEvent;
        m_OnHelpBtnClick : TsuiTitleBarButtonClickEvent;

        procedure SetButtons(const Value : TsuiTitleBarButtons);
        procedure SetSections(const Value : TsuiTitleBarSections);
        procedure SetUIStyle(const Value : TsuiUIStyle);
        procedure SetButtonInterval(const Value : Integer);
        procedure SetCaption(const Value : TCaption);
        procedure SetActive(const Value : Boolean);
        procedure SetAutoSize2(Value : Boolean);
        procedure SetLeftBtnXOffset(const Value: Integer);
        procedure SetRightBtnXOffset(const Value: Integer);
        procedure SetDrawAppIcon(const Value: Boolean);
        procedure SetRoundCorner(const Value: Integer);
        procedure SetFileTheme(const Value: TsuiFileTheme);

        procedure UpdateInsideTheme(UIStyle : TsuiUIStyle);
        procedure UpdateFileTheme();

        procedure WMERASEBKGND(var Msg : TMessage); message WM_ERASEBKGND;
        procedure CMFONTCHANGED(var Msg : TMessage); message CM_FONTCHANGED;
        procedure WMNCLBUTTONDOWN(var Msg: TMessage); message WM_NCLBUTTONDOWN;
        procedure WMNCLBUTTONUP(var Msg: TMessage); message WM_NCLBUTTONUP;
        procedure WMNCMOUSEMOVE(var Msg: TMessage); message WM_NCMOUSEMOVE;
        procedure CMDesignHitTest(var Msg: TCMDesignHitTest); message CM_DESIGNHITTEST;

    protected
        procedure Paint(); override;
        procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
        procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
        procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
        procedure DblClick(); override;
        procedure MouseOut(var Msg : TMessage); message CM_MOUSELEAVE;
        procedure Notification(AComponent: TComponent; Operation: TOperation); override;        

        procedure DrawSectionsTo(Buf : TBitmap); virtual;
        procedure DrawButtons(Buf : TBitmap); virtual;

        function InForm() : Boolean;
        function InMDIForm() : Boolean;

    public
        constructor Create(AOwner: TComponent); override;
        destructor Destroy(); override;

        procedure ProcessMaxBtn();
        procedure GetLeftImage(out Bmp : TBitmap);
        procedure GetRightImage(out Bmp : TBitmap);
        procedure GetCenterImage(out Bmp : TBitmap);
        function CanPaint() : Boolean;

        property DefPopupMenu : TsuiTitleBarPopupMenu read m_DefPopupMenu;

    published
        property Custom : Boolean read m_Custom write m_Custom;
        property FileTheme : TsuiFileTheme read m_FileTheme write SetFileTheme;
        property UIStyle : TsuiUIStyle read m_UIStyle write SetUIStyle;
        property AutoSize read m_AutoSize write SetAutoSize2;
        property BiDiMode;
        property Height;
        property Sections : TsuiTitleBarSections read m_Sections write SetSections;
        property Buttons : TsuiTitleBarButtons read m_Buttons write SetButtons;
        property ButtonInterval : Integer read m_ButtonInterval write SetButtonInterval;
        property Caption read m_Caption write SetCaption;
        property Font;
        property FormActive : Boolean read m_Active write SetActive;
        property LeftBtnXOffset : Integer read m_LeftBtnXOffset write SetLeftBtnXOffset;
        property RightBtnXOffset : Integer read m_RightBtnXOffset write SetRightBtnXOffset;
        property DrawAppIcon : Boolean read m_DrawAppIcon write SetDrawAppIcon;
        property RoundCorner : Integer read m_RoundCorner write SetRoundCorner;

        property OnCustomBtnsClick : TsuiTitleBarButtonClickEvent read m_OnBtnClick write m_OnBtnClick;
        property OnHelpBtnClick : TsuiTitleBarButtonClickEvent read m_OnHelpBtnClick write m_OnHelpBtnClick;

    end;

    // ---------------- Buttons ------------------------------------
    TsuiTitleBarBtnType = (suiMax, suiMin, suiClose, suiHelp, suiControlBox, suiCustom);

    TsuiTitleBarButton = class(TCollectionItem)
    private
        m_Visible : Boolean;
        m_ButtonType : TsuiTitleBarBtnType;
        m_Transparent : Boolean;
        m_Top : Integer;
        m_UIStyle : TsuiUIStyle;
        m_PicNormal : TPicture;
        m_PicMouseOn : TPicture;
        m_PicMouseDown : TPicture;
        m_ControlBoxMenu : TPopupMenu;

        procedure SetButtonType(const Value : TsuiTitleBarBtnType);
        procedure SetTransparent(const Value : Boolean);
        procedure SetTop(const Value : Integer);
        procedure SetUIStyle(const Value : TsuiUIStyle);
        procedure SetPicNormal(const Value : TPicture);
        procedure SetPicMouseOn(const Value : TPicture);
        procedure SetPicMouseDown(const Value : TPicture);

        procedure UpdateUIStyle();
        procedure UpdateInsideTheme(UIStyle : TsuiUIStyle);
        procedure UpdateFileTheme();

        procedure ProcessMaxBtn();
        procedure SetVisible(const Value: Boolean);

    public
        procedure DoClick();

        constructor Create(Collection: TCollection); override;
        destructor Destroy; override;

        procedure Assign(Source: TPersistent); override;        

    published
        property UIStyle : TsuiUIStyle read m_UIStyle write SetUIStyle;
        property ButtonType : TsuiTitleBarBtnType read m_ButtonType write SetButtonType;
        property Transparent : Boolean read m_Transparent write SetTransparent;
        property Top : Integer read m_Top write SetTop;
        property ControlBoxMenu : TPopupMenu read m_ControlBoxMenu write m_ControlBoxMenu;
        property Visible :Boolean read m_Visible write SetVisible;

        property PicNormal : TPicture read m_PicNormal write SetPicNormal;
        property PicMouseOn : TPicture read m_PicMouseOn write SetPicMouseOn;
        property PicMouseDown : TPicture read m_PicMouseDown write SetPicMouseDown;

    end;

    TsuiTitleBarButtons = class(TCollection)
    private
        m_TitleBar : TsuiTitleBar;

    protected
        function GetItem(Index: Integer): TsuiTitleBarButton;
        procedure SetItem(Index: Integer; Value: TsuiTitleBarButton);
        procedure Update(Item: TCollectionItem); override;
        function GetOwner : TPersistent; override;

    public
        function Add() : TsuiTitleBarButton;
        constructor Create(TitleBar: TsuiTitleBar);
        property Items[Index: Integer]: TsuiTitleBarButton read GetItem write SetItem;

    end;


    // ---------------- Sections ------------------------------------

    TsuiTitleBarAlign = (suiLeft, suiRight, suiClient);

    TsuiTitleBarSection = class(TCollectionItem)
    private
        m_Width : Integer;
        m_Align : TsuiTitleBarAlign;
        m_Picture : TPicture;
        m_Stretch : Boolean;
        m_AutoSize : Boolean;
        procedure SetPicture(const Value : TPicture);
        procedure SetAutoSize(const Value : Boolean);
        procedure SetWidth(const Value : Integer);
        procedure SetAlign(const Value : TsuiTitleBarAlign);
        procedure SetStretch(const Value : Boolean);

    public
        constructor Create(Collection: TCollection); override;
        destructor Destroy; override;

        procedure Assign(Source: TPersistent); override;        

    published
        property AutoSize : Boolean read m_AutoSize write SetAutoSize;
        property Width : Integer read m_Width write SetWidth;
        property Align : TsuiTitleBarAlign read m_Align write SetAlign;
        property Picture : TPicture read m_Picture write SetPicture;
        property Stretch : Boolean read m_Stretch write SetStretch;

    end;

    TsuiTitleBarSections = class(TCollection)
    private
        m_TitleBar : TsuiTitleBar;

    protected
        function GetItem(Index: Integer): TsuiTitleBarSection;
        procedure SetItem(Index: Integer; Value: TsuiTitleBarSection);

        procedure Update(Item: TCollectionItem); override;
        function GetOwner : TPersistent; override;        

    public
        constructor Create(TitleBar: TsuiTitleBar);
        destructor Destroy(); override;

        function Add() : TsuiTitleBarSection;
        property Items[Index: Integer]: TsuiTitleBarSection read GetItem write SetItem;

    end;

implementation

uses SUIResDef, SUIPublic, SUIForm;

{ TsuiTitleBarPopupMenu }

constructor TsuiTitleBarPopupMenu.Create(AOwner: TComponent);
var
    MenuItem : TMenuItem;
begin
    inherited;

    Self.AutoHotkeys := maManual;

    MenuItem := TMenuItem.Create(nil);
    MenuItem.Caption := SUI_TITLE_MENUITEM_MINIMIZE;
    MenuItem.OnClick := OnMin;
    Items.Add(MenuItem);

    MenuItem := TMenuItem.Create(nil);
    MenuItem.Caption := SUI_TITLE_MENUITEM_MAXIMIZE;
    MenuItem.OnClick := OnMax;
    Items.Add(MenuItem);

    MenuItem := TMenuItem.Create(nil);
    MenuItem.Caption := '-';
    Items.Add(MenuItem);

    MenuItem := TMenuItem.Create(nil);
    MenuItem.Caption := SUI_TITLE_MENUITEM_CLOSE;
    MenuItem.OnClick := OnClose;
    Items.Add(MenuItem);

    MenuAdded();
end;

destructor TsuiTitleBarPopupMenu.Destroy;
begin

    inherited;
end;

procedure TsuiTitleBarPopupMenu.OnClose(Sender: TObject);
var
    ParentForm : TCustomForm;
begin
    ParentForm := GetParentForm(m_TitleBar);
    if ParentForm <> nil then
        ParentForm.Close(); 
end;

procedure TsuiTitleBarPopupMenu.OnMax(Sender: TObject);
var
    i : Integer;
begin
    for i := 0 to m_TitleBar.m_Buttons.Count - 1 do
    begin
        if m_TitleBar.m_Buttons.Items[i].ButtonType = suiMax then
            m_TitleBar.m_Buttons.Items[i].DoClick();
    end;
end;

procedure TsuiTitleBarPopupMenu.OnMin(Sender: TObject);
var
    ParentForm : TCustomForm;
begin
    ParentForm := GetParentForm(m_TitleBar);
    if (ParentForm = nil) or (Application = nil) then
        Exit;
    if ParentForm = Application.MainForm then
        SendMessage(Application.MainForm.Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0)
    else
//        ShowWindow(ParentForm.Handle, SW_SHOWMINIMIZED);
        ParentForm.WindowState := wsMinimized;
end;

procedure TsuiTitleBarPopupMenu.Popup(X, Y: Integer);
var
    i : Integer;
    MinItem, MaxItem, CloseItem : Boolean;
begin
    MinItem := false;
    MaxItem := false;
    CloseItem := false;

    for i := 0 to m_TitleBar.m_Buttons.Count - 1 do
    begin
        if m_TitleBar.m_Buttons.Items[i].ButtonType = suiMin then
            MinItem := true;
        if m_TitleBar.m_Buttons.Items[i].ButtonType = suiMax then
            MaxItem := true;
        if m_TitleBar.m_Buttons.Items[i].ButtonType = suiClose then
            CloseItem := true;
    end;

    Items[0].Enabled := MinItem;
    Items[1].Enabled := MaxItem;
    Items[3].Enabled := CloseItem;

    inherited;
end;

{ TsuiTitleBar }

constructor TsuiTitleBar.Create(AOwner: TComponent);
var
    Btn : TsuiTitleBarButton;
begin
    inherited Create(AOwner);
    ControlStyle := ControlStyle - [csAcceptsControls];
    m_Custom := false;

    m_DefPopupMenu := TsuiTitleBarPopupMenu.Create(self);
    m_DefPopupMenu.TitleBar := self;

    m_Sections := TsuiTitleBarSections.Create(self);
    m_Buttons := TsuiTitleBarButtons.Create(self);

    Btn := m_Buttons.Add();
    Btn.ButtonType := suiControlBox;

    Btn := m_Buttons.Add();
    Btn.ButtonType := suiClose;

    Btn := m_Buttons.Add();
    Btn.ButtonType := suiMax;

    Btn := m_Buttons.Add();
    Btn.ButtonType := suiMin;

    Align := alTop;
    ButtonInterval := 0;
    FormActive := true;

    m_MouseDown := false;
    m_InButtons := -1;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品午夜免费| 久久er99热精品一区二区| 国产精品二三区| 免费人成在线不卡| 欧美乱妇一区二区三区不卡视频| 国产精品久久久久久久裸模 | 国产欧美日韩麻豆91| 黑人精品欧美一区二区蜜桃| 精品久久久久香蕉网| 黄一区二区三区| 国产欧美一区二区三区在线看蜜臀 | 91视频你懂的| 亚洲三级免费观看| 欧美在线一区二区| 美脚の诱脚舐め脚责91| 日韩欧美第一区| 成人av电影免费观看| 国产精品乱码妇女bbbb| 日本韩国欧美在线| 人人狠狠综合久久亚洲| 亚洲国产精品激情在线观看| 99精品国产91久久久久久 | 久久伊人蜜桃av一区二区| 国产精华液一区二区三区| 中文字幕中文字幕一区二区| 欧美这里有精品| 福利电影一区二区三区| 亚欧色一区w666天堂| 国产日产精品1区| 欧美久久久久中文字幕| 欧美性色黄大片手机版| 久久久亚洲综合| 成人av网站在线| 日韩经典一区二区| 亚洲日本丝袜连裤袜办公室| 日韩欧美一区中文| 色激情天天射综合网| 国产精品一区二区免费不卡| 性做久久久久久免费观看欧美| 中文字幕日韩一区二区| 久久久久成人黄色影片| 日韩视频一区在线观看| 欧洲精品中文字幕| 在线看日本不卡| 91在线你懂得| 成人av电影在线| 国产白丝精品91爽爽久久 | 亚洲视频每日更新| 国产精品第13页| 亚洲人一二三区| 亚洲欧洲一区二区三区| 亚洲欧洲在线观看av| 中文字幕在线一区免费| 中文字幕中文字幕一区二区| 国产精品视频一二三区 | 欧美在线观看视频一区二区三区| 成人h精品动漫一区二区三区| 国产精品一区二区免费不卡 | 亚洲aaa精品| 日韩va亚洲va欧美va久久| 日韩专区中文字幕一区二区| 免费成人美女在线观看| 国产精品福利一区| 日韩伦理免费电影| 亚洲精品中文字幕在线观看| 亚洲18女电影在线观看| 国产一区二区三区在线观看精品| 国产自产2019最新不卡| 成人黄色一级视频| 亚洲国产精品视频| 亚洲第一在线综合网站| 日本不卡视频一二三区| 国产综合久久久久久久久久久久| 国产精品一区二区黑丝| 91久久一区二区| 精品国产一区二区亚洲人成毛片| ww久久中文字幕| 亚洲一区二区高清| 国产精品456露脸| 欧美精品三级在线观看| 久久久久97国产精华液好用吗| 亚洲天堂网中文字| 狠狠色丁香久久婷婷综合丁香| 成人美女视频在线看| 日韩精品一区在线观看| 亚洲男女毛片无遮挡| 久久99精品久久久久婷婷| 99久久亚洲一区二区三区青草 | 亚洲国产一区二区a毛片| 国产综合久久久久久鬼色| 日韩一级免费观看| 香蕉成人啪国产精品视频综合网| 国产精品一区免费在线观看| 欧美日本韩国一区二区三区视频| 国产精品久99| 成人免费视频caoporn| www国产精品av| 94-欧美-setu| 日韩精品专区在线影院重磅| 天堂va蜜桃一区二区三区漫画版 | 99免费精品视频| 中文字幕成人av| 久久精品国产99国产精品| 精品国产成人系列| 国产精品夜夜爽| 久久综合精品国产一区二区三区| 日本不卡视频一二三区| 欧美一区二区私人影院日本| 日本vs亚洲vs韩国一区三区二区 | 成人欧美一区二区三区在线播放| 国产激情一区二区三区四区 | 成人免费视频一区| 亚洲色图视频网站| 91精品国产色综合久久久蜜香臀| 亚洲高清视频在线| 欧美精品一区二区三区蜜桃| 国产成人在线视频网站| 自拍偷拍亚洲欧美日韩| 91精品国产一区二区三区香蕉| 免费的国产精品| 亚洲三级在线看| 在线成人av网站| 99久久精品国产毛片| 三级不卡在线观看| 国产精品麻豆久久久| 欧美日韩亚洲国产综合| 国产成人av电影在线观看| 一区二区三区精品视频| 欧美变态tickle挠乳网站| 精品女同一区二区| 国产日韩欧美高清在线| 日本高清视频一区二区| 美女一区二区三区在线观看| 国产精品国产三级国产普通话蜜臀| 欧美亚洲丝袜传媒另类| 丁香婷婷综合网| 久久精品国产色蜜蜜麻豆| 日韩美女精品在线| 久久久久久9999| 日韩写真欧美这视频| 日本精品一区二区三区高清 | 日韩av不卡在线观看| 亚洲免费观看高清完整版在线观看| 欧美一区二区二区| 丁香天五香天堂综合| 免费精品视频在线| 欧美国产日产图区| 538prom精品视频线放| 91久久奴性调教| 欧美一区二区三区视频在线| 久久久久久久久一| 国产精品传媒在线| 秋霞午夜av一区二区三区 | 亚洲成人综合在线| 国产亚洲精品中文字幕| 欧美一区永久视频免费观看| 日本精品一级二级| 极品瑜伽女神91| 亚洲精品视频在线观看免费| 欧美一区二区三区视频在线观看| 韩国v欧美v日本v亚洲v| 亚洲男人的天堂在线观看| 欧美精品一区二区三区一线天视频| 在线精品视频免费播放| 91成人在线精品| 欧美亚洲日本一区| 国产成人福利片| 国产主播一区二区三区| 精品亚洲免费视频| 毛片基地黄久久久久久天堂| 久久精品夜夜夜夜久久| 欧美日韩日日摸| 国产成人av一区二区三区在线| 午夜激情久久久| 国产一二精品视频| 丝袜美腿亚洲一区二区图片| 在线成人免费视频| 三级一区在线视频先锋| 亚洲精品免费在线播放| 亚洲一二三四久久| 日韩在线a电影| 日本亚洲最大的色成网站www| 日本中文字幕一区二区视频| 成人久久久精品乱码一区二区三区 | 欧美电影免费提供在线观看| 日本不卡不码高清免费观看| 欧美日韩精品系列| 欧美亚洲图片小说| 中文字幕五月欧美| 国产精品99久久久久| 日韩女优制服丝袜电影| 亚洲二区在线观看| 久久伊人蜜桃av一区二区| 蜜芽一区二区三区| 91看片淫黄大片一级| 久久久激情视频| 国产精品久久久久久久久久免费看| 中文字幕制服丝袜一区二区三区 | 不卡的电影网站| 91精品国产综合久久福利|