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

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

?? suimgr.pas

?? 一套還不錯(cuò)的DELPHI皮膚控件!
?? PAS
字號(hào):
////////////////////////////////////////////////////////////////////////////////
//
//
//  FileName    :   SUIMgr.pas
//  Creator     :   Shen Min
//  Date        :   2003-02-26
//  Comment     :
//
//  Copyright (c) 2002-2003 Sunisoft
//  http://www.sunisoft.com
//  Email: support@sunisoft.com
//
////////////////////////////////////////////////////////////////////////////////

unit SUIMgr;

interface

{$I SUIPack.inc}

uses Windows, Classes, Controls, SysUtils, Forms, TypInfo, Graphics, Dialogs,
     SUIThemes;

type
    // --------- TsuiFileTheme --------------------
    TsuiFileTheme = class(TComponent)
    private
        m_Mgr : TsuiFileThemeMgr;
        m_ThemeFile : String;
        m_CanUse : Boolean;

        procedure SetThemeFile(const Value: String);

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

        function CanUse() : Boolean;
        
        procedure GetBitmap(const Index : Integer; const Buf : TBitmap); overload;
        procedure GetBitmap(const Index : Integer; const Buf : TBitmap; SpitCount, SpitIndex : Integer); overload;
        function GetInt(const Index : Integer) : Integer;
        function GetColor(const Index : Integer) : TColor;
        function GetBool(const Index : Integer) : Boolean;

        function CheckThemeFile(FileName : String) : Boolean;

    published
        property ThemeFile : String read m_ThemeFile write SetThemeFile;

    end;

    TsuiBuiltInFileTheme = class(TsuiFileTheme)
    private
        m_OldThemeFile : String;
        
        procedure SetThemeFile2(const Value: String);
        procedure ReadSkinData(Stream: TStream);
        procedure WriteSkinData(Stream : TStream);

    protected
        procedure DefineProperties(Filer: TFiler); override;

    published
        property ThemeFile : String read m_OldThemeFile write SetThemeFile2;
    end;

    // --------- TsuiThemeManager -----------------
    TsuiThemeMgrCompList = class(TStringList)
    end;

    TsuiThemeManager = class(TComponent)
    private
        m_UIStyle : TsuiUIStyle;
        m_FileTheme : TsuiFileTheme;
        m_List : TsuiThemeMgrCompList;
        m_OnUIStyleChanged : TNotifyEvent;

        procedure SetUIStyle(const Value: TsuiUIStyle);
        procedure UpdateAll();

        procedure SetList(const Value: TsuiThemeMgrCompList);
        procedure SetFileTheme(const Value: TsuiFileTheme);

    protected
        procedure Notification(AComponent: TComponent; Operation: TOperation); override;

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

        procedure UpdateTheme();
        
    published
        property UIStyle : TsuiUIStyle read m_UIStyle write SetUIStyle;
        property FileTheme : TsuiFileTheme read m_FileTheme write SetFileTheme;
        property CompList : TsuiThemeMgrCompList read m_List write SetList;

        property OnUIStyleChanged : TNotifyEvent read m_OnUIStyleChanged write m_OnUIStyleChanged;
    end;

    procedure ThemeManagerEdit(AComp : TsuiThemeManager);
    procedure FileThemeEdit(AComp : TsuiFileTheme);
    procedure BuiltInFileThemeEdit(AComp : TsuiBuiltInFileTheme);

    function UsingFileTheme(
        const FileTheme : TsuiFileTheme;
        const UIStyle : TsuiUIStyle;
        out SuggUIStyle : TsuiUIStyle
    ) : Boolean;


implementation

uses frmThemeMgr, SUIThemeFile, SUIPublic;

procedure ThemeManagerEdit(AComp : TsuiThemeManager);
var
    frmMgr: TfrmMgr;
    Form : TForm;
    i : Integer;
    nIndex : Integer;
    Comp : TComponent;
begin
    if not (AComp.Owner is TForm) then
        Exit;
    Form := (AComp.Owner as TForm);
    frmMgr := TfrmMgr.Create(nil);

    for i := 0 to Form.ComponentCount - 1 do
    begin
        Comp := Form.Components[i];
        if (
            (Copy(Comp.ClassName, 1, 4) = 'Tsui') and
            (IsHasProperty(Comp, 'UIStyle')) and
            (IsHasProperty(Comp, 'FileTheme')) and
            not (Comp is TsuiThemeManager)
        ) then
        begin
            nIndex := frmMgr.List.Items.AddObject(Comp.Name, Comp);
            if AComp.m_List.IndexOf(Comp.Name) = -1 then
                frmMgr.List.Checked[nIndex] := false
            else
                frmMgr.List.Checked[nIndex] := true;
        end;
    end;

    if frmMgr.ShowModal() = mrOK then
    begin
        AComp.m_List.Clear();
        for i := 0 to frmMgr.List.Items.Count - 1 do
        begin
            if frmMgr.List.Checked[i] then
                AComp.m_List.Add(frmMgr.List.Items[i]);
        end;
    end;
    frmMgr.Free();

    AComp.UpdateAll();
end;

procedure FileThemeEdit(AComp : TsuiFileTheme);
var
    OpenDialog: TOpenDialog;
begin
    OpenDialog := TOpenDialog.Create(Application);
    OpenDialog.Filter := 'SUIPack Theme File(*.sui)|*.sui';
    if OpenDialog.Execute() then
        AComp.ThemeFile := OpenDialog.FileName;
    OpenDialog.Free();
end;

procedure BuiltInFileThemeEdit(AComp : TsuiBuiltInFileTheme);
var
    OpenDialog: TOpenDialog;
begin
    OpenDialog := TOpenDialog.Create(Application);
    OpenDialog.Filter := 'SUIPack Theme File(*.sui)|*.sui';
    if OpenDialog.Execute() then
        AComp.ThemeFile := OpenDialog.FileName;
    OpenDialog.Free();
end;

{ TsuiThemeManager }

constructor TsuiThemeManager.Create(AOwner: TComponent);
begin
    inherited;

    m_List := TsuiThemeMgrCompList.Create();
    UIStyle := SUI_THEME_DEFAULT;
end;

destructor TsuiThemeManager.Destroy;
begin
    m_List.Free();
    m_List := nil;

    inherited;
end;

procedure TsuiThemeManager.Notification(AComponent: TComponent;
  Operation: TOperation);
var
    nIndex : Integer;
begin
    inherited;

    if AComponent = nil then
        Exit;

    if (Operation = opRemove) and (AComponent <> self) then
    begin
        nIndex := m_List.IndexOf(AComponent.Name);
        if nIndex <> -1 then
            m_List.Delete(nIndex);
    end;

    if (
        (Operation = opRemove) and
        (AComponent = m_FileTheme)
    )then
    begin
        m_FileTheme := nil;
        m_UIStyle := SUI_THEME_DEFAULT;
    end;
end;

procedure TsuiThemeManager.SetFileTheme(const Value: TsuiFileTheme);
begin
    m_FileTheme := Value;
    SetUIStyle(m_UIStyle);    
end;

procedure TsuiThemeManager.SetList(const Value: TsuiThemeMgrCompList);
begin
    m_List.Assign(Value);
end;

procedure TsuiThemeManager.SetUIStyle(const Value: TsuiUIStyle);
var
    NeedUpdate : Boolean;
begin
    if m_UIStyle = Value then
        NeedUpdate := false
    else
        NeedUpdate := true;
    m_UIStyle := Value;
    UpdateAll();
    if NeedUpdate then
        if Assigned(m_OnUIStyleChanged) then
            m_OnUIStyleChanged(self);
end;

procedure TsuiThemeManager.UpdateAll;
var
    i : Integer;
    Comp : TComponent;
    Form : TCustomForm;
begin
    if not (Owner is TForm) then
        Exit;
    Form := Owner as TForm;

    for i := 0 to m_List.Count - 1 do
    begin
        Comp := Form.FindComponent(m_List[i]);
        if Comp = nil then
            continue;
        SetOrdProp(Comp, 'UIStyle', Ord(UIStyle));
        SetObjectProp(Comp, 'FileTheme', m_FileTheme);        
    end;
end;

procedure TsuiThemeManager.UpdateTheme;
begin
    UpdateAll();
end;

{ TsuiFileTheme }

function TsuiFileTheme.CanUse: Boolean;
begin
    Result := m_CanUse;
end;

function TsuiFileTheme.CheckThemeFile(FileName: String): Boolean;
begin
    Result := IsSUIThemeFile(FileName);
end;

constructor TsuiFileTheme.Create(AOwner: TComponent);
begin
    inherited;

    m_Mgr := TsuiFileThemeMgr.Create();
    m_CanUse := false;
end;

destructor TsuiFileTheme.Destroy;
begin
    m_Mgr.Free();
    m_Mgr := nil;

    inherited;
end;

procedure TsuiFileTheme.GetBitmap(const Index: Integer;
  const Buf: TBitmap);
begin
    m_Mgr.GetBitmap(Index, Buf);
end;

procedure TsuiFileTheme.GetBitmap(const Index: Integer; const Buf: TBitmap;
  SpitCount, SpitIndex: Integer);
var
    TempBmp : TBitmap;
begin
    TempBmp := TBitmap.Create();
    m_Mgr.GetBitmap(Index, TempBmp);
    SpitBitmap(TempBmp, Buf, SpitCount, SpitIndex);
    TempBmp.Free();
end;

function TsuiFileTheme.GetBool(const Index: Integer): Boolean;
begin
    Result := m_Mgr.GetBool(Index);
end;

function TsuiFileTheme.GetColor(const Index: Integer): TColor;
begin
    Result := m_Mgr.GetColor(Index);
end;

function TsuiFileTheme.GetInt(const Index: Integer): Integer;
begin
    Result := m_Mgr.GetInt(Index);
end;

procedure TsuiFileTheme.SetThemeFile(const Value: String);
    function PCharToStr(pstr : PChar) : String;
    begin
        if StrLen(pstr) = 0 then
            Result := ''
        else
        begin
            Result := pstr;
            SetLength(Result, StrLen(pstr));
        end;
    end;
    function GetWindowsPath() : String;
    var
        WindowsPath : array [0..MAX_PATH - 1] of Char;
    begin
        GetWindowsDirectory(WindowsPath, MAX_PATH);
        Result := PCharToStr(WindowsPath);
        if Result[Length(Result)] <> '\' then
            Result := Result + '\'
    end;
    function GetSystemPath() : String;
    var
        SystemPath : array [0..MAX_PATH - 1] of Char;
    begin
        GetSystemDirectory(SystemPath, MAX_PATH);
        Result := PCharToStr(SystemPath);
        if Result[Length(Result)] <> '\' then
            Result := Result + '\'        
    end;
var
    FileName : String;
    PathName : String;
    i : Integer;
    Form : TForm;
    Comp : TComponent;
begin
    if (m_ThemeFile = Value) then
        Exit;
    FileName := Value;
    
    if not FileExists(FileName) then
    begin
        PathName := ExtractFilePath(Application.ExeName);
        if PathName[Length(PathName)] <> '\' then
            PathName := PathName + '\';
        FileName := PathName + ExtractFileName(FileName);
        if not FileExists(FileName) then
        begin
            PathName := GetWindowsPath();
            FileName := PathName + ExtractFileName(FileName);
            if not FileExists(FileName) then
            begin
                PathName := GetSystemPath();
                FileName := PathName + ExtractFileName(FileName);
                if not FileExists(FileName) then
                    Exit;
            end;
        end;
    end;

    if not CheckThemeFile(FileName) then
        raise Exception.Create('Invalid skin file for SUIPack!');
    
    m_ThemeFile := FileName;
    m_CanUse := m_Mgr.LoadFromFile(m_ThemeFile);

    if (not m_CanUse) or (not (Owner is TForm)) then
        Exit;
    Form := Owner as TForm;
    for i := 0 to Form.ComponentCount - 1 do
    begin
        Comp := Form.Components[i];
        if (
            (Copy(Comp.ClassName, 1, 4) = 'Tsui') and
            (IsHasProperty(Comp, 'FileTheme'))
        ) then
        begin
            if GetObjectProp(Comp, 'FileTheme') = self then
                SetObjectProp(Comp, 'FileTheme', self);
        end;
    end;
end;

function UsingFileTheme(
    const FileTheme : TsuiFileTheme;
    const UIStyle : TsuiUIStyle;
    out SuggUIStyle : TsuiUIStyle
) : Boolean;
begin
    Result := false;
    SuggUIStyle := UIStyle;
    
    if UIStyle = FromThemeFile then
    begin
        if FileTheme = nil then
            SuggUIStyle := SUI_THEME_DEFAULT
        else if FileTheme.CanUse() then
        begin
            Result := true;
            Exit;
        end
        else
            SuggUIStyle := SUI_THEME_DEFAULT;
    end;
end;
    
{ TsuiBuiltInFileTheme }

procedure TsuiBuiltInFileTheme.DefineProperties(Filer: TFiler);
    function DoWrite() : Boolean;
    begin
        if FileExists(m_OldThemeFile) then
            Result := true
        else
            Result := false;
    end;
begin
    inherited;

    Filer.DefineBinaryProperty('SkinData', ReadSkinData, WriteSkinData, DoWrite);
end;

procedure TsuiBuiltInFileTheme.ReadSkinData(Stream: TStream);
    function GetTempPath() : String;
    var
        TempPath : array [0..MAX_PATH - 1] of Char;
    begin
        Windows.GetTempPath(MAX_PATH, TempPath);
        Result := PCharToStr(TempPath);
        if Result[Length(Result)] <> '\' then
            Result := Result + '\'
    end;
    function GetUniqueFileName(const BaseName : String) : String;
    var
        i : Integer;
        BaseFileName : String;
        FileExt : String;
    begin
        Result := BaseName;
        FileExt := ExtractFileExt(BaseName);
        BaseFileName := ChangeFileExt(BaseName, '');
        i := 0;
        while FileExists(Result) do
        begin
            Inc(i);
            Result := BaseFileName + IntToStr(i) + FileExt;
        end;
    end;
var
    S : TMemoryStream;
    F : String;
begin
    S := TMemoryStream.Create();
    S.CopyFrom(Stream, Stream.Size);
    F := GetUniqueFileName(GetTempPath() + 'SUIPAKT.sui');
    S.SaveToFile(F);
    inherited ThemeFile := F;
    S.Free();
    DeleteFile(F);
end;

procedure TsuiBuiltInFileTheme.SetThemeFile2(const Value: String);
begin
    m_OldThemeFile := Value;
end;

procedure TsuiBuiltInFileTheme.WriteSkinData(Stream: TStream);
var
    S : TMemoryStream;
begin
    S := TMemoryStream.Create();
    S.LoadFromFile(m_OldThemeFile);
    Stream.CopyFrom(S, S.Size);
    S.Free();   
end;

end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人高清视频| 国产精品久久久久久久久搜平片| 日韩欧美激情一区| 久久综合久久99| 综合色中文字幕| 日韩电影在线免费观看| 精品亚洲欧美一区| 91丨九色丨蝌蚪富婆spa| 欧美日韩中文一区| 久久久久久99精品| 一区二区三区免费观看| 精品一区在线看| 91视频你懂的| 欧美成人高清电影在线| 亚洲欧美日韩综合aⅴ视频| 日本vs亚洲vs韩国一区三区 | 欧美mv日韩mv国产网站app| 久久精品人人做人人综合| 亚洲精品高清在线观看| 黄色日韩三级电影| 91久久线看在观草草青青| 欧美一卡二卡在线| 最新中文字幕一区二区三区 | 日韩亚洲欧美在线观看| 国产精品久久看| 奇米影视一区二区三区小说| 成人一区在线观看| 欧美一区二区三区色| 亚洲日本一区二区| 激情图片小说一区| 欧美午夜电影在线播放| 欧美国产一区在线| 久久成人免费网站| 欧美视频第二页| 国产精品福利一区二区三区| 奇米一区二区三区av| 在线观看网站黄不卡| 亚洲国产精品精华液2区45| 美女视频免费一区| 欧美在线免费视屏| 国产精品入口麻豆原神| 久久精品国产久精国产爱| 在线观看欧美日本| 国产精品国产三级国产aⅴ原创| 蜜桃av一区二区三区电影| 在线亚洲精品福利网址导航| 亚洲国产精品传媒在线观看| 狠狠v欧美v日韩v亚洲ⅴ| 在线播放日韩导航| 一区二区三区中文字幕电影 | 成人欧美一区二区三区在线播放| 玖玖九九国产精品| 欧美精品久久一区| 亚洲一卡二卡三卡四卡| 99久久精品免费看国产免费软件| 久久蜜桃av一区二区天堂| 久久国产精品99久久久久久老狼| 欧美日韩日日摸| 一个色在线综合| 91福利视频网站| 亚洲三级电影全部在线观看高清| 国产aⅴ综合色| 久久久久久日产精品| 国模冰冰炮一区二区| 精品国产乱码久久久久久影片| 亚洲福中文字幕伊人影院| 91久久精品一区二区二区| 亚洲欧洲精品一区二区精品久久久| 国产成人精品免费一区二区| 国产午夜精品一区二区三区嫩草| 国产在线国偷精品免费看| 日韩欧美资源站| 麻豆传媒一区二区三区| 91精品一区二区三区久久久久久 | 666欧美在线视频| 日韩国产在线观看一区| 欧美精品粉嫩高潮一区二区| 午夜欧美一区二区三区在线播放| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 亚洲日本va午夜在线影院| 99久久精品国产一区二区三区| 国产精品久久二区二区| 91麻豆视频网站| 亚洲午夜三级在线| 欧美剧情片在线观看| 奇米精品一区二区三区在线观看| 91精品国产综合久久精品性色| 舔着乳尖日韩一区| 欧美电影免费观看高清完整版在线观看| 美女视频免费一区| 欧美激情在线免费观看| 91蜜桃免费观看视频| 一区二区三区欧美日韩| 欧美日韩1区2区| 久久99久久精品| 久久夜色精品国产噜噜av| 国产91在线观看| 综合av第一页| 欧美日韩久久不卡| 久久精品国产澳门| 欧美国产97人人爽人人喊| 一本色道久久综合亚洲aⅴ蜜桃| 亚洲一级二级在线| 91精品国产免费| 国产精品一级在线| 亚洲精品成人少妇| 欧美一级黄色片| 国产激情视频一区二区在线观看 | 正在播放亚洲一区| 国内精品写真在线观看| 1000精品久久久久久久久| 精品视频一区三区九区| 麻豆精品久久精品色综合| 中文字幕一区在线| 欧美日韩电影一区| 国产激情一区二区三区桃花岛亚洲| 亚洲色图在线视频| 91精品国产综合久久精品麻豆| 丁香五精品蜜臀久久久久99网站 | 日本电影欧美片| 狂野欧美性猛交blacked| **网站欧美大片在线观看| 欧美一级国产精品| 91亚洲精华国产精华精华液| 日韩成人av影视| 欧美福利一区二区| 国产成人精品aa毛片| 亚洲美女免费视频| 久久久久久久久久久99999| 不卡视频在线看| 亚洲r级在线视频| 51午夜精品国产| 国产传媒日韩欧美成人| 亚洲最色的网站| 欧美午夜视频网站| 成人福利电影精品一区二区在线观看| 亚洲综合一区在线| 欧美大黄免费观看| av激情成人网| 老色鬼精品视频在线观看播放| 日本一区免费视频| 在线观看国产91| 国产在线国偷精品免费看| 一个色综合av| 国产精品理论片| 91精品啪在线观看国产60岁| 成人免费视频视频| 视频一区二区三区中文字幕| 久久久久99精品国产片| 欧美三片在线视频观看| 国产69精品久久久久毛片| 香港成人在线视频| 久久久久久久久久久黄色| 3d动漫精品啪啪1区2区免费 | 91麻豆自制传媒国产之光| 精油按摩中文字幕久久| 亚洲裸体在线观看| 久久免费偷拍视频| 日韩美女视频在线| 在线观看日韩av先锋影音电影院| 国产激情91久久精品导航| 日韩综合一区二区| 日韩理论在线观看| 久久亚洲捆绑美女| 欧美三级视频在线| 国产一区二区三区在线观看免费视频 | 日韩av一区二区三区四区| 一区在线播放视频| 久久久亚洲午夜电影| 5月丁香婷婷综合| 欧美日韩一区二区在线观看| 不卡av在线网| 国产精品88888| 人禽交欧美网站| 亚洲大片一区二区三区| 国产精品成人网| 国产色综合久久| 精品久久免费看| 精品国产乱码久久久久久图片 | 久久精品欧美一区二区三区不卡 | 欧美精品 国产精品| 91色视频在线| 成人成人成人在线视频| 国内精品不卡在线| 国模娜娜一区二区三区| 美腿丝袜亚洲三区| 日韩中文字幕区一区有砖一区| 亚洲伦在线观看| 国产精品免费久久| 国产欧美精品一区二区色综合朱莉 | 久久奇米777| 精品对白一区国产伦| 久久久久国色av免费看影院| 欧美videossexotv100| 91精品国产aⅴ一区二区| 欧美日韩三级视频| 欧美美女一区二区| 这里只有精品视频在线观看| 欧美日韩国产另类不卡| 欧美日韩一区 二区 三区 久久精品|