📄 bsskinctrls.pas
字号:
{*******************************************************************}
{ }
{ Almediadev Visual Component Library }
{ BusinessSkinForm }
{ Version 2.52 }
{ }
{ Copyright (c) 2000-2003 Almediadev }
{ ALL RIGHTS RESERVED }
{ }
{ Home: http://www.almdev.com }
{ Support: support@almdev.com }
{ }
{*******************************************************************}
unit bsSkinCtrls;
{$P+,S-,W-,R-}
{$WARNINGS OFF}
{$HINTS OFF}
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Menus, ExtCtrls, bsSkinData, StdCtrls, bsSkinMenus, ComCtrls, CommCtrl,
ImgList;
type
TbsControlButton = record
R: TRect;
MouseIn: Boolean;
Down: Boolean;
Visible: Boolean;
end;
TbsSkinControl = class(TCustomControl)
protected
FSD: TbsSkinData;
FSkinDataName: String;
FRgn: HRgn;
FOnMouseEnter, FOnMouseLeave: TNotifyEvent;
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 CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure SetSkinDataName(Value: String); virtual;
procedure SetSkinData(Value: TbsSkinData); virtual;
procedure CreateControlDefaultImage(B: TBitMap); virtual;
procedure CreateControlSkinImage(B: TBitMap); virtual;
public
FIndex: Integer;
procedure Paint; override;
procedure ChangeSkinData; virtual;
procedure BeforeChangeSkinData; virtual;
procedure AfterChangeSkinData; virtual;
destructor Destroy; override;
constructor Create(AOwner: TComponent); override;
published
property Anchors;
property TabOrder;
property Visible;
property SkinData: TbsSkinData read FSD write SetSkinData;
property SkinDataName: String read FSkinDataName write SetSkinDataName;
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
end;
TbsSkinCustomControl = class(TbsSkinControl)
protected
FDefaultWidth: Integer;
FDefaultHeight: Integer;
FDefaultFont: TFont;
FUseSkinFont: Boolean;
LTPt, RTPt, LBPt, RBPt: TPoint;
SkinRect, ClRect: TRect;
NewLTPoint, NewRTPoint, NewLBPoint, NewRBPoint: TPoint;
NewClRect: TRect;
Picture, MaskPicture: TBitMap;
ResizeMode: Integer;
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;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;
procedure ChangeSkinData; override;
published
property DefaultFont: TFont read FDefaultFont write SetDefaultFont;
property DefaultWidth: Integer read FDefaultWidth write SetDefaultWidth;
property DefaultHeight: Integer read FDefaultHeight write SetDefaultHeight;
property UseSkinFont: Boolean read FUseSkinFont write FUseSkinFont;
end;
TbsSkinBevel = class(TBevel)
protected
FSD: TbsSkinData;
FSkinDataName: String;
FIndex: Integer;
FDividerMode: Boolean;
procedure SetDividerMode(Value: Boolean);
procedure SetSkinData(Value: TbsSkinData);
public
LightColor, DarkColor: TColor;
constructor Create(AOwner: TComponent); override;
procedure Paint; override;
procedure ChangeSkinData;
published
property SkinData: TbsSkinData read FSD write SetSkinData;
property SkinDataName: String read FSkinDataName write FSkinDataName;
property DividerMode: Boolean read FDividerMode write SetDividerMode;
end;
TbsSkinBorderStyle = (bvFrame, bvRaised, bvLowered, bvNone);
TbsSkinPanelNumGlyphs = 1..2;
TbsSkinPanel = class(TbsSkinCustomControl)
protected
FCheckedMode: Boolean;
FChecked: Boolean;
FOnChecked: TNotifyEvent;
FGlyph: TBitMap;
FNumGlyphs: TbsSkinPanelNumGlyphs;
FSpacing: Integer;
FRealHeight: Integer;
FRollUpState: Boolean;
FRollUpMode: Boolean;
FCaptionMode: Boolean;
FBorderStyle: TbsSkinBorderStyle;
FDefaultCaptionHeight: Integer;
FDefaultAlignment: TAlignment;
VisibleControls: TList;
FAutoEnabledControls: Boolean;
procedure SetCheckedMode(Value: Boolean);
procedure SetChecked(Value: Boolean);
procedure SetGlyph(Value: TBitMap);
procedure SetNumGlyphs(Value: TbsSkinPanelNumGlyphs);
procedure SetSpacing(Value: Integer);
procedure SetRollUpMode(Value: Boolean);
procedure SetDefaultAlignment(Value: TAlignment);
procedure SetDefaultCaptionHeight(Value: Integer); virtual;
procedure SetBorderStyle(Value: TbsSkinBorderStyle);
procedure SetRollUpState(Value: Boolean);
procedure SetCaptionMode(Value: Boolean); virtual;
procedure CreateParams(var Params: TCreateParams); override;
procedure AdjustClientRect(var Rect: TRect); override;
procedure GetSkinData; override;
procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); override;
procedure CMEnabledChanged(var Message: TMessage); message CM_ENABLEDCHANGED;
procedure CreateControlDefaultImage(B: TBitMap); override;
procedure CreateControlSkinImage(B: TBitMap); override;
procedure HideControls;
procedure ShowControls;
procedure SkinDrawCheckImage(X, Y: Integer; Cnvs: TCanvas; IR: TRect; DestCnvs: TCanvas);
public
FontName: String;
FontStyle: TFontStyles;
FontHeight: Integer;
FontColor: TColor;
Alignment: TAlignment;
CaptionRect: TRect;
NewCaptionRect: TRect;
NewRollUpMarkerRect: TRect;
BGPictureIndex: Integer;
CheckImageRect, UnCheckImageRect: TRect;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure ChangeSkinData; override;
procedure DoRollUp(ARollUp: Boolean);
procedure Paint; override;
procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;
published
property RealHeight: Integer read FRealHeight write FRealHeight;
property AutoEnabledControls: Boolean
read FAutoEnabledControls write FAutoEnabledControls;
property CheckedMode: Boolean read FCheckedMode write SetCheckedMode;
property Checked: Boolean read FChecked write SetChecked;
property DefaultAlignment: TAlignment
read FDefaultAlignment write SetDefaultAlignment;
property DefaultCaptionHeight: Integer
read FDefaultCaptionHeight write SetDefaultCaptionHeight;
property BorderStyle: TbsSkinBorderStyle
read FBorderStyle write SetBorderStyle;
property CaptionMode: Boolean read FCaptionMode write SetCaptionMode;
property RollUpMode: Boolean read FRollUpMode write SetRollUpMode;
property RollUpState: Boolean read FRollUpState write SetRollUpState;
property Glyph: TBitMap read FGlyph write SetGlyph;
property NumGlyphs: TbsSkinPanelNumGlyphs read FNumGlyphs write SetNumGlyphs;
property Spacing: Integer read FSpacing write SetSpacing;
property Caption;
property Constraints;
property Align;
property DockSite;
property DragCursor;
property DragKind;
property DragMode;
property Enabled;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property TabOrder;
property TabStop;
property Visible;
property OnChecked: TNotifyEvent read FOnChecked write FOnChecked;
property OnCanResize;
property OnClick;
property OnConstrainedResize;
property OnDockDrop;
property OnDockOver;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnEndDock;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnGetSiteInfo;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnResize;
property OnStartDock;
property OnStartDrag;
property OnUnDock;
end;
TbsSkinStatusBar = class(TbsSkinPanel)
protected
procedure SetSkinData(Value: TbsSkinData); override;
public
constructor Create(AOwner: TComponent); override;
end;
TbsSkinToolBar = class(TbsSkinPanel)
private
FImages: TCustomImageList;
FDisabledImages: TCustomImageList;
FHotImages: TCustomImageList;
FFlat: Boolean;
procedure SetFlat(Value: Boolean);
procedure SetDisabledImages(Value: TCustomImageList);
procedure SetHotImages(Value: TCustomImageList);
procedure SetImages(Value: TCustomImageList);
protected
procedure Notification(AComponent: TComponent;
Operation: TOperation); override;
procedure SetSkinData(Value: TbsSkinData); override;
procedure SetSkinDataName(Value: String); override;
public
constructor Create(AOwner: TComponent); override;
published
property Flat: Boolean read FFlat write SetFlat;
property Images: TCustomImageList read FImages write SetImages;
property HotImages: TCustomImageList read FHotImages write SetHotImages;
property DisabledImages: TCustomImageList read FDisabledImages write SetDisabledImages;
end;
TbsSkinGroupBox = class(TbsSkinPanel)
public
constructor Create(AOwner: TComponent); override;
end;
TbsExPanelRollKind = (rkRollHorizontal, rkRollVertical);
TbsSkinExPanel = class(TbsSkinCustomControl)
private
FOnChangeRollState: TNotifyEvent;
FOnClose: TNotifyEvent;
StopCheckSize: Boolean;
FRollState: Boolean;
FRollKind: TbsExPanelRollKind;
FDefaultCaptionHeight: Integer;
VisibleControls: TList;
FRealWidth, FRealHEight: Integer;
FShowRollButton: Boolean;
FShowCloseButton: Boolean;
function GetRollWidth: Integer;
function GetRollHeight: Integer;
procedure SetShowRollButton(Value: Boolean);
procedure SetShowCloseButton(Value: Boolean);
protected
Buttons: array[0..1] of TbsControlButton;
OldActiveButton, ActiveButton, CaptureButton: Integer;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
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 CreateControlDefaultImage(B: TBitMap); override;
procedure CreateControlSkinImage(B: TBitMap); override;
procedure SetDefaultCaptionHeight(Value: Integer);
procedure AdjustClientRect(var Rect: TRect); override;
procedure HideControls;
procedure ShowControls;
procedure SetRollState(Value: Boolean);
procedure SetRollKind(Value: TbsExPanelRollKind);
//
procedure ButtonDown(I: Integer; X, Y: Integer);
procedure ButtonUp(I: Integer; X, Y: Integer);
procedure ButtonEnter(I: Integer);
procedure ButtonLeave(I: Integer);
procedure DrawButton(Cnvs: TCanvas; i: Integer);
procedure TestActive(X, Y: Integer);
procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED;
procedure GetSkinData; override;
{ property RealWidth: Integer read FRealWidth write FRealWidth;
property RealHeight:Integer read FRealHeight write FRealHeight;}
public
//
RollHSkinRect, RollVSkinRect: TRect;
RollLeftOffset, RollRightOffset,
RollTopOffset, RollBottomOffset: Integer;
RollVCaptionRect, RollHCaptionRect: TRect;
CloseButtonRect, CloseButtonActiveRect, CloseButtonDownRect: TRect;
HRollButtonRect, HRollButtonActiveRect, HRollButtonDownRect: TRect;
HRestoreButtonRect, HRestoreButtonActiveRect, HRestoreButtonDownRect: TRect;
VRollButtonRect, VRollButtonActiveRect, VRollButtonDownRect: TRect;
VRestoreButtonRect, VRestoreButtonActiveRect, VRestoreButtonDownRect: TRect;
CaptionRect: TRect;
FontName: String;
FontStyle: TFontStyles;
FontHeight: Integer;
FontColor: TColor;
//
constructor Create(AOwner: TComponent); override;
procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;
procedure ChangeSkinData; override;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -