📄 flatctrls.pas
字号:
TDefineState = set of (msMasked, msReEnter, msDBSetText);
TDefineMask = class(TDefineEdit)
private
FEditMask: TEditMask;
FMaskBlank: Char;
FMaxChars: Integer;
FMaskSave: Boolean;
FMaskState: TDefineState;
FCaretPos: Integer;
FBtnDownX: Integer;
FOldValue: string;
FSettingCursor: Boolean;
FOnValidate: TValidateEvent;
function DoInputChar(var NewChar: Char; MaskOffset: Integer): Boolean;
function InputChar(var NewChar: Char; Offset: Integer): Boolean;
function DeleteSelection(var Value: string; Offset: Integer; Len: Integer): Boolean;
function InputString(var Value: string; const NewValue: string; Offset: Integer): Integer;
function AddEditFormat(const Value: string; Active: Boolean): string;
function RemoveEditFormat(const Value: string): string;
function FindLiteralChar (MaskOffset: Integer; InChar: Char): Integer;
function GetEditText: string;
function GetMasked: Boolean;
function GetText: TMaskedText;
function GetMaxLength: Integer;
function CharKeys(var CharCode: Char): Boolean;
procedure SetEditText(const Value: string);
procedure SetEditMask(const Value: TEditMask);
procedure SetMaxLength(Value: Integer);
procedure SetText(const Value: TMaskedText);
procedure DeleteKeys(CharCode: Word);
procedure HomeEndKeys(CharCode: Word; Shift: TShiftState);
procedure CursorInc(CursorPos: Integer; Incr: Integer);
procedure CursorDec(CursorPos: Integer);
procedure ArrowKeys(CharCode: Word; Shift: TShiftState);
procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
procedure WMLButtonUp(var Message: TWMLButtonUp); message WM_LBUTTONUP;
procedure WMSetFocus(var Message: TWMSetFocus); message WM_SETFOCUS;
procedure WMCut(var Message: TMessage); message WM_CUT;
procedure WMPaste(var Message: TMessage); message WM_PASTE;
procedure CMEnter(var Message: TCMEnter); message CM_ENTER;
procedure CMExit(var Message: TCMExit); message CM_EXIT;
procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED;
procedure CMWantSpecialKey(var Message: TCMWantSpecialKey); message CM_WANTSPECIALKEY;
protected
procedure ReformatText(const NewMask: string);
procedure GetSel(var SelStart: Integer; var SelStop: Integer);
procedure SetSel(SelStart: Integer; SelStop: Integer);
procedure SetCursor(Pos: Integer);
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
procedure KeyUp(var Key: Word; Shift: TShiftState); override;
procedure KeyPress(var Key: Char); override;
function EditCanModify: Boolean; virtual;
procedure Reset; virtual;
function GetFirstEditChar: Integer;
function GetLastEditChar: Integer;
function GetNextEditChar(Offset: Integer): Integer;
function GetPriorEditChar(Offset: Integer): Integer;
function GetMaxChars: Integer;
function Validate(const Value: string; var Pos: Integer): Boolean; virtual;
procedure ValidateError; virtual;
procedure CheckCursor;
property MaskState: TDefineState read FMaskState write FMaskState;
property MaxLength: Integer read GetMaxLength write SetMaxLength default 0;
property OnValidate : TValidateEvent read FOnValidate write FOnValidate;
public
constructor Create(AOwner: TComponent); override;
procedure ValidateEdit; virtual;
procedure Clear; override;
function GetTextLen: Integer;
property IsMasked: Boolean read GetMasked;
property EditText: string read GetEditText write SetEditText;
property Text: TMaskedText read GetText write SetText;
property EditMask: TEditMask read FEditMask write SetEditMask;
end;
{ TFlatIPEdit }
TFlatIPEdit = class(TDefineMask)
protected
{ Protected declarations }
IPText:TIP;
fIPAddress : String;
function GetInx: integer;
function GetIPText: String;
procedure SetIPText(const Value: String);
function Replace(Start, Len: Integer):integer;
procedure KeyPress(var Key: Char); override;
procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED;
procedure CMExit(var Message: TCMExit); message CM_EXIT;
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
procedure KeyUp(var Key: Word; Shift: TShiftState); override;
public
property Index:integer read GetInx;
constructor Create(AOwner: TComponent); override;
published
property IPAddress: String read GetIPText write SetIPText;
property Text;
property Ticket;
property TicketPosition;
property TicketSpace;
property ColorFocused;
property ColorBorder;
property ColorFlat;
property ParentColor;
property Alignment;
property AutoSelect;
property CharCase;
property Color;
property DragCursor;
property DragMode;
property Enabled;
property Font;
property HideSelection;
property OEMConvert;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ReadOnly;
property ShowHint;
property TabOrder;
property TabStop;
property Visible;
property OnChange;
property OnClick;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnKeyDown;
property OnKeyPress;
property OnKeyUp;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnStartDrag;
property OnValidate;
end;
{ TFlatMaskEdit }
TFlatMaskEdit = class(TDefineMask)
published
property Ticket;
property TicketPosition;
property TicketSpace;
property ColorFocused;
property ColorBorder;
property ColorFlat;
property ParentColor;
property Alignment;
property CharCase;
property Color;
property DragCursor;
property DragMode;
property Enabled;
property EditMask;
property Font;
property HideSelection;
property MaxLength;
property OEMConvert;
property ParentFont;
property ParentShowHint;
property PasswordChar;
property PopupMenu;
property ImeMode;
property ImeName;
property ReadOnly;
property ShowHint;
property TabOrder;
property TabStop;
property Text;
property Visible;
property OnChange;
property OnClick;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnKeyDown;
property OnKeyPress;
property OnKeyUp;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnStartDrag;
property OnValidate;
end;
{ TDefineComboBox }
TDefineComboBox = class(TVersionComboBox)
private
FArrowColor: TColor;
FArrowBackgroundColor: TColor;
FBorderColor: TColor;
FButtonWidth: Integer;
FChildHandle: HWND;
FDefListProc: Pointer;
FListHandle: HWND;
FListInstance: Pointer;
FSysBtnWidth: Integer;
FSolidBorder: Boolean;
FTicketSpace: Integer;
FTicket: TFlatTicket;
FMouseInControl: Boolean;
FTicketPosition: TTicketPosition;
FFocusedColor: TColor;
FFlatColor: TColor;
fParentColor: Boolean;
FReadOnly: boolean;
procedure SetColors(Index: Integer; Value: TColor);
function GetButtonRect: TRect;
procedure PaintButton;
procedure PaintBorder;
procedure RedrawBorders;
procedure InvalidateSelection;
function GetSolidBorder: Boolean;
procedure SetSolidBorder;
procedure SetParentColor(const Value: Boolean);
protected
procedure ListWndProc(var Message: TMessage);
procedure KeyPress(var Key: Char); override;
procedure WMSetFocus(var Message: TMessage); message WM_SETFOCUS;
procedure WMKillFocus(var Message: TMessage); message WM_KILLFOCUS;
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
procedure WMKeyDown(var Message: TMessage); message WM_KEYDOWN;
procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
procedure WMNCPaint(var Message: TMessage); message WM_NCPAINT;
procedure CMEnabledChanged(var Msg: TMessage); message CM_ENABLEDCHANGED;
procedure CNCommand(var Message: TWMCommand); message CN_COMMAND;
procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED;
procedure CMSysColorChange(var Message: TMessage); message CM_SYSCOLORCHANGE;
procedure CMParentColorChanged(var Message: TWMNoParams); message CM_PARENTCOLORCHANGED;
procedure WndProc(var Message: TMessage); override;
procedure ComboWndProc(var Message: TMessage; ComboWnd: HWnd; ComboProc: Pointer); override;
procedure SetTicketPosition(const Value: TTicketPosition);
procedure SetTicketSpace(const Value: Integer);
procedure SetName(const Value: TComponentName); override;
procedure CMVisiblechanged(var Message: TMessage); message CM_VISIBLECHANGED;
procedure CMBidimodechanged(var Message: TMessage); message CM_BIDIMODECHANGED;
procedure SetParent(AParent: TWinControl); override;
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
procedure SetupInternalLabel;
property SolidBorder: Boolean read FSolidBorder;
property Ticket: TFlatTicket read FTicket;
property TicketPosition: TTicketPosition read FTicketPosition write SetTicketPosition default poLeft;
property TicketSpace: Integer read FTicketSpace write SetTicketSpace;
property ParentColor: Boolean read fParentColor write SetParentColor default true;
property ColorArrow: TColor index 0 read FArrowColor write SetColors default clBlack;
property ColorArrowBackground: TColor index 1 read FArrowBackgroundColor write SetColors default $00C5D6D9;
property ColorBorder: TColor index 2 read FBorderColor write SetColors default DefaultBorderColor;
property ColorFlat: TColor index 3 read FFlatColor write SetColors default DefaultFlatColor;
property ColorFocued: TColor index 4 read FFocusedColor write SetColors default clWhite;
property ReadOnly: boolean read FReadOnly write FReadOnly default false;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure SetBounds(ALeft: Integer; ATop: Integer; AWidth: Integer; AHeight: Integer); override;
end;
{ TFlatComboBox }
TFlatComboBox = class(TDefineComboBox)
published
property Ticket;
property TicketPosition;
property TicketSpace;
property Style;
property ParentColor;
property ColorArrow;
property ColorArrowBackground;
property ColorBorder;
property ColorFlat;
property ColorFocued;
property DragMode;
property DragCursor;
property DropDownCount;
property Enabled;
property ReadOnly;
property Font;
property ItemHeight;
property Items;
property MaxLength;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property Sorted;
property TabOrder;
property TabStop;
property ImeMode;
property ImeName;
property Text;
property Visible;
property ItemIndex;
property OnChange;
property OnClick;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnDrawItem;
property OnDropDown;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnKeyDown;
property OnKeyPress;
property OnKeyUp;
property OnMeasureItem;
property OnStartDrag;
property Anchors;
property BiDiMode;
property Constraints;
property DragKind;
property ParentBiDiMode;
property OnEndDock;
property OnStartDock;
end;
{ TDefineColorBox }
TDefineColorBox = class(TVersionComboBox)
private
FArrowColor: TColor;
FArrowBackgroundColor: TColor;
FBorderColor: TColor;
FHighlightColor: TColor;
FButtonWidth: Integer;
FChildHandle: HWND;
FDefListProc: Pointer;
FListHandle: HWND;
FListInstance: Pointer;
FSysBtnWidth: Integer;
FSolidBorder: Boolean;
FShowNames: Boolean;
FValue: TColor;
FColorBoxWidth: Integer;
FColorDlg: TColorDialog;
FTicketSpace: Integer;
FTicket: TFlatTicket;
FTicketPosition: TTicketPosition;
fLanguage: TLanguage;
procedure SetColors(Index: Integer; Value: TColor);
function GetButtonRect: TRect;
procedure PaintButton;
procedure PaintBorder;
procedure RedrawBorders;
procedure InvalidateSelection;
function GetSolidBorder: Boolean;
procedure SetSolidBorder;
procedure SetShowNames(Value: Boolean);
procedure SetColorValue(Value: TColor);
procedure SetColorBoxWidth(Value: Integer);
procedure SetTicketPosition(const Value: TTicketPosition);
procedure SetTicketSpace(const Value: Integer);
procedure SetLanguage(const Value: TLanguage);
protected
procedure DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState); override;
procedure CreateWnd; override;
procedure WndProc(var Message: TMessage); override;
procedure ListWndProc(var Message: TMessage);
procedure WMSetFocus(var Message: TMessage); message WM_SETFOCUS;
procedure WMKillFocus(var Message: TMessage); message WM_KILLFOCUS;
procedure WMKeyDown(var Message: TMessage); message WM_KEYDOWN;
procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
procedure WMNCPaint(var Message: TMessage); message WM_NCPAINT;
procedure CMEnabledChanged(var Msg: TMessage); message CM_ENABLEDCHANGED;
procedure CNCommand(var Message: TWMCommand); message CN_COMMAND;
procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED;
procedure ComboWndProc(var Message: TMessage; ComboWnd: HWnd; ComboProc: Pointer); override;
property SolidBorder: Boolean read FSolidBorder;
procedure Click; override;
procedure SetName(const Value: TComponentName); override;
procedure CMVisiblechanged(var Message: TMessage); message CM_VISIBLECHANGED;
procedure CMBidimodechanged(var Message: TMessage); message CM_BIDIMODECHANGED;
procedure SetParent(AParent: TWinControl); override;
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
procedure SetupInternalLabel;
property Color default DefaultFlatColor;
property ColorArrow: TColor index 0 read FArrowColor write SetColors default clBlack;
property ColorArrowBackground: TColor index 1 read FArrowBackgroundColor write SetColors default $00C5D6D9;
property ColorBorder: TColor index 2 read FBorderColor write SetColors default DefaultBorderColor;
property ColorHighlight: TColor index 3 read FHighlightColor write SetColors default clHighlight;
property ColorBoxWidth: Integer read FColorBoxWidth write SetColorBoxWidth default 30;
property ShowNames: Boolean read FShowNames write SetShowNames;
property Value: TColor read FValue write SetColorValue;
property Language:TLanguage read fLanguage write SetLanguage default lgChinese;
property Ticket: TFlatTicket read FTicket;
property TicketPosition: TTicketPosition read FTicketPosition write SetTicketPosition default poLeft;
property TicketSpace: Integer read FTicketSpace write SetTicketSpace default 3;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
function AddColor(ColorName: String; Color: TColor): Boolean;
function DeleteColorByName(ColorName: String): Boolean;
function DeleteColorByColor(Color: TColor): Boolean;
procedure SetBounds(ALeft: Integer; ATop: Integer; AWidth: Integer; AHeight: Integer); override;
end;
{ TFlatColorBox }
TFlatColorBox = class(TDefineColorBox)
published
property Color;
property ColorArrow;
property ColorArrowBackground;
property ColorBorder;
property ColorHighlight;
property ColorBoxWidth;
property ShowNames;
property Value;
property Language;
property Ticket;
property TicketPosition;
property TicketSpace;
property DragMode;
property DragCursor;
property DropDownCount;
property Enabled;
property Font;
property MaxLength;
property ParentFont;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -