📄 flatboxs.pas
字号:
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnStartDrag;
end;
{ TDefineRadioButton }
TDefineRadioButton = class(TVersionControl)
private
FMouseIn: Boolean;
FMouseDown: Boolean;
FFocused: Boolean;
FGroupIndex: Integer;
FLayout: TLayoutPosition;
FChecked: Boolean;
FFocusedColor: TColor;
FDownColor: TColor;
FCheckedColor: TColor;
FBorderColor: TColor;
FTransparent: Boolean;
procedure SetColors(Index: Integer; Value: TColor);
procedure SetLayout(Value: TLayoutPosition);
procedure SetChecked(Value: Boolean);
procedure SetTransparent(const Value: Boolean);
protected
procedure DoEnter; override;
procedure DoExit; override;
procedure CMEnabledChanged(var Message: TMessage); message CM_ENABLEDCHANGED;
procedure CMTextChanged(var Message: TWmNoParams); message CM_TEXTCHANGED;
procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR;
procedure CNCommand(var Message: TWMCommand); message CN_COMMAND;
procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED;
procedure WMSetFocus(var Message: TWMSetFocus); message WM_SETFOCUS;
procedure WMSize(var Message: TWMSize); message WM_SIZE;
procedure WMMove(var Message: TWMMove); message WM_MOVE;
procedure WMKillFocus(var Message: TWMKillFocus); message WM_KILLFOCUS;
procedure CMSysColorChange(var Message: TMessage); message CM_SYSCOLORCHANGE;
procedure CMParentColorChanged(var Message: TWMNoParams); message CM_PARENTCOLORCHANGED;
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
procedure Paint; override;
property Transparent: Boolean read FTransparent write SetTransparent default true;
property Checked: Boolean read FChecked write SetChecked default false;
property ColorFocused: TColor index 0 read FFocusedColor write SetColors default DefaultBackdropColor;
property ColorDown: TColor index 1 read FDownColor write SetColors default DefaultBarColor;
property ColorChecked: TColor index 2 read FCheckedColor write SetColors default DefaultCheckColor;
property ColorBorder: TColor index 3 read FBorderColor write SetColors default DefaultBorderColor;
property GroupIndex: Integer read FGroupIndex write FGroupIndex default 0;
property Layout: TLayoutPosition read FLayout write SetLayout default lpLeft;
property Color default DefaultFlatColor;
property ParentColor default false;
public
constructor Create(AOwner: TComponent); override;
end;
{ TFlatRadioButton }
TFlatRadioButton = class(TDefineRadioButton)
published
property Action;
property Transparent;
property Version;
property Caption;
property Checked;
property ColorFocused;
property ColorDown;
property ColorChecked;
property ColorBorder;
property Color;
property Enabled;
property Font;
property GroupIndex;
property Layout;
property ParentColor;
property ParentFont;
property Anchors;
property Constraints;
property DragKind;
property ShowHint;
property TabOrder;
property TabStop;
property Visible;
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 OnEndDock;
property OnStartDock;
end;
{ TDefineRadioGroup }
TDefineRadioGroup = class(TDefineGroupBox)
private
FButtons: TList;
FItems: TStrings;
FItemIndex: Integer;
FColumns: Integer;
FReading: Boolean;
FUpdating: Boolean;
function GetButtons(Index: Integer): TFlatRadioButton;
procedure ArrangeButtons;
procedure ButtonClick(Sender: TObject);
procedure ItemsChange(Sender: TObject);
procedure SetButtonCount(Value: Integer);
procedure SetColumns(Value: Integer);
procedure SetItemIndex(Value: Integer);
procedure SetItems(Value: TStrings);
procedure SetStyleFace(const Value: TStyleFace); override;
procedure UpdateButtons;
protected
procedure Loaded; override;
procedure ReadState(Reader: TReader); override;
procedure CMEnabledChanged(var Message: TMessage); message CM_ENABLEDCHANGED;
procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED;
procedure WMSize(var Message: TWMSize); message WM_SIZE;
property Columns: Integer read FColumns write SetColumns default 1;
property ItemIndex: Integer read FItemIndex write SetItemIndex default -1;
property Items: TStrings read FItems write SetItems;
function CanModify: Boolean; virtual;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
property Buttons[Index: Integer]: TFlatRadioButton read GetButtons;
end;
{ TFlatRadioGroup }
TFlatRadioGroup = class(TDefineRadioGroup)
published
property Action;
property Transparent;
property Alignment;
property Items;
property ItemIndex;
property Columns;
property Align;
property Cursor;
property Caption;
property Font;
property ParentFont;
property Color;
property ParentColor;
property PopupMenu;
property ShowHint;
property ParentShowHint;
property Enabled;
property Visible;
property TabOrder;
property TabStop;
property Hint;
property ColorBorder;
property BackgropStartColor;
property BackgropStopColor;
property BackgropOrien;
property StyleFace;
property Border;
property Anchors;
property Constraints;
property DragKind;
property DragMode;
property DragCursor;
property DockSite;
property OnEndDock;
property OnStartDock;
property OnDockDrop;
property OnDockOver;
property OnUnDock;
property OnClick;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnStartDrag;
end;
{ TDefineListBoxExt }
TDefineListBoxExt = class(TVersionListBoxExt)
private
FParentColor: Boolean;
FFocusColor: TColor;
FBorderColor: TColor;
FFlatColor: TColor;
FMouseIn: Boolean;
procedure SetColors(Index: Integer; Value: TColor);
procedure SetParentColor(Value: Boolean);
protected
procedure RedrawBorder (const Clip: HRGN = 0);
procedure CMEnabledChanged(var Message: TMessage); message CM_ENABLEDCHANGED;
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
procedure WMSetFocus(var Message: TWMSetFocus); message WM_SETFOCUS;
procedure WMKillFocus(var Message: TWMKillFocus); message WM_KILLFOCUS;
procedure WMNCCalcSize(var Message: TWMNCCalcSize); message WM_NCCALCSIZE;
procedure WMNCPaint(var Message: TMessage); message WM_NCPAINT;
procedure CMSysColorChange(var Message: TMessage); message CM_SYSCOLORCHANGE;
procedure CMParentColorChanged(var Message: TWMNoParams); message CM_PARENTCOLORCHANGED;
property ColorFocused: TColor index 0 read FFocusColor write SetColors default clWhite;
property ColorBorder: TColor index 1 read FBorderColor write SetColors default DefaultBorderColor;
property ColorFlat: TColor index 2 read FFlatColor write SetColors default DefaultFlatColor;
property ParentColor: Boolean read FParentColor write SetParentColor default false;
property ParentFont default True;
property AutoSize default False;
property Ctl3D default False;
property BorderStyle default bsNone;
public
constructor Create(AOwner: TComponent); override;
end;
{ TFlatListBoxExt }
TFlatListBoxExt = class(TDefineListBoxExt)
published
property ColorFocused;
property ColorBorder;
property ColorFlat;
property ParentColor;
property Style;
property AutoComplete;
property Align;
property Anchors;
property BiDiMode;
property Columns;
property Constraints;
property DragCursor;
property DragKind;
property DragMode;
property Enabled;
property ExtendedSelect;
property Font;
property ImeMode;
property ImeName;
property IntegralHeight;
property ItemHeight;
property Items;
property MultiSelect;
property ParentBiDiMode;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ScrollWidth;
property ShowHint;
property Sorted;
property TabOrder;
property TabStop;
property TabWidth;
property Visible;
property OnClick;
property OnContextPopup;
property OnData;
property OnDataFind;
property OnDataObject;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnDrawItem;
property OnEndDock;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnKeyDown;
property OnKeyPress;
property OnKeyUp;
property OnMeasureItem;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnStartDock;
property OnStartDrag;
end;
{ TFlatCheckListExt }
TFlatCheckListExt = class(TDefineListBoxExt)
private
FAllowGrayed: Boolean;
FFlat: Boolean;
FStandardItemHeight: Integer;
FOnClickCheck: TNotifyEvent;
FSaveStates: TList;
FHeaderColor: TColor;
FHeaderBkColor: TColor;
procedure ResetItemHeight;
procedure DrawCheck(R: TRect; AState: TCheckBoxState; AEnabled: Boolean);
procedure SetChecked(Index: Integer; AChecked: Boolean);
function GetChecked(Index: Integer): Boolean;
procedure SetState(Index: Integer; AState: TCheckBoxState);
function GetState(Index: Integer): TCheckBoxState;
procedure ToggleClickCheck(Index: Integer);
procedure InvalidateCheck(Index: Integer);
function CreateWrapper(Index: Integer): TObject;
function ExtractWrapper(Index: Integer): TObject;
function GetWrapper(Index: Integer): TObject;
function HaveWrapper(Index: Integer): Boolean;
procedure SetFlat(Value: Boolean);
procedure CNDrawItem(var Message: TWMDrawItem); message CN_DRAWITEM;
procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED;
procedure WMDestroy(var Msg : TWMDestroy);message WM_DESTROY;
function GetItemEnabled(Index: Integer): Boolean;
procedure SetItemEnabled(Index: Integer; const Value: Boolean);
function GetHeader(Index: Integer): Boolean;
procedure SetHeader(Index: Integer; const Value: Boolean);
procedure SetHeaderBkColor(const Value: TColor);
procedure SetHeaderColor(const Value: TColor);
protected
procedure DrawItem(Index: Integer; Rect: TRect;
State: TOwnerDrawState); override;
function InternalGetItemData(Index: Integer): Longint; override;
procedure InternalSetItemData(Index: Integer; AData: Longint); override;
procedure SetItemData(Index: Integer; AData: LongInt); override;
function GetItemData(Index: Integer): LongInt; override;
procedure KeyPress(var Key: Char); override;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); override;
procedure ResetContent; override;
procedure DeleteString(Index: Integer); override;
procedure ClickCheck; dynamic;
procedure CreateParams(var Params: TCreateParams); override;
procedure CreateWnd; override;
procedure DestroyWnd; override;
function GetCheckWidth: Integer;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure CheckAll;
procedure CheckCancel;
property Checked[Index: Integer]: Boolean read GetChecked write SetChecked;
property ItemEnabled[Index: Integer]: Boolean read GetItemEnabled write SetItemEnabled;
property State[Index: Integer]: TCheckBoxState read GetState write SetState;
property Header[Index: Integer]: Boolean read GetHeader write SetHeader;
published
property OnClickCheck: TNotifyEvent read FOnClickCheck write FOnClickCheck;
property HeaderColor: TColor read FHeaderColor write SetHeaderColor default clInfoText;
property HeaderBkColor: TColor read FHeaderBkColor write SetHeaderBkColor default clInfoBk;
property AllowGrayed: Boolean read FAllowGrayed write FAllowGrayed default False;
property Flat: Boolean read FFlat write SetFlat default True;
property ColorFocused;
property ColorBorder;
property ColorFlat;
property ParentColor;
property Align;
property Anchors;
property AutoComplete;
property BiDiMode;
property Columns;
property Constraints;
property DragCursor;
property DragKind;
property DragMode;
property Enabled;
property Font;
property ImeMode;
property ImeName;
property IntegralHeight;
property ItemHeight;
property Items;
property ParentBiDiMode;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property Sorted;
property Style;
property TabOrder;
property TabStop;
property TabWidth;
property Visible;
property OnClick;
property OnContextPopup;
property OnData;
property OnDataFind;
property OnDataObject;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnDrawItem;
property OnEndDock;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnKeyDown;
property OnKeyPress;
property OnKeyUp;
property OnMeasureItem;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnStartDock;
property OnStartDrag;
end;
implementation
uses Consts, RTLConsts, Themes;
{ TDefineCheckBox }
constructor TDefineCheckBox.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ControlStyle := [csSetCaption, csDoubleClicks];
ParentColor := False;
ParentFont := True;
TabStop := True;
Enabled := True;
Visible := True;
Color := DefaultFlatColor;
FFocusedColor := DefaultBackdropColor;
FDownColor := DefaultBarColor;
FCheckedColor := DefaultCheckColor;
FBorderColor := DefaultBorderColor;
FLayout := lpLeft;
FChecked := false;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -