📄 controls.pas
字号:
TControlStyle = set of (csAcceptsControls, csCaptureMouse,
csDesignInteractive, csClickEvents, csFramed, csSetCaption, csOpaque,
csDoubleClicks, csFixedWidth, csFixedHeight, csNoDesignVisible,
csReplicatable, csNoStdEvents, csDisplayDragImage, csReflector,
csActionClient, csMenuEvents, csNeedsBorderPaint, csParentBackground,
csPannable, csAlignWithMargins);
TMouseButton = (mbLeft, mbRight, mbMiddle);
TMouseActivate = (maDefault, maActivate, maActivateAndEat, maNoActivate, maNoActivateAndEat);
TDragMode = (dmManual, dmAutomatic);
TDragState = (dsDragEnter, dsDragLeave, dsDragMove);
TDragKind = (dkDrag, dkDock);
TTabOrder = -1..32767;
TCaption = type string;
PMouseActivateRec = ^TMouseActivateRec;
TMouseActivateRec = record
MousePos: TPoint;
HitTest: Integer;
Button: TMouseButton;
ShiftState: TShiftState;
TopLevel: HWND;
end;
TCMMouseActivate = packed record
Msg: Cardinal;
Reserved: Integer;
MouseActivateRec: PMouseActivateRec;
Result: Integer;
end;
TDate = type TDateTime;
TTime = type TDateTime;
{$EXTERNALSYM TDate}
{$EXTERNALSYM TTime}
(*$HPPEMIT 'namespace Controls'*)
(*$HPPEMIT '{'*)
(*$HPPEMIT ' typedef System::TDateTime TDate;'*)
(*$HPPEMIT ' typedef System::TDateTime TTime;'*)
(*$HPPEMIT '}'*)
TScalingFlags = set of (sfLeft, sfTop, sfWidth, sfHeight, sfFont,
sfDesignSize);
TAnchorKind = (akLeft, akTop, akRight, akBottom);
TAnchors = set of TAnchorKind;
TConstraintSize = 0..MaxInt;
TSizeConstraints = class(TPersistent)
private
FControl: TControl;
FMaxHeight: TConstraintSize;
FMaxWidth: TConstraintSize;
FMinHeight: TConstraintSize;
FMinWidth: TConstraintSize;
FOnChange: TNotifyEvent;
procedure SetConstraints(Index: Integer; Value: TConstraintSize);
protected
procedure Change; virtual;
procedure AssignTo(Dest: TPersistent); override;
property Control: TControl read FControl;
public
constructor Create(Control: TControl); virtual;
property OnChange: TNotifyEvent read FOnChange write FOnChange;
published
property MaxHeight: TConstraintSize index 0 read FMaxHeight write SetConstraints default 0;
property MaxWidth: TConstraintSize index 1 read FMaxWidth write SetConstraints default 0;
property MinHeight: TConstraintSize index 2 read FMinHeight write SetConstraints default 0;
property MinWidth: TConstraintSize index 3 read FMinWidth write SetConstraints default 0;
end;
TMarginSize = 0..MaxInt;
TMargins = class(TPersistent)
private
FControl: TControl;
FLeft, FTop, FRight, FBottom: TMarginSize;
FOnChange: TNotifyEvent;
procedure SetMargin(Index: Integer; Value: TMarginSize);
protected
procedure Change; virtual;
procedure AssignTo(Dest: TPersistent); override;
function GetControlBound(Index: Integer): Integer; virtual;
class procedure InitDefaults(Margins: TMargins); virtual;
property Control: TControl read FControl;
public
constructor Create(Control: TControl); virtual;
procedure SetControlBounds(ALeft, ATop, AWidth, AHeight: Integer; Aligning: Boolean = False); overload;
procedure SetControlBounds(const ARect: TRect; Aligning: Boolean = False); overload;
procedure SetBounds(ALeft, ATop, ARight, ABottom: Integer);
property ControlLeft: Integer index 0 read GetControlBound;
property ControlTop: Integer index 1 read GetControlBound;
property ControlWidth: Integer index 2 read GetControlBound;
property ControlHeight: Integer index 3 read GetControlBound;
property ExplicitLeft: Integer index 4 read GetControlBound;
property ExplicitTop: Integer index 5 read GetControlBound;
property ExplicitWidth: Integer index 6 read GetControlBound;
property ExplicitHeight: Integer index 7 read GetControlBound;
property OnChange: TNotifyEvent read FOnChange write FOnChange;
published
property Left: TMarginSize index 0 read FLeft write SetMargin default 3;
property Top: TMarginSize index 1 read FTop write SetMargin default 3;
property Right: TMarginSize index 2 read FRight write SetMargin default 3;
property Bottom: TMarginSize index 3 read FBottom write SetMargin default 3;
end;
TPadding = class(TMargins)
protected
class procedure InitDefaults(Margins: TMargins); override;
published
property Left default 0;
property Top default 0;
property Right default 0;
property Bottom default 0;
end;
TMouseEvent = procedure(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer) of object;
TMouseMoveEvent = procedure(Sender: TObject; Shift: TShiftState;
X, Y: Integer) of object;
TMouseActivateEvent = procedure(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer; HitTest: Integer; var MouseActivate: TMouseActivate) of object;
TKeyEvent = procedure(Sender: TObject; var Key: Word;
Shift: TShiftState) of object;
TKeyPressEvent = procedure(Sender: TObject; var Key: Char) of object;
TDragOverEvent = procedure(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean) of object;
TDragDropEvent = procedure(Sender, Source: TObject;
X, Y: Integer) of object;
TStartDragEvent = procedure(Sender: TObject;
var DragObject: TDragObject) of object;
TEndDragEvent = procedure(Sender, Target: TObject;
X, Y: Integer) of object;
TDockDropEvent = procedure(Sender: TObject; Source: TDragDockObject;
X, Y: Integer) of object;
TDockOverEvent = procedure(Sender: TObject; Source: TDragDockObject;
X, Y: Integer; State: TDragState; var Accept: Boolean) of object;
TUnDockEvent = procedure(Sender: TObject; Client: TControl;
NewTarget: TWinControl; var Allow: Boolean) of object;
TStartDockEvent = procedure(Sender: TObject;
var DragObject: TDragDockObject) of object;
TGetSiteInfoEvent = procedure(Sender: TObject; DockClient: TControl;
var InfluenceRect: TRect; MousePos: TPoint; var CanDock: Boolean) of object;
TCanResizeEvent = procedure(Sender: TObject; var NewWidth, NewHeight: Integer;
var Resize: Boolean) of object;
TConstrainedResizeEvent = procedure(Sender: TObject; var MinWidth, MinHeight,
MaxWidth, MaxHeight: Integer) of object;
TMouseWheelEvent = procedure(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean) of object;
TMouseWheelUpDownEvent = procedure(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean) of object;
TContextPopupEvent = procedure(Sender: TObject; MousePos: TPoint; var Handled: Boolean) of object;
{$IFDEF LINUX}
TWndMethod = WinUtils.TWndMethod;
{$ENDIF}
{$IFDEF MSWINDOWS}
TWndMethod = Classes.TWndMethod;
{$ENDIF}
{$EXTERNALSYM TWndMethod}
// TDockOrientation indicates how a zone's child zones are arranged.
// doNoOrient means a zone contains a TControl and not child zones.
// doHorizontal means a zone's children are stacked top-to-bottom.
// doVertical means a zone's children are arranged left-to-right.
TDockOrientation = (doNoOrient, doHorizontal, doVertical);
TControl = class(TComponent)
private
FParent: TWinControl;
FWindowProc: TWndMethod;
FLeft: Integer;
FTop: Integer;
FWidth: Integer;
FHeight: Integer;
FControlStyle: TControlStyle;
FControlState: TControlState;
FDesktopFont: Boolean;
FVisible: Boolean;
FEnabled: Boolean;
FParentFont: Boolean;
FParentColor: Boolean;
FAlign: TAlign;
FAutoSize: Boolean;
FDragMode: TDragMode;
FIsControl: Boolean;
FBiDiMode: TBiDiMode;
FParentBiDiMode: Boolean;
FAnchors: TAnchors;
FText: PChar;
FFont: TFont;
FActionLink: TControlActionLink;
FColor: TColor;
FConstraints: TSizeConstraints;
FMargins: TMargins;
FCursor: TCursor;
FDragCursor: TCursor;
FPopupMenu: TPopupMenu;
FHint: string;
FFontHeight: Integer;
FScalingFlags: TScalingFlags;
FShowHint: Boolean;
FParentShowHint: Boolean;
FDragKind: TDragKind;
FDockOrientation: TDockOrientation;
FHostDockSite: TWinControl;
FWheelAccumulator: Integer;
FUndockWidth: Integer;
FUndockHeight: Integer;
FLRDockWidth: Integer;
FTBDockHeight: Integer;
FFloatingDockSiteClass: TWinControlClass;
FOnCanResize: TCanResizeEvent;
FOnConstrainedResize: TConstrainedResizeEvent;
FOnMouseDown: TMouseEvent;
FOnMouseMove: TMouseMoveEvent;
FOnMouseUp: TMouseEvent;
FOnDragDrop: TDragDropEvent;
FOnDragOver: TDragOverEvent;
FOnResize: TNotifyEvent;
FOnStartDock: TStartDockEvent;
FOnEndDock: TEndDragEvent;
FOnStartDrag: TStartDragEvent;
FOnEndDrag: TEndDragEvent;
FOnClick: TNotifyEvent;
FOnDblClick: TNotifyEvent;
FOnContextPopup: TContextPopupEvent;
FOnMouseActivate: TMouseActivateEvent;
FOnMouseLeave: TNotifyEvent;
FOnMouseEnter: TNotifyEvent;
FOnMouseWheel: TMouseWheelEvent;
FOnMouseWheelDown: TMouseWheelUpDownEvent;
FOnMouseWheelUp: TMouseWheelUpDownEvent;
FHelpType: THelpType;
FHelpKeyword: String;
FHelpContext: THelpContext;
procedure CalcDockSizes;
function CheckNewSize(var NewWidth, NewHeight: Integer): Boolean;
function CreateFloatingDockSite(Bounds: TRect): TWinControl;
procedure DoActionChange(Sender: TObject);
function DoCanAutoSize(var NewWidth, NewHeight: Integer): Boolean;
function DoCanResize(var NewWidth, NewHeight: Integer): Boolean;
procedure DoConstraintsChange(Sender: TObject);
procedure DoConstrainedResize(var NewWidth, NewHeight: Integer);
procedure DoDragMsg(var DragMsg: TCMDrag);
procedure DoMouseActivate(var Message: TCMMouseActivate);
procedure DoMouseDown(var Message: TWMMouse; Button: TMouseButton;
Shift: TShiftState);
procedure DoMouseUp(var Message: TWMMouse; Button: TMouseButton);
procedure DoMarginChange(Sender: TObject);
procedure FontChanged(Sender: TObject);
function GetAlignWithMargins: Boolean;
function GetBoundsRect: TRect;
function GetClientHeight: Integer;
function GetClientWidth: Integer;
function GetLRDockWidth: Integer;
function GetMouseCapture: Boolean;
function GetText: TCaption;
function GetTBDockHeight: Integer;
function GetUndockWidth: Integer;
function GetUndockHeight: Integer;
procedure InvalidateControl(IsVisible, IsOpaque: Boolean);
function IsAnchorsStored: Boolean;
function IsBiDiModeStored: Boolean;
function IsCaptionStored: Boolean;
function IsColorStored: Boolean;
function IsEnabledStored: Boolean;
function IsFontStored: Boolean;
function IsHintStored: Boolean;
function IsHelpContextStored: Boolean;
function IsOnClickStored: Boolean;
function IsShowHintStored: Boolean;
function IsVisibleStored: Boolean;
procedure ReadIsControl(Reader: TReader);
procedure ReadExplicitLeft(Reader: TReader);
procedure ReadExplicitTop(Reader: TReader);
procedure ReadExplicitWidth(Reader: TReader);
procedure ReadExplicitHeight(Reader: TReader);
procedure SetAlignWithMargins(Value: Boolean);
procedure SetAnchors(Value: TAnchors);
procedure SetAction(Value: TBasicAction);
procedure SetAlign(Value: TAlign);
procedure SetBoundsRect(const Rect: TRect);
procedure SetClientHeight(Value: Integer);
procedure SetClientSize(Value: TPoint);
procedure SetClientWidth(Value: Integer);
procedure SetColor(Value: TColor);
procedure SetCursor(Value: TCursor);
procedure SetDesktopFont(Value: Boolean);
procedure SetFont(Value: TFont);
procedure SetHeight(Value: Integer);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -