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

📄 skinctrls.pas

📁 DynamicSkinForm Finial 6.85_完全汉化版_for CB_D5-9 特点: 完全source 完全汉化真正奉献! 本汉化只供研究和学习用
💻 PAS
📖 第 1 页 / 共 5 页
字号:
{*******************************************************************}
{                                                                   }
{       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 + -