📄 skinctrls.pas
字号:
{*******************************************************************}
{ }
{ Almediadev Visual Component Library }
{ DynamicSkinForm }
{ Version 6.85 }
{ }
{ Copyright (c) 2000-2004 Almediadev }
{ ALL RIGHTS RESERVED }
{ }
{ Home: http://www.almdev.com }
{ Support: support@almdev.com }
{ }
{*******************************************************************}
unit SkinCtrls;
{$P+,S-,W-,R-}
{$WARNINGS OFF}
{$HINTS OFF}
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus, ExtCtrls, SkinData, spEffBmp, StdCtrls, SkinMenus, ComCtrls, ImgList;
type
TspControlButton = record
R: TRect;
MouseIn: Boolean;
Down: Boolean;
Visible: Boolean;
end;
TspSkinControl = class(TCustomControl)
protected
FromWMPaint: Boolean;
FSD: TspSkinData;
FAreaName: String;
FSkinDataName: String;
FRgn: HRgn;
FDrawDefault: Boolean;
CursorIndex: Integer;
FOnMouseEnter, FOnMouseLeave: TNotifyEvent;
FAlphaBlend: Boolean;
FAlphaBlendValue: Byte;
FUseSkinCursor: Boolean;
procedure SetAlphaBlend(AValue: Boolean); virtual;
procedure SetAlphaBlendValue(AValue: Byte); virtual;
procedure Paint; override;
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
procedure GetSkinData; virtual;
procedure WMMOVE(var Msg: TWMMOVE); message WM_MOVE;
procedure WMEraseBkgnd(var Msg: TWMEraseBkgnd); message WM_ERASEBKGND;
procedure WMPaint(var Msg: TWMPaint); message WM_PAINT;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure SetSkinData(Value: TspSkinData); virtual;
procedure SetSkinDataName(Value: String); virtual;
procedure CreateControlDefaultImage(B: TBitMap); virtual;
procedure CreateControlSkinImage(B: TBitMap); virtual;
public
FIndex: Integer;
procedure ChangeSkinData; virtual;
procedure BeforeChangeSkinData; virtual;
destructor Destroy; override;
constructor Create(AOwner: TComponent); override;
published
property Anchors;
property TabOrder;
property Visible;
property DrawDefault: Boolean
read FDrawDefault write FDrawDefault;
property SkinData: TspSkinData read FSD write SetSkinData;
property AreaName: String read FAreaName write FAreaName;
property SkinDataName: String read FSkinDataName write SetSkinDataName;
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
property AlphaBlend: Boolean read FAlphaBlend write SetAlphaBlend;
property AlphaBlendValue: Byte
read FAlphaBlendValue write SetAlphaBlendValue;
property UseSkinCursor: Boolean read FUseSkinCursor write FUseSkinCursor;
end;
TspSkinCustomControl = class(TspSkinControl)
protected
FUseSkinFont: Boolean;
FDefaultWidth: Integer;
FDefaultHeight: Integer;
FDefaultFont: TFont;
LTPt, RTPt, LBPt, RBPt: TPoint;
SkinRect, ClRect: TRect;
NewLTPoint, NewRTPoint, NewLBPoint, NewRBPoint: TPoint;
NewClRect: TRect;
Picture, MaskPicture: TBitMap;
ResizeMode: Integer;
StretchEffect: Boolean;
procedure OnDefaultFontChange(Sender: TObject);
procedure SetDefaultWidth(Value: Integer);
procedure SetDefaultHeight(Value: Integer);
procedure SetDefaultFont(Value: TFont);
procedure DefaultFontChange; virtual;
function GetNewRect(R: TRect): TRect;
function GetResizeMode: Integer;
procedure CalcSize(var W, H: Integer); virtual;
procedure CreateSkinControlImage(B, SB: TBitMap; R: TRect);
procedure GetSkinData; override;
procedure CreateControlRegion;
procedure SetControlRegion; virtual;
procedure CreateControlDefaultImage(B: TBitMap); override;
procedure CreateControlSkinImage(B: TBitMap); override;
function GetRealClientWidth: Integer;
function GetRealClientHeight: Integer;
function GetRealClientLeft: Integer;
function GetRealClientTop: Integer;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;
procedure ChangeSkinData; override;
property RealClientRect: TRect read NewClRect;
property RealClientWidth: integer read GetRealClientWidth;
property RealClientHeight: integer read GetRealClientHeight;
property RealClientLeft: integer read GetRealClientLeft;
property RealClientTop: integer read GetRealClientTop;
published
property DefaultFont: TFont read FDefaultFont write SetDefaultFont;
property UseSkinFont: Boolean read FUseSkinFont write FUseSkinFont;
property DefaultWidth: Integer read FDefaultWidth write SetDefaultWidth;
property DefaultHeight: Integer read FDefaultHeight write SetDefaultHeight;
end;
TspFrameSkinControl = class(TspSkinControl)
protected
FRgn: HRgn;
FFrame: Integer;
FrameW, FrameH: Integer;
Picture, MaskPicture: TBitMap;
FDefaultImage: TBitMap;
FDefaultMask: TBitMap;
FDefaultFramesCount: Integer;
FDefaultFramesPlacement: TFramesPlacement;
procedure CalcDefaultFrameSize; virtual;
procedure SetDefaultImage(Value: TBitMap);
procedure SetDefaultMask(Value: TBitMap);
procedure SetDefaultFramesCount(Value: Integer);
procedure SetDefaultFramesPlacement(Value: TFramesPlacement);
procedure SetFrame(Value: Integer);
procedure SetControlRegion;
procedure GetSkinData; override;
procedure CreateControlDefaultImage(B: TBitMap); override;
procedure CreateControlSkinImage(B: TBitMap); override;
procedure Loaded; override;
procedure WMEraseBkgnd(var Msg: TWMEraseBkgnd); message WM_ERASEBKGND;
public
SkinRect: TRect;
FramesCount: Integer;
FramesPlacement: TFramesPlacement;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;
procedure ChangeSkinData; override;
property Frame: Integer read FFrame write SetFrame;
published
property DefaultImage: TBitMap read FDefaultImage write SetDefaultImage;
property DefaultMask: TBitMap read FDefaultMask write SetDefaultMask;
property DefaultFramesPlacement: TFramesPlacement
read FDefaultFramesPlacement write SetDefaultFramesPlacement;
property DefaultFramesCount: Integer
read FDefaultFramesCount write SetDefaultFramesCount;
property ShowHint;
end;
TspSkinSwitchState = (swOff, swOn);
TspSkinSwitch = class(TspFrameSkinControl)
protected
FAnimateTimer: TTimer;
FState: TspSkinSwitchState;
FOnChange: TNotifyEvent;
FMouseIn: Boolean;
function GetTimerInterval: Cardinal;
procedure SetTimerInterval(Value: Cardinal);
procedure SetState(Value: TspSkinSwitchState);
procedure ChangeState(Value: TspSkinSwitchState);
procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); override;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure DoAnimate(Sender: TObject);
procedure Start;
procedure Stop;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure ChangeSkinData; override;
published
property TimerInterval: Cardinal read GetTimerInterval write SetTimerInterval;
property State: TspSkinSwitchState read FState write SetState;
property OnChange: TNotifyEvent read FOnChange write FOnChange;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnClick;
end;
TspSkinAnimate = class(TspFrameSkinControl)
protected
FAnimateTimer: TTimer;
FCycleMode: Boolean;
FButtonMode: Boolean;
FMouseIn: Boolean;
FOnStart: TNotifyEvent;
FOnStop: TNotifyEvent;
FActive: Boolean;
procedure SetActive(Value: Boolean);
function GetTimerInterval: Cardinal;
procedure SetTimerInterval(Value: Cardinal);
procedure DoAnimate(Sender: TObject);
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure Start;
procedure Stop;
published
property Active: Boolean read FActive write SetActive;
property Enabled;
property CycleMode: Boolean read FCycleMode write FCycleMode;
property ButtonMode: Boolean read FButtonMode write FButtonMode;
property TimerInterval: Cardinal read GetTimerInterval write SetTimerInterval;
property OnStart: TNotifyEvent read FOnStart write FOnStart;
property OnStop: TNotifyEvent read FOnStop write FOnStop;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnClick;
end;
TspSkinFrameGauge = class(TspFrameSkinControl)
protected
FMinValue, FMaxValue, FValue: Integer;
FVertical: Boolean;
FOnChange: TNotifyEvent;
procedure SetMinValue(AValue: Integer);
procedure SetMaxValue(AValue: Integer);
procedure SetValue(AValue: Integer);
procedure CalcFrame;
public
procedure ChangeSkinData; override;
constructor Create(AOwner: TComponent); override;
published
property Value: Integer read FValue write SetValue;
property MinValue: Integer read FMinValue write SetMinValue;
property MaxValue: Integer read FMaxValue write SetMaxValue;
property Align;
property Enabled;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnResize;
property PopupMenu;
property ShowHint;
end;
TspSkinFrameRegulator = class(TspFrameSkinControl)
protected
FPixInc, FValInc: Integer;
FDown: Boolean;
StartV, CurV, TempValue: Integer;
FMinValue, FMaxValue, FValue: Integer;
FOnChange: TNotifyEvent;
FDefaultKind: TRegulatorKind;
procedure CalcDefaultFrameSize; override;
procedure SetDefaultKind(Value: TRegulatorKind);
procedure SetMinValue(AValue: Integer);
procedure SetMaxValue(AValue: Integer);
procedure SetValue(AValue: Integer);
procedure GetSkinData; override;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); override;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); override;
procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
procedure CalcValue;
procedure CalcFrame;
public
Kind: TRegulatorKind;
constructor Create(AOwner: TComponent); override;
procedure ChangeSkinData; override;
published
property DefaultKind: TRegulatorKind read FDefaultKind write SetDefaultKind;
property Value: Integer read FValue write SetValue;
property MinValue: Integer read FMinValue write SetMinValue;
property MaxValue: Integer read FMaxValue write SetMaxValue;
property OnChange: TNotifyEvent read FOnChange write FOnChange;
property Align;
property Enabled;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnResize;
property PopupMenu;
property ShowHint;
end;
TspSkinBorderStyle = (bvFrame, bvRaised, bvLowered, bvNone);
TspSkinPanelNumGlyphs = 1..2;
TspSkinPanel = class(TspSkinCustomControl)
protected
FOnChangeRollUpState: TNotifyEvent;
FCheckedMode: Boolean;
FChecked: Boolean;
FOnChecked: TNotifyEvent;
FAutoEnabledControls: Boolean;
FGlyph: TBitMap;
FNumGlyphs: TspSkinPanelNumGlyphs;
FSpacing: Integer;
FRealHeight: Integer;
FRollUpState: Boolean;
FRollUpMode: Boolean;
FCaptionMode: Boolean;
FBorderStyle: TspSkinBorderStyle;
FDefaultCaptionHeight: Integer;
FDefaultAlignment: TAlignment;
procedure SetCheckedMode(Value: Boolean);
procedure SetChecked(Value: Boolean);
procedure SetGlyph(Value: TBitMap);
procedure SetNumGlyphs(Value: TspSkinPanelNumGlyphs);
procedure SetSpacing(Value: Integer);
procedure SetRollUpMode(Value: Boolean);
procedure SetDefaultAlignment(Value: TAlignment);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -