⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mxoutlookbarpro.pas

📁 XP风格的outlook工具栏
💻 PAS
📖 第 1 页 / 共 5 页
字号:
    Procedure SetButtonStyle( AValue: TmxButtonStyle );
    Procedure SetButtonView( AValue: TmxButtonView );
    Procedure SetAutoSize( AValue: Boolean );
    Procedure SetColor( AValue: TColor );
    Procedure SetFont( AValue: TFont );
    Procedure SetHighlightFont( AValue: TFont );
    Procedure SetHeight( AValue: Word );
    Procedure SetWidth( AValue: Word );
    Procedure SetOptions( AValue: TmxButtonOptions );
    Procedure SetWordWrap( AValue: Boolean );
    Procedure SetAlignment( AValue: TAlignment );
    Procedure SetBiDiMode( AValue: TBiDiMode ); Virtual;
    Procedure SetShowAccelChar( AValue: Boolean );
    Procedure SetParentBiDiMode( AValue: Boolean ); Virtual;
    Procedure SetButtonKind( AValue: TmxButtonKind );
    Procedure SetMargin( AValue: Integer );
    Procedure SetCheckState( AValue: TCheckBoxState );
    Procedure SetChecked( AValue: Boolean );

    Function GetButtonImageList: TCustomImageList;
    Function GetSettings: TmxBarSettings;
    Function GetStyle: TmxButtonStyle;
    Function GetView: TmxButtonView;
    Procedure CalculateButtonRect( Var ButtonRect: TRect; Var ImageRect: TRect; Var FocusRect: TRect; Var LabelRect: TRect );
    Function CalculateImagePositon( ButtonRect: TRect ): TRect;
    Function CalculateSmallImagePositon( ButtonRect: TRect ): TRect;

    Function GetFont( FocusEnabled: Boolean ): TFont;
    Function IsBiDiModeStored: Boolean;
    Procedure DoClick; Virtual;
    Function GetHeaderIndex: Integer;
    Function GetHeader: TmxHeader;
    Function IsTheFirstButton: Boolean;
    Function IsTheLastButton: Boolean;

  Protected

    Property ActionLink: TControlActionLink Read FActionLink Write FActionLink;

    Function GetDisplayName: String; Override;
    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;

// ************************************************************************
// ************************************************************************
// ************************************************************************

  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;
    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 ); Message CM_SYSCOLORCHANGE;
    Procedure CMColorChanged( Var Message: TMessage ); Message CM_COLORCHANGED;
    Procedure CMEnabledChanged( Var Message: TMessage ); Message CM_ENABLEDCHANGED;
    Procedure CMFontChanged( Var Msg: TMessage ); Message CM_FONTCHANGED;
    Procedure CMTextChanged( Var Msg: TMessage ); Message CM_TEXTCHANGED;
    Procedure CMVisibleChanged( Var Message: TMessage ); Message CM_VISIBLECHANGED;
    Procedure CMDialogChar( Var Message: TCMDialogChar ); Message cm_DialogChar;
    Procedure CNNotify( Var Message: TWMNotify ); Message CN_NOTIFY;
    Procedure CMHintShow( Var Message: TMessage ); Message CM_HINTSHOW;
    Procedure CMDrag( Var Message: TCMDrag ); Message CM_DRAG;
    Procedure CMMouseWheel( Var Message: TCMMouseWheel ); Message CM_MOUSEWHEEL;
    Procedure WMContextMenu( Var Message: TWMContextMenu ); Message WM_CONTEXTMENU;

    Procedure SetBorderStyle( AValue: TBorderStyle );
    Procedure SetBevelInner( AValue: TPanelBevel );
    Procedure SetBevelOuter( AValue: TPanelBevel );
    Procedure SetBevelWidth( AValue: TBevelWidth );
    Procedure SetScrollView( AValue: TmxScrollView );
    Function GetHeaderCount: Integer;
    Function GetVisibleHeaderCount: Integer;
    Function GetEnabledHeaderCount: Integer;
    Procedure SetCommonStyle( AValue: Boolean );
    Procedure SetViewStyle( AValue: TmxViewStyle );
    Procedure SetFlat( AValue: Boolean );
    Procedure SetHeaderScrollType( AValue: TmxHeaderScrollType );
    Procedure SetHeaderScrollValue( AValue: Byte );
    Procedure SetHeaderScrollAcceleration( AValue: Byte );
    Procedure SetVersion( AValue: String );
    Function GetVersion: String;
    Function GetNextVisibleIndex( ActiveIndex: Integer ): Integer;
    Function GetActiveHeaderIndex: Integer;
    Procedure CheckImages( AImages: TmxButtonImages; AComponent: TComponent; Operation: TOperation );
    Procedure CheckHeaderImages( AImages: TmxHeaderImages; AComponent: TComponent; Operation: TOperation );
    Procedure PropertyChanged( Sender: TObject );
    Procedure ReadAlign( Reader: TReader );
    Procedure WriteAlign( Writer: TWriter );
    Procedure ReadIndex( Reader: TReader );
    Procedure WriteIndex( Writer: TWriter );
    Function GetOnDrawCloseHeader: TmxEventDrawHeader;
    Procedure SetOnDrawCloseHeader( AValue: TmxEventDrawHeader );
    Function GetOnAfterDrawCloseHeader: TmxEventDrawHeader;
    Procedure SetOnAfterDrawCloseHeader( AValue: TmxEventDrawHeader );
    Function GetOnClose: TNotifyEvent;
    Procedure SetOnClose( AValue: TNotifyEvent );
    Procedure SetExplorerMethod( AValue: TmxExplorerMethod );
    Procedure SetHeaders( AValue: TmxHeaders );
    Function GetHeaders: TmxHeaders;
    Function GetHeader( Index: Integer ): TmxHeader;
    Procedure SetOptions( AValue: TmxBarOptions );
    Procedure SetScrollChange( AValue: Word );
    Procedure DoScrollUp;
    Procedure DoScrollDown;
    Procedure SetActiveHeader( ANewHeader: TmxHeader );
    Procedure SetScrollBoxSize( AValue: Word );
    Procedure SetBorderWidth( AValue: TBorderWidth );
    Function GetBorderWidth: TBorderWidth;
    Procedure SetPreSet( AValue: TmxPreSet );
    Procedure SetEachHeaderSelection( AValue: Boolean );
    Function ProcessOLEData( Source: TmxOutlookBarPro; DataObject: IDataObject; TargetButton: TmxButton; HitMode: TmxHitPosition; Var Effect: Integer ): Boolean;
    Procedure SetAlertedButton( AButton: TmxButton );
    Procedure SetAlertInterval( AValue: Cardinal );

    Function GetDragging: Boolean;
    Function DoDragEnter( Const DataObject: IDataObject; KeyState: Integer; Pt: TPoint; Var Effect: Integer ): HResult; Virtual;
    Function DoDragOver( Source: TObject; KeyState: Integer; DragState: TDragState; Pt: TPoint; Var Effect: Integer ): HResult; Virtual;
    Function DoDragDrop( Const DataObject: IDataObject; KeyState: Integer; Pt: TPoint; Var Effect: Integer ): HResult; Virtual;
    Procedure DoDragging( P: TPoint );
    Procedure DoDragLeave; Virtual;
    Function SuggestDropEffect( Source: TObject; Shift: TShiftState; Pt: TPoint; AllowedEffects: Integer ): Integer; Virtual;
    Function GetHitTestInfoAt( X, Y: Integer; Var HitInfo: TmxHitPosition ): TmxButton;
    Procedure StopTimer( ID: Integer );
    Function InvalidateButton( Button: TmxButton ): TRect; Virtual;
    Procedure FinishButtonHeader( Stream: TStream; StartPos, EndPos: Integer );
    Procedure WriteButton( Stream: TStream; AButton: TmxButton ); Virtual;
    Procedure WriteButtonToStream( Stream: TStream; AButton: TmxButton );
    Function GetButtonAt( X, Y: Integer ): TmxButton;
    Function GetHeaderAt( X, Y: Integer ): TmxHeader;
    Function GetButtonExactlyAt( X, Y: Integer 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -