⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tetheme.pas

📁 这个东西的功能很强大
💻 PAS
📖 第 1 页 / 共 5 页
字号:
{==============================================================================

  Abstract Theme Definition
  Copyright (C) 2000-2003 by Evgeny Kryukov
  All rights reserved

===============================================================================}

unit TeTheme;

{$I TeDefine.inc}

interface

uses Windows, Messages, Sysutils, Classes, Graphics, Controls, Menus, Grids,
  StdCtrls, Forms, ImgList, Consts, TeBitmap, TeUtils;

{!============================================================================!}

const
  ktThemeVersion = '4.3.0';
  ktThemeVersionPropText = 'LibTheme Version ' + ktThemeVersion;

type
  TktThemeVersion = type string;

var
  Sig: PChar = '- ' + ktThemeVersionPropText +
    {$IFDEF KS_DELPHI4} ' - D4 - '+ {$ENDIF}
    {$IFDEF KS_CBUILDER4} ' - CB4 - ' + {$ENDIF}
    {$IFDEF KS_DELPHI5} ' - D5 - '+ {$ENDIF}
    {$IFDEF KS_CBUILDER5} ' - CB5 - '+ {$ENDIF}
    {$IFDEF KS_DELPHI6} ' - D6 - '+ {$ENDIF}
    {$IFDEF KS_CBUILDER6} ' - CB6 - '+ {$ENDIF}
    {$IFDEF KS_DELPHI7} ' - D7 - '+ {$ENDIF}
    'Copyright (C) 1998-2003 by Evgeny Kryukov -';


type

  { Theme region }

  TteRegion = HRgn;

{ Common consts ===============================================================}

const

  { Empty Rect }

  NullRect: TRect = (Left: -1; Top: -1; Right: -1; Bottom: -1);

{ Theme classes ===============================================================}

const

  ktcWindowClass         = 'Window';
  ktcButtonClass         = 'Button';
  ktcScrollClass         = 'Scroll';
  ktcBarClass		 = 'Bar';


{ Theme objects ===============================================================}

type

  TteThemeObject        = string;

const

  ktoDefault             = 'default';

{ Background types ============================================================}

type

  TteBackgroundInfo = record
    Rect: TRect;
    Control: TControl;
    ClipRect: TRect;
  end;


{ Text types ==================================================================}

type

  { Text alignment  }

  TteTextAlign = (
    ktxaTopLeft,
    ktxaMiddleLeft,
    ktxaBottomLeft,
    ktxaTopCenter,
    ktxaMiddleCenter,
    ktxaBottomCenter,
    ktxaTopRight,
    ktxaMiddleRight,
    ktxaBottomRight
  );

  { Text style  }

  TteTextStyle = (
    ktxsDropShadow, { Unavailable now }
    ktxsRTLReading,
    ktxsNoPrefix,
    ktxsWordBreak,
    ktxsSingleLine
  );

  TteTextStyles = set of TteTextStyle;

  { Text orientation }

  TteTextOrientation = (
    ktxoHorizontal,
    ktxoVerticalTop,
    ktxoVerticalBottom
  );

  TteTextInfo = record
    Rect: TRect;
    Text: WideString;
    Align: TteTextAlign;
    Style: TteTextStyles;
    Orientation: TteTextOrientation;
  end;


{ Glyph types ================================================================}

type

  TteGlyphAlign = (
    kgfaTopLeft,
    kgfaTopRight,
    kgfaBottomLeft,
    kgfaBottomRight,
    kgfaCenter
  );

  TteGlyphInfo = record
    Rect: TRect;
    Glyph: TteBitmap;
    Align: TteGlyphAlign;
  end;


  { Window class ================================================================}

type

  { Window subclasses }

  TteWindowSubclass = (
    kwscNoBorder,
    kwscStandard,
    kwscSmall
  );

  TteWindowDrawState = (
    kwdsActive,
    kwdsMaximized,
    kwdsMinimized,
    kwdsRolled,
    kwdsTopmost
  );

  TteWindowDrawStates = set of TteWindowDrawState;

  { HitTest }

  TteWindowHitTest = (
    kwhtClient,
    kwhtCaption,
    kwhtLeft,
    kwhtTop,
    kwhtRight,
    kwhtBottom,
    kwhtBorder,
    kwhtTopLeft,
    kwhtTopRight,
    kwhtBottomLeft,
    kwhtBottomRight,
    kwhtCloseButton,
    kwhtHelpButton,
    kwhtMinButton,
    kwhtMaxButton,
    kwhtRollButton,
    kwhtTrayButton,
    kwhtSysMenu,
    kwhtNonClient
  );

  { Window button classes }

  TteWindowButtonClass = (
    kwbSysMenu,
    kwbHelp,
    kwbRoll,
    kwbRollRestore,
    kwbTray,
    kwbTopmost,
    kwbTopmostRestore,
    kwbClose,
    kwbMin,
    kwbMinRestore,
    kwbMax,
    kwbMaxRestore,
    kwbMaxGray,
    kwbCustom
  );

  TteWindowButtons = set of TteWindowButtonClass;

  TteWindowButtonDrawState = (
    kwbdsNormal,
    kwbdsHot,
    kwbdsPressed
  );

  TteWindowInfo = record
    Rect: TRect;
    State: TteWindowDrawStates;
    Buttons: TteWindowButtons;
    ClipRect: TRect;
    Title: WideString;
  end;

  TteWindowButtonInfo = record
    Rect: TRect;
    Button: TteWindowButtonClass;
    DrawState: TteWindowButtonDrawState;
    Icon: TteBitmap; { Only for SysMenu }
  end;

  TteWindowGripperInfo = record
    Rect: TRect;
    Sizeable: boolean;
  end;

{ Button class ================================================================}

type

  { Button subclasses }

  TteButtonSubclass = (
    kbscButton,
    kbscButtonDropDown,
    kbscButtonChevron,
    kbscSpinButtonLeft,
    kbscSpinButtonUp,
    kbscSpinButtonDown,
    kbscSpinButtonRight,
    kbscSpinButtonPlus,
    kbscSpinButtonMinus,
    kbscSpeedButton,
    kbscSpeedButtonDropDown,
    kbscSpeedButtonChevron,
    kbscCustomButton
  );

  { Button draw states }

  TteButtonDrawState = (
    kbdsNormal,
    kbdsHot,
    kbdsPressed,
    kbdsDisabled,
    kbdsFocused,
    kbdsFlatNormal,
    kbdsFlatHot,
    kbdsFlatPressed,
    kbdsFlatDisabled,
    kbdsFlatFocused
  );

  TteButtonInfo = record
    Rect: TRect;
    DrawState: TteButtonDrawState;
    Default: boolean;
    Checked: boolean;
  end;

{ Scroll class ================================================================}

type

  { Scroll subclasses }

  TteScrollSubclass = (
    ksscScrollBar,
    ksscScrollBox
  );

  { Scroll orientation }

  TteScrollOrientation = (
    ksoHorizontal,
    ksoVertical
  );

  { Scroll button classes }

  TteScrollButtonClass = (
    ksbcUp,
    ksbcDown,
    ksbcPageUp,
    ksbcPageDown,
    ksbcLeft,
    ksbcRight,
    ksbcPageLeft,
    ksbcPageRight,
    ksbcSlider,
    ksbcPlus,
    ksbcMinus,
    ksbcCustom
  );

  { Scroll button area classes }

  TteScrollAreaClass = (
    ksacScroll,
    ksacPageUp,
    ksacPageDown
  );

  { Scroll button draw state }

  TteScrollButtonDrawState = (
    ksbdsNormal,
    ksbdsPressed,
    ksbdsHot,
    ksbdsDisabled
  );

  { Scroll area draw state }

  TteScrollAreaDrawState = (
    ksadsNormal,
    ksadsPressed,
    ksadsHot,
    ksadsDisabled
  );

  { ScrollInfo }

  TteScrollInfo = record
    Rect: TRect;
    Orientation: TteScrollOrientation;
  end;

  TteScrollButtonInfo = record
    Rect: TRect;
    DrawState: TteScrollButtonDrawState;
    Button: TteScrollButtonClass;
  end;

  TteScrollAreaInfo = record
    Rect: TRect;
    DrawState: TteScrollAreaDrawState;
    Area: TteScrollAreaClass;
  end;

function ScrollInfo(ARect: TRect; AOrientation: TteScrollOrientation): TteScrollInfo; overload;
function ScrollButtonInfo(ARect: TRect; ADrawState: TteScrollButtonDrawState;
  AButton: TteScrollButtonClass): TteScrollButtonInfo; overload;
function ScrollAreaInfo(ARect: TRect; ADrawState: TteScrollAreaDrawState;
  AArea: TteScrollAreaClass): TteScrollAreaInfo; overload;

{ Progress class ==============================================================}

type

  { Progress subclasses }

  TteProgressSubclass = (
    kpscProgressBar
  );

  { Progress orientation }

  TteProgressOrientation = (
    kpoHorizontal,
    kpoVertical
  );

  { ProgressInfo }

  TteProgressInfo = record
    Rect: TRect;
    Orientation: TteProgressOrientation;
    Min, Max: integer;
    StartPos, EndPos: integer;
    Smooth: boolean;
    BorderWidth: integer;
  end;


{ Bar class ===================================================================}

type

  { Bar subclasses }

  TteBarSubclass = (
    kbscOutlookBar,
    kbscExplorerBar,
    kbscGroupBar
  );

  TteBarButtonClass = (
    kbbcClose,
    kbbcRollUp,
    kbbcRollDown
  );

  TteBarButtonDrawState = (
    kbbdsNormal,
    kbbdsHot,
    kbbdsPressed,
    kbbdsDisabled
  );

  { BarInfo }

  TteBarInfo = record
    Rect: TRect;
  end;

  TteBarPanelInfo = record
    Rect: TRect;
  end;

  TteBarCaptionInfo = record
    Rect: TRect;
    Text: WideString;
  end;
  
  TteBarButtonInfo = record
    Rect: TRect;
    Button: TteBarButtonClass;
    DrawState: TteBarButtonDrawState;
  end;

function BarInfo(ARect: TRect): TteBarInfo; overload;
function BarPanelInfo(ARect: TRect): TteBarPanelInfo; overload;
function BarCaptionInfo(ARect: TRect; AText: WideString): TteBarCaptionInfo; overload;
function BarButtonInfo(ARect: TRect; AButton: TteBarButtonClass;
  ADrawState: TteBarButtonDrawState): TteBarButtonInfo; overload;

{ Menu class ==================================================================}

type

  { Menu subclass }

  TteMenuSubclass = (
    kmscMenuBar,
    kmscToolBar,
    kmscPopupMenu
  );

  { Menu item classes }

  TteMenuItemClass = (
    kmicNormal,
    kmicSeparator,
    kmicUpButton,
    kmicDownButton,
    kmicExtractButton
  );

  TteMenuItemDrawState = (
    kmidsNormal,
    kmidsSelected,
    kmidsHot,
    kmidsDisabled
  );

  TteMenuGlyph = (
    kmgCheckGlyph,
    kmgRadioGlyph,
    kmgSubmenu,
    kmgGlyph,

    kmgSysMenu,
    kmgClose,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -