📄 mxoutlookbarpro.pas
字号:
Procedure SetDisplayName( Const AValue: String ); Override;
Procedure ActionChange( Sender: TObject; CheckDefaults: Boolean ); Virtual;
Function GetActionLinkClass: TControlActionLinkClass; Virtual;
Procedure DrawCaption( ACanvas: TCanvas; Pushed: Boolean; Underline: Boolean ); Virtual;
Procedure DrawCheckStyle( ACanvas: TCanvas ); Virtual;
Procedure DrawFocusRect( ACanvas: TCanvas; Var ARect: TRect; AButtonState: TmxButtonState ); Virtual;
Procedure DrawXPFocusRect( ACanvas: TCanvas; Var ARect: TRect; AButtonState: TmxButtonState ); Virtual;
Procedure DrawImageRect( ACanvas: TCanvas; Var ARect: TRect; Pushed: Boolean ); Virtual;
Procedure DrawXPImageRect( ACanvas: TCanvas; Var ARect: TRect; Pushed: Boolean ); Virtual;
Procedure Draw( DrawBitmap: TBitmap; Var ARect: TRect; MaxBottom: Integer; Calcsize: Boolean ); Virtual;
Procedure DoBeforeDrawButton( ACanvas: TCanvas; Var AButtonRect: TRect; Var AFocusRect: TRect; Var AImageRect: TRect; Var ALabelRect: TRect ); Virtual;
Procedure DoDrawButton( ACanvas: TCanvas; AView: TmxButtonView; AState: TmxButtonState; AImageRect: TRect; ALabelRect: TRect ); Virtual;
Procedure DoAfterDrawButton( ACanvas: TCanvas; AImageRect: TRect; ALabelRect: TRect ); Virtual;
Public
Property HitStatus: TmxHitPosition Read FDragDropHitStatus;
Property IsFirstButton: Boolean Read IsTheFirstButton;
Property IsLastButton: Boolean Read IsTheLastButton;
Property HeaderIndex: Integer Read GetHeaderIndex;
Property ButtonRect: TRect Read FButtonRect;
Property LabelRect: TRect Read FLabelRect;
{$WARNINGS OFF}
Property Data: Pointer Read FData Write SetData;
{$WARNINGS ON}
Function UseRightToLeftReading: Boolean;
Function DrawTextBiDiModeFlags( Flags: Longint ): Longint;
Function UseRightToLeftAlignment: Boolean;
Function DrawTextBiDiModeFlagsReadingOnly: Longint;
Constructor Create( ACollection: TCollection ); Override;
Destructor Destroy; Override;
Procedure Assign( Source: TPersistent ); Override;
Procedure AssignTo( Destination: TPersistent ); Override;
Procedure Alert;
Procedure StopAlert;
Published
Property Action: TBasicAction Read GetAction Write SetAction;
Property AutoSize: Boolean Read FAutoSize Write SetAutoSize;
Property Alignment: TAlignment Read FAlignment Write SetAlignment Default taCenter;
Property AllowGrayed: Boolean Read FAllowGrayed Write FAllowGrayed;
Property ButtonIndex: Integer Read GetButtonIndex Write SetButtonIndex;
Property ButtonKind: TmxButtonKind Read FButtonKind Write SetButtonKind Default bkButton;
Property ButtonStyle: TmxButtonStyle Read FButtonStyle Write SetButtonStyle;
Property ButtonView: TmxButtonView Read FButtonView Write SetButtonView;
Property BiDiMode: TBiDiMode Read FBiDiMode Write SetBiDiMode Stored IsBiDiModeStored;
Property Checked: Boolean Read FChecked Write SetChecked;
Property Caption: String Read FCaption Write SetCaption;
Property Color: TColor Read FColor Write SetColor;
Property Cursor: TCursor Read FCursor Write FCursor Default crDefault;
Property CheckState: TCheckBoxState Read FCheckState Write SetCheckState;
Property Enabled: Boolean Read FEnabled Write SetEnabled;
Property Font: TFont Read FFont Write SetFont;
Property HighlightFont: TFont Read FHighlightFont Write SetHighlightFont;
Property HelpContext: THelpContext Read FHelpContext Write SetHelpContext;
Property Height: Word Read FHeight Write SetHeight Default 20;
Property Hint: String Read FHint Write SetHint;
Property ImageIndex: TImageIndex Read FImageIndex Write SetImageIndex;
Property Margin: Integer Read FMargin Write SetMargin Default 4;
Property Name: String Read GetDisplayName Write SetDisplayName;
Property PopupMenu: TPopupMenu Read FPopupMenu Write FPopupMenu;
Property ShowAccelChar: Boolean Read FShowAccelChar Write SetShowAccelChar Default True;
Property ParentBiDiMode: Boolean Read FParentBiDiMode Write SetParentBiDiMode Default True;
Property Tag: Longint Read FTag Write FTag Default 0;
Property Transparent: Boolean Read FTransparent Write SetTransparent;
Property Options: TmxButtonOptions Read FOptions Write SetOptions;
Property UserString: String Read FUserString Write FUserString;
Property Visible: Boolean Read FVisible Write SetVisible;
Property Width: Word Read FWidth Write SetWidth Default 20;
Property WordWrap: Boolean Read FWordWrap Write SetWordWrap Default False;
Property OnClick: TNotifyEvent Read FOnClick Write FOnClick;
Property OnBeforeDrawButton: TmxEventBeforeDrawCommandButton Read FOnBeforeDrawButton Write FOnBeforeDrawButton;
Property OnDrawButton: TmxEventDrawCommandButton Read FOnDrawButton Write FOnDrawButton;
Property OnAfterDrawButton: TmxEventAfterDrawCommandButton Read FOnAfterDrawButton Write FOnAfterDrawButton;
End;
// ************************************************************************
// ************************************************************************
// ************************************************************************
TmxButtons = Class( TCollection )
Private
FOwner: TmxHeader;
FOutlookBarPro: TmxOutlookBarPro;
Function GetButtonItem( Index: Integer ): TmxButton;
Procedure SetButtonItem( Index: Integer; AValue: TmxButton );
Protected
Function GetAttrCount: Integer; Override;
Function GetAttr( Index: Integer ): String; Override;
Function GetItemAttr( Index, ItemIndex: Integer ): String; Override;
Procedure SetItemName( Item: TCollectionItem ); Override;
Procedure Update( Item: TCollectionItem ); Override;
Function GetOwner: TPersistent; Override;
Public
Constructor Create( AOutlookBarPro: TmxOutlookBarPro; AHeader: TmxHeader; ItemClass: TCollectionItemClass );
Function Add: TmxButton;
Property OutlookBarPro: TmxOutlookBarPro Read FOutlookBarPro;
Property Header: TmxHeader Read FOwner;
Property Buttons[ Index: Integer ]: TmxButton Read GetButtonItem Write SetButtonItem; Default;
End;
// ************************************************************************
// ************************************************************************
// ************************************************************************
TmxInplaceEdit = Class( TCustomEdit )
Private
FAlignment: TAlignment;
FActivate: Boolean;
FBorderColor: TColor;
FFlat: Boolean;
FShowBorder: Boolean;
FMouseInHeader: boolean;
FWordWrap: Boolean;
Procedure WMNCPaint( Var Message: TMessage ); Message WM_NCPAINT;
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 WMSize( Var Message: TWMSize ); Message WM_SIZE;
Procedure DrawComponentBorder( AColor: TColor; ABorder: TColor; AStyle: TmxBorderStyle; ACanvas: TCanvas; ARect: TRect );
Procedure SetFont( AValue: TFont );
Function GetFont: TFont;
Procedure SetBorderColor( AValue: TColor );
Procedure SetFlat( AValue: Boolean );
Procedure SetShowBorder( AValue: Boolean );
Procedure SetWordWrap( AValue: Boolean );
Procedure SetAlignment( AValue: TAlignment );
Protected
Procedure CreateParams( Var Params: TCreateParams ); Override;
Procedure SetControlBorder;
Procedure InvalidateControl;
Public
Constructor Create( AOwner: TComponent ); Override;
Procedure Assign( Source: TPersistent ); Override;
Procedure AssignTo( Destination: TPersistent ); Override;
Published
Property Alignment: TAlignment Read FAlignment Write SetAlignment Default taLeftJustify;
Property Activate: Boolean Read FActivate Write FActivate;
Property BorderColor: TColor Read FBorderColor Write SetBorderColor;
Property Flat: Boolean Read FFlat Write SetFlat;
Property ShowBorder: Boolean Read FShowBorder Write SetShowBorder;
Property Font: TFont Read GetFont Write SetFont;
Property WordWrap: Boolean Read FWordWrap Write SetWordWrap Default True;
Property PopupMenu;
Property OnContextPopup Stored False;
End;
// ************************************************************************
// ************************************************************************
// ************************************************************************
TmxInplaceEditor = Class( TPersistent )
Private
FHeaderEdit: Boolean;
FEdit: TmxInplaceEdit;
FEditingItem: TCollectionItem;
FEditing: Boolean;
FOnChange: TNotifyEvent;
Procedure SetFont( AValue: TFont );
Function GetFont: TFont;
Function GetBorderColor: TColor;
Procedure SetBorderColor( AValue: TColor );
Function GetFlat: Boolean;
Procedure SetFlat( AValue: Boolean );
Procedure SetShowBorder( AValue: Boolean );
Function GetShowBorder: Boolean;
Procedure SetWordWrap( AValue: Boolean );
Function GetWordWrap: Boolean;
Procedure SetAlignment( AValue: TAlignment );
Function GetAlignment: TAlignment;
Procedure SetPopup( AValue: TPopupMenu );
Function GetPopup: TPopupMenu;
Procedure SetOnContextPopup( AValue: TContextPopupEvent );
Function GetOnContextPopup: TContextPopupEvent;
Procedure DoEndEdit( ACancel: Boolean );
Procedure OnEditExit( Sender: TObject );
Procedure DoEditKeyDown( Sender: TObject; Var Key: Word; Shift: TShiftState );
Protected
Procedure Change; Dynamic;
Procedure DoProcessEditResults( ACancel: Boolean ); Virtual;
Public
Property Editing: Boolean Read FEditing;
Constructor Create( AOwner: TmxOutlookBarPro ); Virtual;
Procedure EditHeader( AHeader: TmxHeader );
Procedure EditButton( AButton: TmxButton );
Procedure Assign( Source: TPersistent ); Override;
Procedure AssignTo( Destination: TPersistent ); Override;
Published
Property Alignment: TAlignment Read GetAlignment Write SetAlignment;
Property BorderColor: TColor Read GetBorderColor Write SetBorderColor;
Property Flat: Boolean Read GetFlat Write SetFlat;
Property ShowBorder: Boolean Read GetShowBorder Write SetShowBorder;
Property Font: TFont Read GetFont Write SetFont;
Property WordWrap: Boolean Read GetWordWrap Write SetWordWrap;
Property PopupMenu: TPopupMenu Read GetPopup Write SetPopup;
Property OnContextPopup: TContextPopupEvent Read GetOnContextPopup Write SetOnContextPopup;
Property OnChange: TNotifyEvent Read FOnChange Write FOnChange;
End;
// ************************************************************************
// ************************************************************************
// ************************************************************************
TmxOutlookBarPro = Class( TCustomControl )
Private
FAcceptedObject: Boolean;
FLoaded: Boolean;
FStopAlerting: Boolean;
FAlertColor: TColor;
FAlertedButton: TmxButton;
FDropMarkColor: TColor;
FLastDropMode: TmxDropMode;
FDraggedButton: TmxButton;
FDragThreshold: Integer;
FDragStartPos: TPoint;
FDragManager: TmxDragDropManager;
FDragStates: TmxOutlookBarStates;
FLastVCLDragTarget: TmxButton;
FCurrentTargetButton: TmxButton;
FCurrentTargetHeader: TmxHeader;
FAutoScrollDelay: Cardinal;
FAutoButtonScrollDelay: Cardinal;
FAutoChangeDelay: Cardinal;
FAlertInterval: Cardinal;
FOnDragAllowed: TmxEventDragAllowed;
FOnDragOver: TmxEventDragOver;
FOnDragEnter: TmxEventDragEnter;
FOnDragDrop: TmxEventDragDrop;
FEachHeaderSelection: Boolean;
FOffset: Integer;
FScrollDown: Boolean;
FScrollUpRect: TRect;
FScrollUpState: TmxButtonState;
FScrollDownRect: TRect;
FScrollDownState: TmxButtonState;
FButtonScrollUpRect: TRect;
FButtonScrollUpState: TmxButtonState;
FButtonScrollDownRect: TRect;
FButtonScrollDownState: TmxButtonState;
FSavedHeaderIndex: Integer;
FActiveHeader: TmxHeader;
FBackground: TmxBackground;
FBevelInner: TPanelBevel;
FBevelOuter: TPanelBevel;
FBevelWidth: TBevelWidth;
FBorder: TmxBorder;
FBorderStyle: TBorderStyle;
FCommonStyle: Boolean;
FCloseButton: TmxCloseButton;
FExplorerMethod: TmxExplorerMethod;
FFlat: Boolean;
FHeaders: TmxHeaders;
FHeaderImages: TmxHeaderImages;
FMouseInHeader: TmxHeader;
FMouseInHeaderBody: TmxHeader;
FMouseInButton: TmxButton;
FProcessing: Boolean;
FPainting: Boolean;
FReCalcHeaderPositions: Boolean;
FHeaderScrollType: TmxHeaderScrollType;
FHeaderScrollValue: Byte;
FHeaderScrollAcceleration: Byte;
FSequence: Longint;
FSettings: TmxBarSettings;
FScrollChange: Word;
FOptions: TmxBarOptions;
FUpdating: Boolean;
FUpdateCounter: Integer;
FUpdatedHeaderIndex: Integer;
FVersion: Integer;
FViewStyle: TmxViewStyle;
FEditor: TmxInplaceEditor;
FReadyToPaint: Boolean;
FScrollView: TmxScrollView;
FScrollBoxSize: Word;
FPreSet: TmxPreSet;
FOnContextPopup: TContextPopupEvent;
FOnEditorContextPopup: TContextPopupEvent;
FOnChange: TmxEventHeaderChange;
FOnCanChange: TmxEventCanChangeHeader;
FOnChangeViewStyle: TmxEventChangeViewStyle;
FOnDrawHeaderButtons: TmxEventDrawHeaderButtons;
FOnAfterDrawHeaderButtons: TmxEventDrawHeaderButtons;
FOnHide: TNotifyEvent;
FOnShow: TNotifyEvent;
FOnDrawCloseButton: TmxEventDrawButton;
FOnAfterChangeStyle: TmxEventAfterChangeStyle;
Procedure WMTimer( Var Message: TWMTimer ); Message WM_TIMER;
Procedure WMLButtonDown( Var Message: TWMLButtonDown ); Message WM_LBUTTONDOWN;
Procedure WMLButtonUp( Var Message: TWMLButtonUp ); Message WM_LBUTTONUP;
Procedure WMNCDestroy( Var Message: TWMNCDestroy ); Message WM_NCDESTROY;
Procedure WMSize( Var Message: TWMSize ); Message WM_SIZE;
Procedure CMDesignHitTest( Var Msg: TCMDesignHitTest ); Message CM_DESIGNHITTEST;
Procedure WMSetFocus( Var Message: TWMSetFocus ); Message WM_SETFOCUS;
Procedure WMKillFocus( Var Message: TWMSetFocus ); Message WM_KILLFOCUS;
Procedure CMBorderChanged( Var Message: TMessage ); Message CM_BORDERCHANGED;
Procedure CMCtl3DChanged( Var Message: TMessage ); Message CM_CTL3DCHANGED;
Procedure CMSysColorChange( Var Message: TMessage ); Messag
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -