📄 tetheme.pas
字号:
{==============================================================================
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 + -