📄 stdctrls.pas
字号:
property OnStartDrag;
end;
TOwnerDrawState = Windows.TOwnerDrawState;
{$NODEFINE TOwnerDrawState}
TCustomCombo = class;
TDrawItemEvent = procedure(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState) of object;
TMeasureItemEvent = procedure(Control: TWinControl; Index: Integer;
var Height: Integer) of object;
TCustomComboBoxStrings = class(TStrings)
private
FComboBox: TCustomCombo;
protected
function GetCount: Integer; override;
function Get(Index: Integer): string; override;
function GetObject(Index: Integer): TObject; override;
procedure PutObject(Index: Integer; AObject: TObject); override;
procedure SetUpdateState(Updating: Boolean); override;
property ComboBox: TCustomCombo read FComboBox write FComboBox;
public
procedure Clear; override;
procedure Delete(Index: Integer); override;
function IndexOf(const S: string): Integer; override;
end;
TCustomComboBoxStringsClass = class of TCustomComboBoxStrings;
TCustomCombo = class(TCustomListControl)
private
FCanvas: TCanvas;
FMaxLength: Integer;
FDropDownCount: Integer;
FItemIndex: Integer;
FOnChange: TNotifyEvent;
FOnSelect: TNotifyEvent;
FOnDropDown: TNotifyEvent;
FOnCloseUp: TNotifyEvent;
FItemHeight: Integer;
FItems: TStrings;
procedure WMCreate(var Message: TWMCreate); message WM_CREATE;
procedure CMCancelMode(var Message: TCMCancelMode); message CM_CANCELMODE;
procedure CMCtl3DChanged(var Message: TMessage); message CM_CTL3DCHANGED;
procedure CNCommand(var Message: TWMCommand); message CN_COMMAND;
procedure WMDrawItem(var Message: TWMDrawItem); message WM_DRAWITEM;
procedure WMMeasureItem(var Message: TWMMeasureItem); message WM_MEASUREITEM;
procedure WMDeleteItem(var Message: TWMDeleteItem); message WM_DELETEITEM;
procedure WMGetDlgCode(var Message: TWMGetDlgCode); message WM_GETDLGCODE;
protected
FEditHandle: HWnd;
FListHandle: HWnd;
FDropHandle: HWnd;
FEditInstance: Pointer;
FDefEditProc: Pointer;
FListInstance: Pointer;
FDefListProc: Pointer;
FDroppingDown: Boolean;
FFocusChanged: Boolean;
FIsFocused: Boolean;
FSaveIndex: Integer;
procedure AdjustDropDown; virtual;
procedure ComboWndProc(var Message: TMessage; ComboWnd: HWnd;
ComboProc: Pointer); virtual;
procedure CreateWnd; override;
procedure EditWndProc(var Message: TMessage);
function GetItemsClass: TCustomComboBoxStringsClass; virtual; abstract;
procedure WndProc(var Message: TMessage); override;
function GetItemHt: Integer; virtual; abstract;
procedure SetItemHeight(Value: Integer); virtual;
function GetCount: Integer; override;
function GetItemCount: Integer; virtual; abstract;
function GetItemIndex: Integer; override;
function GetDroppedDown: Boolean;
function GetSelLength: Integer;
function GetSelStart: Integer;
procedure ListWndProc(var Message: TMessage);
procedure Loaded; override;
procedure Change; dynamic;
procedure Select; dynamic;
procedure DropDown; dynamic;
procedure CloseUp; dynamic;
procedure DestroyWindowHandle; override;
procedure SetDroppedDown(Value: Boolean);
procedure SetSelLength(Value: Integer);
procedure SetSelStart(Value: Integer);
procedure SetMaxLength(Value: Integer);
procedure SetDropDownCount(const Value: Integer); virtual;
procedure SetItemIndex(const Value: Integer); override;
procedure SetItems(const Value: TStrings); virtual;
property DropDownCount: Integer read FDropDownCount write SetDropDownCount default 8;
property EditHandle: HWnd read FEditHandle;
property ItemCount: Integer read GetItemCount;
property ItemHeight: Integer read GetItemHt write SetItemHeight;
property ListHandle: HWnd read FListHandle;
property MaxLength: Integer read FMaxLength write SetMaxLength default 0;
property ParentColor default False;
property OnChange: TNotifyEvent read FOnChange write FOnChange;
property OnDropDown: TNotifyEvent read FOnDropDown write FOnDropDown;
property OnSelect: TNotifyEvent read FOnSelect write FOnSelect;
property OnCloseUp: TNotifyEvent read FOnCloseUp write FOnCloseUp;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure AddItem(Item: String; AObject: TObject); override;
procedure Clear; override;
procedure ClearSelection; override;
procedure CopySelection(Destination: TCustomListControl); override;
procedure DeleteSelected; override;
function Focused: Boolean; override;
procedure SelectAll; override;
property Canvas: TCanvas read FCanvas;
property DroppedDown: Boolean read GetDroppedDown write SetDroppedDown;
property Items: TStrings read FItems write SetItems;
property SelLength: Integer read GetSelLength write SetSelLength;
property SelStart: Integer read GetSelStart write SetSelStart;
property TabStop default True;
end;
TComboBoxStyle = (csDropDown, csSimple, csDropDownList, csOwnerDrawFixed,
csOwnerDrawVariable);
TCustomComboBox = class(TCustomCombo)
private
FAutoComplete: Boolean;
FAutoDropDown: Boolean;
FLastTime: Cardinal;
FFilter: String;
FCharCase: TEditCharCase;
FSorted: Boolean;
FStyle: TComboBoxStyle;
FSaveItems: TStringList;
FOnDrawItem: TDrawItemEvent;
FOnMeasureItem: TMeasureItemEvent;
FAutoCloseUp: Boolean;
procedure SetCharCase(Value: TEditCharCase);
procedure SetSelText(const Value: string);
procedure SetSorted(Value: Boolean);
procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND;
procedure CMParentColorChanged(var Message: TMessage); message CM_PARENTCOLORCHANGED;
procedure CNDrawItem(var Message: TWMDrawItem); message CN_DRAWITEM;
procedure CNMeasureItem(var Message: TWMMeasureItem); message CN_MEASUREITEM;
procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
procedure WMNCCalcSize(var Message: TWMNCCalcSize);
message WM_NCCALCSIZE;
protected
procedure CreateParams(var Params: TCreateParams); override;
procedure CreateWnd; override;
procedure DestroyWnd; override;
procedure DrawItem(Index: Integer; Rect: TRect;
State: TOwnerDrawState); virtual;
function GetItemHt: Integer; override;
function GetItemsClass: TCustomComboBoxStringsClass; override;
function GetSelText: string;
procedure KeyPress(var Key: Char); override;
procedure MeasureItem(Index: Integer; var Height: Integer); virtual;
function SelectItem(const AnItem: String): Boolean;
procedure SetStyle(Value: TComboBoxStyle); virtual;
property Sorted: Boolean read FSorted write SetSorted default False;
property Style: TComboBoxStyle read FStyle write SetStyle default csDropDown;
property OnDrawItem: TDrawItemEvent read FOnDrawItem write FOnDrawItem;
property OnMeasureItem: TMeasureItemEvent read FOnMeasureItem write FOnMeasureItem;
procedure WndProc(var Message: TMessage); override;
function GetItemCount: Integer; override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
property AutoComplete: Boolean read FAutoComplete write FAutoComplete default True;
property AutoCloseUp: Boolean read FAutoCloseUp write FAutoCloseUp default False;
property AutoDropDown: Boolean read FAutoDropDown write FAutoDropDown default False;
property CharCase: TEditCharCase read FCharCase write SetCharCase default ecNormal;
property SelText: string read GetSelText write SetSelText;
end;
TComboBox = class(TCustomComboBox)
published
property AutoComplete default True;
property AutoDropDown default False;
property AutoCloseUp default False;
property BevelEdges;
property BevelInner;
property BevelKind default bkNone;
property BevelOuter;
property Style; {Must be published before Items}
property Anchors;
property BiDiMode;
property CharCase;
property Color;
property Constraints;
property Ctl3D;
property DragCursor;
property DragKind;
property DragMode;
property DropDownCount;
property Enabled;
property Font;
property ImeMode;
property ImeName;
property ItemHeight;
property ItemIndex default -1;
property MaxLength;
property ParentBiDiMode;
property ParentColor;
property ParentCtl3D;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property Sorted;
property TabOrder;
property TabStop;
property Text;
property Visible;
property OnChange;
property OnClick;
property OnCloseUp;
property OnContextPopup;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnDrawItem;
property OnDropDown;
property OnEndDock;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnKeyDown;
property OnKeyPress;
property OnKeyUp;
property OnMeasureItem;
property OnSelect;
property OnStartDock;
property OnStartDrag;
property Items; { Must be published after OnMeasureItem }
end;
{ TButtonControl }
TButtonControl = class;
TButtonActionLink = class(TWinControlActionLink)
protected
FClient: TButtonControl;
procedure AssignClient(AClient: TObject); override;
function IsCheckedLinked: Boolean; override;
procedure SetChecked(Value: Boolean); override;
end;
TButtonActionLinkClass = class of TButtonActionLink;
TButtonControl = class(TWinControl)
private
FClicksDisabled: Boolean;
FWordWrap: Boolean;
function IsCheckedStored: Boolean;
procedure CNCtlColorStatic(var Message: TWMCtlColorStatic); message CN_CTLCOLORSTATIC;
procedure WMEraseBkGnd(var Message: TWMEraseBkGnd); message WM_ERASEBKGND;
procedure SetWordWrap(const Value: Boolean);
protected
procedure ActionChange(Sender: TObject; CheckDefaults: Boolean); override;
function GetActionLinkClass: TControlActionLinkClass; override;
function GetChecked: Boolean; virtual;
procedure SetChecked(Value: Boolean); virtual;
procedure WndProc(var Message: TMessage); override;
procedure CreateParams(var Params: TCreateParams); override;
property Checked: Boolean read GetChecked write SetChecked stored IsCheckedStored default False;
property ClicksDisabled: Boolean read FClicksDisabled write FClicksDisabled;
property WordWrap: Boolean read FWordWrap write SetWordWrap default False;
public
constructor Create(AOwner: TComponent); override;
end;
TButton = class(TButtonControl)
private
FDefault: Boolean;
FCancel: Boolean;
FActive: Boolean;
FModalResult: TModalResult;
procedure SetDefault(Value: Boolean);
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 CNCommand(var Message: TWMCommand); message CN_COMMAND;
procedure CNCtlColorBtn(var Message: TWMCtlColorBtn); message CN_CTLCOLORBTN;
procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND;
protected
procedure CreateParams(var Params: TCreateParams); override;
procedure CreateWnd; override;
procedure SetButtonStyle(ADefault: Boolean); virtual;
public
constructor Create(AOwner: TComponent); override;
procedure Click; override;
function UseRightToLeftAlignment: Boolean; override;
published
property Action;
property Anchors;
property BiDiMode;
property Cancel: Boolean read FCancel write FCancel default False;
property Caption;
property Constraints;
property Default: Boolean read FDefault write SetDefault default False;
property DragCursor;
property DragKind;
property DragMode;
property Enabled;
property Font;
property ModalResult: TModalResult read FModalResult write FModalResult default 0;
property ParentBiDiMode;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property TabOrder;
property TabStop default True;
property Visible;
property WordWrap;
property OnClick;
property OnContextPopup;
property OnDragDrop;
property OnDragOver;
property OnEndDock;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnKeyDown;
property OnKeyPress;
property OnKeyUp;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnStartDock;
property OnStartDrag;
end;
TCheckBoxState = (cbUnchecked, cbChecked, cbGrayed);
TCustomCheckBox = class(TButtonControl)
private
FAlignment: TLeftRight;
FAllowGrayed: Boolean;
FState: TCheckBoxState;
procedure SetAlignment(Value: TLeftRight);
procedure SetState(Value: TCheckBoxState);
procedure WMSize(var Message: TMessage); message WM_SIZE;
procedure CMCtl3DChanged(var Message: TMessage); message CM_CTL3DCHANGED;
procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR;
procedure CNCommand(var Message: TWMCommand); message CN_COMMAND;
protected
procedure Toggle; virtual;
procedure Click; override;
procedure CreateParams(var Params: TCreateParams); override;
procedure CreateWnd; override;
function GetChecked: Boolean; override;
procedure SetChecked(Value: Boolean); override;
property Alignment: TLeftRight read FAlignment write SetAlignment default taRightJustify;
property AllowGrayed: Boolean read FAllowGrayed write FAllowGrayed default False;
property State: TCheckBoxState read FState write SetState default cbUnchecked;
public
constructor Create(AOwner: TComponent); override;
function GetControlsAlignment: TAlignment; override;
published
property TabStop default True;
end;
TCheckBox = class(TCustomCheckBox)
published
property Action;
property Alignment;
property AllowGrayed;
property Anchors;
property BiDiMode;
property Caption;
property Checked;
property Color nodefault;
property Constraints;
property Ctl3D;
property DragCursor;
property DragKind;
property DragMode;
property Enabled;
property Font;
property ParentBiDiMode;
property ParentColor;
property ParentCtl3D;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property State;
property TabOrder;
property TabStop;
property Visible;
property WordWrap;
property OnClick;
property OnContextPopup;
property OnDragDrop;
property OnDragOver;
property OnEndDock;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnKeyDown;
property OnKeyPress;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -