📄 controls.pas
字号:
TAlignInfo = record
AlignList: TList;
ControlIndex: Integer;
Align: TAlign;
Scratch: Integer;
end;
TBorderWidth = 0..MaxInt;
TBevelCut = (bvNone, bvLowered, bvRaised, bvSpace);
TBevelEdge = (beLeft, beTop, beRight, beBottom);
TBevelEdges = set of TBevelEdge;
TBevelKind = (bkNone, bkTile, bkSoft, bkFlat);
TBevelWidth = 1..MaxInt;
// IDockManager defines an interface for managing a dock site's docked
// controls. The default VCL implementation of IDockManager is TDockTree.
IDockManager = interface
['{8619FD79-C281-11D1-AA60-00C04FA370E8}']
procedure BeginUpdate;
procedure EndUpdate;
procedure GetControlBounds(Control: TControl; out CtlBounds: TRect);
procedure InsertControl(Control: TControl; InsertAt: TAlign;
DropCtl: TControl);
procedure LoadFromStream(Stream: TStream);
procedure PaintSite(DC: HDC);
procedure PositionDockRect(Client, DropCtl: TControl; DropAlign: TAlign;
var DockRect: TRect);
procedure RemoveControl(Control: TControl);
procedure ResetBounds(Force: Boolean);
procedure SaveToStream(Stream: TStream);
procedure SetReplacingControl(Control: TControl);
end;
TAlignInsertBeforeEvent = function(Sender: TWinControl; C1, C2: TControl): Boolean of object;
TAlignPositionEvent = procedure(Sender: TWinControl; Control: TControl;
var NewLeft, NewTop, NewWidth, NewHeight: Integer;
var AlignRect: TRect; AlignInfo: TAlignInfo) of Object;
TWinControl = class(TControl)
private
FAlignLevel: Word;
FBevelEdges: TBevelEdges;
FBevelInner: TBevelCut;
FBevelOuter: TBevelCut;
FBevelKind: TBevelKind;
FBevelWidth: TBevelWidth;
FBorderWidth: TBorderWidth;
FPadding: TPadding;
FBrush: TBrush;
FDefWndProc: Pointer;
FDockClients: TList;
FDockManager: IDockManager;
FHandle: HWnd;
FImeMode: TImeMode;
FImeName: TImeName;
FObjectInstance: Pointer;
FParentWindow: HWnd;
FTabList: TList;
FControls: TList;
FWinControls: TList;
FTabOrder: Integer;
FTabStop: Boolean;
FCtl3D: Boolean;
FShowing: Boolean;
FUseDockManager: Boolean;
FDockSite: Boolean;
FParentCtl3D: Boolean;
FOnDockDrop: TDockDropEvent;
FOnDockOver: TDockOverEvent;
FOnEnter: TNotifyEvent;
FOnExit: TNotifyEvent;
FOnGetSiteInfo: TGetSiteInfoEvent;
FOnKeyDown: TKeyEvent;
FOnKeyPress: TKeyPressEvent;
FOnKeyUp: TKeyEvent;
FOnUnDock: TUnDockEvent;
FOnAlignInsertBefore: TAlignInsertBeforeEvent;
FOnAlignPosition: TAlignPositionEvent;
FMouseInClient: Boolean;
FMouseControl: TControl;
procedure AlignControl(AControl: TControl);
procedure CalcConstraints(var MinWidth, MinHeight, MaxWidth,
MaxHeight: Integer);
procedure DoPaddingChange(Sender: TObject);
function GetAlignDisabled: Boolean;
function GetControl(Index: Integer): TControl;
function GetControlCount: Integer;
function GetDockClientCount: Integer;
function GetDockClients(Index: Integer): TControl;
function GetHandle: HWnd;
function GetParentBackground: Boolean;
function GetTabOrder: TTabOrder;
function GetVisibleDockClientCount: Integer;
procedure Insert(AControl: TControl);
procedure InvalidateFrame;
procedure InvokeHelp;
function IsCtl3DStored: Boolean;
function PrecedingWindow(Control: TWinControl): HWnd;
procedure ReadDesignSize(Reader: TReader);
procedure Remove(AControl: TControl);
procedure RemoveFocus(Removing: Boolean);
procedure SetBevelCut(Index: Integer; const Value: TBevelCut);
procedure SetBevelEdges(const Value: TBevelEdges);
procedure SetBevelKind(const Value: TBevelKind);
procedure SetBevelWidth(const Value: TBevelWidth);
procedure SetBorderWidth(Value: TBorderWidth);
procedure SetCtl3D(Value: Boolean);
procedure SetDockSite(Value: Boolean);
procedure SetPadding(const Value: TPadding);
procedure SetParentCtl3D(Value: Boolean);
procedure SetParentWindow(Value: HWnd);
procedure SetTabOrder(Value: TTabOrder);
procedure SetTabStop(Value: Boolean);
procedure SetUseDockManager(Value: Boolean);
procedure SetZOrderPosition(Position: Integer);
procedure UpdateTabOrder(Value: TTabOrder);
procedure UpdateShowing;
procedure WriteDesignSize(Writer: TWriter);
function IsMenuKey(var Message: TWMKey): Boolean;
procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
procedure WMCommand(var Message: TWMCommand); message WM_COMMAND;
procedure WMNotify(var Message: TWMNotify); message WM_NOTIFY;
procedure WMSysColorChange(var Message: TWMSysColorChange); message WM_SYSCOLORCHANGE;
procedure WMHScroll(var Message: TWMHScroll); message WM_HSCROLL;
procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL;
procedure WMCompareItem(var Message: TWMCompareItem); message WM_COMPAREITEM;
procedure WMDeleteItem(var Message: TWMDeleteItem); message WM_DELETEITEM;
procedure WMDrawItem(var Message: TWMDrawItem); message WM_DRAWITEM;
procedure WMMeasureItem(var Message: TWMMeasureItem); message WM_MEASUREITEM;
procedure WMEraseBkgnd(var Message: TWmEraseBkgnd); message WM_ERASEBKGND;
procedure WMWindowPosChanged(var Message: TWMWindowPosChanged); message WM_WINDOWPOSCHANGED;
procedure WMWindowPosChanging(var Message: TWMWindowPosChanging); message WM_WINDOWPOSCHANGING;
procedure WMSize(var Message: TWMSize); message WM_SIZE;
procedure WMMove(var Message: TWMMove); message WM_MOVE;
procedure WMSetCursor(var Message: TWMSetCursor); message WM_SETCURSOR;
procedure WMKeyDown(var Message: TWMKeyDown); message WM_KEYDOWN;
procedure WMSysKeyDown(var Message: TWMKeyDown); message WM_SYSKEYDOWN;
procedure WMKeyUp(var Message: TWMKeyUp); message WM_KEYUP;
procedure WMSysKeyUp(var Message: TWMKeyUp); message WM_SYSKEYUP;
procedure WMChar(var Message: TWMChar); message WM_CHAR;
procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
procedure WMCharToItem(var Message: TWMCharToItem); message WM_CHARTOITEM;
procedure WMParentNotify(var Message: TWMParentNotify); message WM_PARENTNOTIFY;
procedure WMVKeyToItem(var Message: TWMVKeyToItem); message WM_VKEYTOITEM;
procedure WMDestroy(var Message: TWMDestroy); message WM_DESTROY;
procedure WMMouseActivate(var Message: TWMMouseActivate); message WM_MOUSEACTIVATE;
procedure WMNCCalcSize(var Message: TWMNCCalcSize); message WM_NCCALCSIZE;
procedure WMNCDestroy(var Message: TWMNCDestroy); message WM_NCDESTROY;
procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
procedure WMNCPaint(var Message: TMessage); message WM_NCPAINT;
procedure WMQueryNewPalette(var Message: TMessage); message WM_QUERYNEWPALETTE;
procedure WMPaletteChanged(var Message: TMessage); message WM_PALETTECHANGED;
procedure WMWinIniChange(var Message: TMessage); message WM_WININICHANGE;
procedure WMFontChange(var Message: TMessage); message WM_FONTCHANGE;
procedure WMTimeChange(var Message: TMessage); message WM_TIMECHANGE;
procedure WMSetFocus(var Message: TWMSetFocus); message WM_SETFOCUS;
procedure WMKillFocus(var Message: TWMSetFocus); message WM_KILLFOCUS;
procedure WMIMEStartComp(var Message: TMessage); message WM_IME_STARTCOMPOSITION;
procedure WMIMEEndComp(var Message: TMessage); message WM_IME_ENDCOMPOSITION;
procedure WMContextMenu(var Message: TWMContextMenu); message WM_CONTEXTMENU;
procedure CMChanged(var Message: TMessage); message CM_CHANGED;
procedure CMChildKey(var Message: TMessage); message CM_CHILDKEY;
procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY;
procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR;
procedure CMFocusChanged(var Message: TCMFocusChanged); message CM_FOCUSCHANGED;
procedure CMVisibleChanged(var Message: TMessage); message CM_VISIBLECHANGED;
procedure CMEnabledChanged(var Message: TMessage); message CM_ENABLEDCHANGED;
procedure CMColorChanged(var Message: TMessage); message CM_COLORCHANGED;
procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED;
procedure CMBorderChanged(var Message: TMessage); message CM_BORDERCHANGED;
procedure CMCursorChanged(var Message: TMessage); message CM_CURSORCHANGED;
procedure CMCtl3DChanged(var Message: TMessage); message CM_CTL3DCHANGED;
procedure CMParentCtl3DChanged(var Message: TMessage); message CM_PARENTCTL3DCHANGED;
procedure CMShowingChanged(var Message: TMessage); message CM_SHOWINGCHANGED;
procedure CMShowHintChanged(var Message: TMessage); message CM_SHOWHINTCHANGED;
procedure CMEnter(var Message: TCMEnter); message CM_ENTER;
procedure CMExit(var Message: TCMExit); message CM_EXIT;
procedure CMDesignHitTest(var Message: TCMDesignHitTest); message CM_DESIGNHITTEST;
procedure CMSysColorChange(var Message: TMessage); message CM_SYSCOLORCHANGE;
procedure CMSysFontChanged(var Message: TMessage); message CM_SYSFONTCHANGED;
procedure CMWinIniChange(var Message: TWMWinIniChange); message CM_WININICHANGE;
procedure CMFontChange(var Message: TMessage); message CM_FONTCHANGE;
procedure CMTimeChange(var Message: TMessage); message CM_TIMECHANGE;
procedure CMDrag(var Message: TCMDrag); message CM_DRAG;
procedure CNKeyDown(var Message: TWMKeyDown); message CN_KEYDOWN;
procedure CNKeyUp(var Message: TWMKeyUp); message CN_KEYUP;
procedure CNChar(var Message: TWMChar); message CN_CHAR;
procedure CNSysKeyDown(var Message: TWMKeyDown); message CN_SYSKEYDOWN;
procedure CNSysChar(var Message: TWMChar); message CN_SYSCHAR;
procedure CMControlListChange(var Message: TMessage); message CM_CONTROLLISTCHANGE;
procedure CMControlListChanging(var Message: TMessage); message CM_CONTROLLISTCHANGING;
procedure CMRecreateWnd(var Message: TMessage); message CM_RECREATEWND;
procedure CMInvalidate(var Message: TMessage); message CM_INVALIDATE;
procedure CMDockClient(var Message: TCMDockClient); message CM_DOCKCLIENT;
procedure CMUnDockClient(var Message: TCMUnDockClient); message CM_UNDOCKCLIENT;
procedure CMFloat(var Message: TCMFloat); message CM_FLOAT;
procedure CMBiDiModeChanged(var Message: TMessage); message CM_BIDIMODECHANGED;
procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED;
procedure WMPrintClient(var Message: TWMPrintClient); message WM_PRINTCLIENT;
protected
FDoubleBuffered: Boolean;
FInImeComposition: Boolean;
FDesignSize: TPoint;
procedure ActionChange(Sender: TObject; CheckDefaults: Boolean); override;
procedure AddBiDiModeExStyle(var ExStyle: DWORD);
procedure AssignTo(Dest: TPersistent); override;
procedure AdjustClientRect(var Rect: TRect); virtual;
procedure AdjustSize; override;
procedure AlignControls(AControl: TControl; var Rect: TRect); virtual;
procedure ArrangeControl(AControl: TControl; const ParentSize: TPoint; AAlign: TAlign;
AAlignInfo: TAlignInfo; var Rect: TRect; UpdateAnchorOrigin: Boolean = False);
function CanAutoSize(var NewWidth, NewHeight: Integer): Boolean; override;
function CanResize(var NewWidth, NewHeight: Integer): Boolean; override;
procedure ChangeScale(M, D: Integer); override;
procedure ConstrainedResize(var MinWidth, MinHeight, MaxWidth,
MaxHeight: Integer); override;
procedure ControlsAligned; dynamic;
function CreateDockManager: IDockManager; dynamic;
procedure CreateHandle; virtual;
procedure CreateParams(var Params: TCreateParams); virtual;
procedure CreateSubClass(var Params: TCreateParams;
ControlClassName: PChar);
procedure CreateWindowHandle(const Params: TCreateParams); virtual;
procedure CreateWnd; virtual;
function CustomAlignInsertBefore(C1, C2: TControl): Boolean; virtual;
procedure CustomAlignPosition(Control: TControl; var NewLeft, NewTop, NewWidth,
NewHeight: Integer; var AlignRect: TRect; AlignInfo: TAlignInfo); virtual;
procedure DefineProperties(Filer: TFiler); override;
procedure DestroyHandle; virtual;
procedure DestroyWindowHandle; virtual;
procedure DestroyWnd; virtual;
procedure DoAddDockClient(Client: TControl; const ARect: TRect); dynamic;
procedure DockOver(Source: TDragDockObject; X, Y: Integer; State: TDragState;
var Accept: Boolean); dynamic;
function DockReplaceDockClient(Client: TControl;
NewDockSite: TWinControl; DropControl: TControl;
ControlSide: TAlign; ReplacementClient: TControl): Boolean; virtual;
procedure DoDockOver(Source: TDragDockObject; X, Y: Integer; State: TDragState;
var Accept: Boolean); dynamic;
procedure DoEnter; dynamic;
procedure DoExit; dynamic;
procedure DoFlipChildren; dynamic;
function DoKeyDown(var Message: TWMKey): Boolean;
function DoKeyPress(var Message: TWMKey): Boolean;
function DoKeyUp(var Message: TWMKey): Boolean;
procedure DoRemoveDockClient(Client: TControl); dynamic;
function DoUnDock(NewTarget: TWinControl; Client: TControl): Boolean; dynamic;
function FindNextControl(CurControl: TWinControl;
GoForward, CheckTabStop, CheckParent: Boolean): TWinControl;
procedure FixupTabList;
function GetActionLinkClass: TControlActionLinkClass; override;
procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override;
function GetClientOrigin: TPoint; override;
function GetClientRect: TRect; override;
function GetControlExtents: TRect; virtual;
function GetDeviceContext(var WindowHandle: HWnd): HDC; override;
function GetParentHandle: HWnd;
procedure GetSiteInfo(Client: TControl; var InfluenceRect: TRect;
MousePos: TPoint; var CanDock: Boolean); dynamic;
function GetTopParentHandle: HWnd;
procedure InvalidateDockHostSite(FocusLost: Boolean);
function IsControlMouseMsg(var Message: TWMMouse): Boolean;
function IsControlActivateMsg(var Message: TWMMouseActivate; Control: TControl = nil): Boolean;
function IsQualifyingSite(const Client: TControl): Boolean; dynamic;
procedure KeyDown(var Key: Word; Shift: TShiftState); dynamic;
procedure KeyUp(var Key: Word; Shift: TShiftState); dynamic;
procedure KeyPress(var Key: Char); dynamic;
procedure MainWndProc(var Message: TMessage);
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
procedure NotifyControls(Msg: Word);
procedure PaintControls(DC: HDC; First: TControl);
procedure PaintHandler(var Message: TWMPaint);
procedure PaintWindow(DC: HDC); virtual;
function PaletteChanged(Foreground: Boolean): Boolean; override;
procedure ReadState(Reader: TReader); override;
procedure RecreateWnd;
procedure ReloadDockedControl(const AControlName: string;
var AControl: TControl); dynamic;
procedure ResetIme;
function ResetImeComposition(Action: DWORD): Boolean;
procedure RemoveWindowProps;
procedure ScaleControls(M, D: Integer);
procedure SelectFirst;
procedure SelectNext(CurControl: TWinControl;
GoForward, CheckTabStop: Boolean);
procedure SetChildOrder(Child: TComponent; Order: Integer); override;
procedure SetIme;
function SetImeCompositionWindow(Font: TFont; XPos, YPos: Integer): Boolean;
procedure SetParent(AParent: TWinControl); override;
procedure SetParentBackground(Value: Boolean); virtual;
procedure SetZOrder(TopMost: Boolean); override;
procedure ShowControl(AControl: TControl); virtual;
procedure UpdateBounds;
procedure UpdateControlOriginalParentSize(AControl: TControl; var AOriginalParentSize: TPoint); virtual;
procedure UpdateRecreatingFlag(Recreating: Boolean);
procedure UpdateUIState(CharCode: Word);
procedure WndProc(var Message: TMessage); override;
property BevelEdges: TBevelEdges read FBevelEdges write SetBevelEdges default [beLeft, beTop, beRight, beBo
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -