📄 dynamicskinform.pas
字号:
FDown: Boolean;
procedure SetMorphKf(Value: Double);
procedure Redraw;
public
IDName: String;
SkinRect: TRect;
ActiveSkinRect: TRect;
DownRect: TRect;
Morphing: Boolean;
MorphKind: TMorphKind;
ObjectRect: TRect;
Active: Boolean;
Enabled: Boolean;
Visible: Boolean;
constructor Create(AParent: TspSkinMainMenuBar; AData: TspDataSkinObject);
procedure Draw(Cnvs: TCanvas); virtual;
procedure DblClick; virtual;
procedure MouseDown(X, Y: Integer; Button: TMouseButton); virtual;
procedure MouseUp(X, Y: Integer; Button: TMouseButton); virtual;
procedure MouseEnter; virtual;
procedure MouseLeave; virtual;
function CanMorphing: Boolean; virtual;
procedure DoMorphing;
property MorphKf: Double read FMorphKf write SetMorphKf;
end;
TspSkinMainMenuBarButton = class(TspMenuBarObject)
protected
FSkinSupport: Boolean;
procedure DoCommand;
public
Command: TStdCommand;
constructor Create(AParent: TspSkinMainMenuBar; AData: TspDataSkinObject);
procedure DefaultDraw(Cnvs: TCanvas);
procedure Draw(Cnvs: TCanvas); override;
procedure DblClick; override;
procedure MouseDown(X, Y: Integer; Button: TMouseButton); override;
procedure MouseUp(X, Y: Integer; Button: TMouseButton); override;
procedure MouseEnter; override;
procedure MouseLeave; override;
end;
TspSkinMainMenuBarItem = class(TspMenuBarObject)
protected
FSkinSupport: Boolean;
TempObjectRect: TRect;
OldEnabled: Boolean;
Visible: Boolean;
function SearchDown: Boolean;
procedure SearchActive;
procedure SetDown(Value: Boolean);
procedure TrackMenu;
public
MenuItem: TMenuItem;
FontName: String;
FontHeight: Integer;
FontStyle: TFontStyles;
UnEnabledFontColor, FontColor,
ActiveFontColor, DownFontColor: TColor;
TextRct: TRect;
DownRect: TRect;
LO, RO: Integer;
constructor Create(AParent: TspSkinMainMenuBar; AData: TspDataSkinObject);
procedure DefaultDraw(Cnvs: TCanvas);
procedure Draw(Cnvs: TCanvas); override;
procedure MouseEnter; override;
procedure MouseDown(X, Y: Integer; Button: TMouseButton); override;
procedure MouseLeave; override;
end;
TspItemEnterEvent = procedure (MenuItem: TMenuItem) of object;
TspItemLeaveEvent = procedure (MenuItem: TMenuItem) of object;
TspSkinMainMenuBar = class(TspSkinControl)
protected
FOnItemMouseEnter: TspItemEnterEvent;
FOnItemMouseLeave: TspItemLeaveEvent;
FScrollMenu: Boolean;
FDefItemFont: TFont;
FSkinSupport: Boolean;
ButtonsCount: Integer;
FMDIChildMax: Boolean;
FOnMainMenuItemClick: TMainMenuItemClick;
FPopupToUp: Boolean;
MenuActive: Boolean;
Scroll: Boolean;
MarkerActive: Boolean;
DSF: TspDynamicSkinForm;
FMainMenu: TMainMenu;
MorphTimer: TTimer;
MouseTimer: TTimer;
ActiveObject, OldActiveObject, MouseCaptureObject: Integer;
FOnMouseEnter, FOnMouseLeave: TNotifyEvent;
NewItemsRect: TRect;
FDefaultWidth: Integer;
FDefaultHeight: Integer;
procedure SetDefaultWidth(Value: Integer);
procedure SetDefaultHeight(Value: Integer);
procedure SetDefItemFont(Value: TFont);
procedure CloseSysMenu;
procedure AddButtons;
procedure DeleteButtons;
procedure CheckButtons(BI: TspBorderIcons);
procedure TrackScrollMenu;
procedure CalcRects;
procedure SetMainMenu(Value: TMainMenu);
procedure TestMouse(Sender: TObject);
procedure TestMorph(Sender: TObject);
procedure PaintMenuBar(Cnvs: TCanvas);
procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND;
procedure WMCloseSkinMenu(var Message: TMessage); message WM_CLOSESKINMENU;
procedure WMSize(var Message: TWMSIZE); message WM_SIZE;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure TestActive(X, Y: Integer);
procedure Notification(AComponent: TComponent;
Operation: TOperation); 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 ClearObjects;
procedure DrawSkinObject(AObject: TspMenuBarObject);
procedure MenuEnter;
procedure MenuExit;
procedure MenuClose;
function CheckReturnKey: Boolean;
procedure NextMainMenuItem;
procedure PriorMainMenuItem;
function FindHotKeyItem(CharCode: Integer): Boolean;
function GetMarkerRect: TRect;
procedure DrawMarker(Cnvs: TCanvas);
procedure MDIChildMaximize;
procedure MDIChildRestore;
public
//
SkinRect, ItemsRect: TRect;
MenuBarItem: String;
MaxButton, MinButton, SysMenuButton, CloseButton: String;
TrackMarkColor, TrackMarkActiveColor: Integer;
Picture: TBitMap;
//
ObjectList: TList;
//
ChildMenuIn: Boolean;
//
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
function GetChildMainMenu: TMainMenu;
procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;
procedure Paint; override;
procedure CreateMenu;
procedure ChangeSkinData; override;
procedure BeforeChangeSkinData; override;
procedure GetSkinData; override;
procedure UpDateItems;
published
property ScrollMenu: Boolean read FScrollMenu write FScrollMenu;
property DefItemFont: TFont read FDefItemFont write SetDefItemFont;
property DefaultWidth: Integer read FDefaultWidth write SetDefaultWidth;
property DefaultHeight: Integer read FDefaultHeight write SetDefaultHeight;
property PopupToUp: Boolean read FPopupToUp write FPopupToUp;
property DynamicSkinForm: TspDynamicSkinForm read DSF write DSF;
property MainMenu: TMainMenu read FMainMenu write SetMainMenu;
property Anchors;
property Visible;
property Enabled;
property OnMainMenuItemClick: TMainMenuItemClick
read FOnMainMenuItemClick write FOnMainMenuItemClick;
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
property OnItemMouseEnter: TspItemEnterEvent read FOnItemMouseEnter write FOnItemMouseEnter;
property OnItemMouseLeave: TspItemLeaveEvent read FOnItemMouseLeave write FOnItemMouseLeave;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnClick;
end;
TspSkinMDITabsBar = class;
TspDynamicSkinForm = class(TComponent)
private
FAlwaysShowInTray: Boolean;
FLogoBitMapTransparent: Boolean;
FLogoBitMap: TBitMap;
FAlwaysMinimizeToTray: Boolean;
FIcon: TIcon;
FShowIcon: Boolean;
ButtonsInLeft: boolean;
FMaximizeOnFullScreen: Boolean;
FSkinHint: TspSkinHint;
FShowObjectHint: Boolean;
FUseSkinCursors: Boolean;
FSkinSupport: Boolean;
FDefCaptionFont: TFont;
FDefInActiveCaptionFont: TFont;
FMDIChildMaximized: Boolean;
FFormActive: Boolean;
FOnMinimizeToTray: TNotifyEvent;
FOnRestoreFromTray: TNotifyEvent;
FTrayIcon: TspTrayIcon;
FUseDefaultSysMenu: Boolean;
FSysMenu: TPopupMenu;
FSysTrayMenu: TspSkinPopupMenu;
FInShortCut: Boolean;
FMainMenuBar: TspSkinMainMenuBar;
FMDITabsBar: TspSkinMDITabsBar;
FFullDrag: Boolean;
FFormWidth, FFormHeight: Integer;
FSizeMove: Boolean;
FSupportNCArea: Boolean;
FRollUpState, MaxRollUpState: Boolean;
FBorderIcons: TspBorderIcons;
RMTop, RMBottom, RMLeft, RMRight: TBitMap;
BlackColor: TColor;
MouseIn: Boolean;
OldBoundsRect: TRect;
OldHeight: Integer;
NewLTPoint, NewRBPoint, NewRTPoint, NewLBPoint: TPoint;
NewClRect: TRect;
NewCaptionRect, NewButtonsRect: TRect;
NewButtonsOffset: Integer;
NewButtonsInLeft: Boolean;
NewMaskRectArea: TRect;
NewHitTestLTPoint,
NewHitTestRTPoint,
NewHitTestLBPoint,
NewHitTestRBPoint: TPoint;
NewDefCaptionRect: TRect;
FSizeable: Boolean;
FMinHeight, FMinWidth: Integer;
OldWindowProc: TWndMethod;
FClientInstance: Pointer;
FPrevClientProc: Pointer;
FSD: TspSkinData;
FMSD: TspSkinData;
FMainMenu: TMainMenu;
FSystemMenu: TPopupMenu;
FDraggAble: Boolean;
FIsDragging: Boolean;
FOldX, FOldY: Integer;
FOnChangeSkinData: TNotifyEvent;
FOnActivate: TNotifyEvent;
FOnDeActivate: TNotifyEvent;
FOnChangeRollUpState: TNotifyEvent;
FInChangeSkinData: Boolean;
FWindowState: TWindowState;
FMagneticSize: Byte;
FMenusAlphaBlend: Boolean;
FMenusAlphaBlendValue: Byte;
FMenusAlphaBlendAnimation: Boolean;
FAlphaBlend: Boolean;
FAlphaBlendAnimation: Boolean;
FAlphaBlendValue: Byte;
VisibleControls: TList;
OldAppMessage: TMessageEvent;
procedure CheckMDIMainMenu;
procedure CheckMDIBar;
procedure SetLogoBitMap(Value: TBitMap);
function GetUseSkinFontInMenu: Boolean;
procedure SetUseSkinFontInMenu(Value: Boolean);
procedure SetShowIcon(Value: Boolean);
procedure GetIconSize(var X, Y: Integer);
procedure GetIcon;
procedure DrawFormIcon(Cnvs: TCanvas; X, Y: Integer);
procedure SetMenusAlphaBlend(Value: Boolean);
procedure SetMenusAlphaBlendAnimation(Value: Boolean);
procedure SetMenusAlphaBlendValue(Value: Byte);
function GetDefCaptionRect: TRect;
function GetDefCaptionHeight: Integer;
function GetDefButtonSize: Integer;
procedure SetDefaultMenuItemHeight(Value: Integer);
function GetDefaultMenuItemHeight: Integer;
procedure SetDefaultMenuItemFont(Value: TFont);
function GetDefaultMenuItemFont: TFont;
procedure SetDefCaptionFont(Value: TFont);
procedure SetDefInActiveCaptionFont(Value: TFont);
procedure SetBorderIcons(Value: TspBorderIcons);
procedure NewAppMessage(var Msg: TMsg; var Handled: Boolean);
procedure HookApp;
procedure UnHookApp;
function GetMaximizeMDIChild: TForm;
function IsMDIChildMaximized: Boolean;
procedure ResizeMDIChilds;
function GetMDIWorkArea: TRect;
procedure UpDateForm;
procedure FormClientWindowProcHook(var Message: TMessage);
procedure TSM_Restore(Sender: TObject);
procedure TSM_Close(Sender: TObject);
procedure SM_Restore(Sender: TObject);
procedure SM_Max(Sender: TObject);
procedure SM_Min(Sender: TObject);
procedure SM_RollUp(Sender: TObject);
procedure SM_Close(Sender: TObject);
procedure SM_MinToTray(Sender: TObject);
procedure TrayIconDBLCLK(Sender: TObject);
procedure TrackSystemMenu(X, Y: Integer);
procedure UpDateActiveObjects;
procedure CreateSysMenu;
procedure CreateUserSysMenu;
procedure CreateSysTrayMenu;
function GetSystemMenu: TMenuItem;
procedure CalcRects;
procedure FormShortCut(var Msg: TWMKey; var Handled: Boolean);
procedure ChangeSkinData;
procedure SetRollUpFormRegion;
procedure CreateRollUpForm;
procedure CreateRollUpForm2;
procedure RestoreRollUpForm;
procedure RestoreRollUpForm2;
procedure SetRollUpState(Value: Boolean);
procedure SetTrayIcon(Value: TspTrayIcon);
procedure BeforeUpDateSkinControls(AFSD: Integer; WC: TWinControl);
procedure UpDateSkinControls(AFSD: Integer; WC: TWinControl);
procedure CheckObjects;
procedure SetWindowState(Value: TWindowState);
procedure SetSkinData(Value: TspSkinData);
procedure SetMenusSkinData(Value: TspSkinData);
procedure CheckSize;
procedure NewWndProc(var Message: TMessage);
function NewHitTest(P: TPoint): Integer;
function NewNCHitTest(P: TPoint): Integer;
function NewDefNCHitTest(P: TPoint): Integer;
procedure CreateNewRegion(FCanScale: Boolean);
procedure CreateNewForm(FCanScale: Boolean);
procedure FormChangeActive(AUpDate: Boolean);
procedure DoMaximize;
procedure DoNormalize;
procedure DoMinimize;
function InForm(P: TPoint): Boolean;
function PtInMask(P: TPoint): Boolean;
function CanScale: Boolean;
procedure CreateMainMenu;
procedure CheckWindowState;
protected
InMenu: Boolean;
InMainMenu: Boolean;
FRgn: HRGN;
NewMainMenuRect: TRect;
NewIconRect: TRect;
MorphTimer: TTimer;
AnimateTimer: TTimer;
MouseTimer: TTimer;
FMagnetic: Boolean;
FOnSkinMenuOpen: TNotifyEvent;
FOnSkinMenuClose: TNotifyEvent;
FOnChangeClientRect: TChangeClientRectEvent;
FOnMainMenuEnter: TNotifyEvent;
FOnMainMenuExit: TNotifyEvent;
FOnMouseEnterEvent: TMouseEnterEvent;
FOnMouseLeaveEvent: TMouseLeaveEvent;
FOnMouseUpEvent : TspMouseUpEvent;
FOnMouseDownEvent : TMouseDownEvent;
FOnMouseMoveEvent: TMouseMoveEvent;
FOnPaintEvent: TPaintEvent;
FOnSwitchChangeStateEvent: TSwitchChangeStateEvent;
FOnTrackBarChangeValueEvent: TTrackBarChangeValueEvent;
FOnFrameRegulatorChangeValueEvent: TFrameRegulatorChangeValueEvent;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -