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

📄 mxoutlookbar.pas

📁 Delphi控件源码 Delphi控件源码
💻 PAS
📖 第 1 页 / 共 5 页
字号:
     TmxOutlookBarHeader = Class( TCustomControl )
     Private

          FBitmap: TBitmap;
          FImageIndex: TImageIndex;
          FBitmapCopy: TBitmapCopy;
          FMouseInHeader: Boolean;
          FButtonDown: Boolean;
          FGradient: TGradient;
          FHeaderSettings: THeaderSettings;
          FFirstVisibleButton: Integer;

          FAutoSort: Boolean;
          FScrollUp: TScrollButton;
          FScrollDown: TScrollButton;

          FFirstButtonTop: Integer;

          FOnChange: TNotifyEvent;
          FOnCheckScroll: TEventCheckScroll;
          FOnScroll: TNotifyEvent;
          FOnHide: TNotifyEvent;
          FOnShow: TNotifyEvent;
          FOnCanSort: TEventCanSortButtons;
          FOnSort: TNotifyEvent;

          Procedure DoSettingsChange( Sender: TObject );

          Procedure WMSetFocus( Var Message: TWMSetFocus ); Message WM_SETFOCUS;
          Procedure WMKillFocus( Var Message: TWMSetFocus ); Message WM_KILLFOCUS;
          Function CheckChild( Child: TControl ): Boolean;
          Procedure CMDialogChar( Var Message: TCMDialogChar ); Message cm_DialogChar;
          Procedure CMVisibleChanged( Var Message: TMessage ); Message CM_VISIBLECHANGED;
          Procedure CMColorChanged( Var Message: TMessage ); Message CM_COLORCHANGED;
          Procedure CMMouseEnter( Var Message: TMessage ); Message CM_MOUSEENTER;
          Procedure CMMouseLeave( Var Message: TMessage ); Message CM_MOUSELEAVE;

          Function GetHeaderIndex: Integer;
          Function GetParentBar: TmxOutlookBar;
          Function GetHeaderHeight: Integer;

          Procedure SetBitmap( Const Value: TBitmap );
          Procedure SetHeaderIndex( Value: Integer );
          Procedure SetImageIndex( Value: TImageIndex );
          Procedure SetBitmapCopy( Value: TBitmapCopy );
          Procedure SetAutoSort( Value: Boolean );
          Procedure SetFirstButtonTop( Value: Integer );
          Procedure PaintTileBackground( Rect: TRect );

          Procedure OnHeaderResized( Sender: TObject );

          Function GetChild( Child: TControl ): TOutlookButton;
          Function GetChildByIndex( Index: Integer ): TOutlookButton;
          Function CreateNewOutlookButton: TOutlookButton;

     Protected

{$IFDEF DELPHI4_UP}
          Procedure AdjustClientRect( Var Rect: TRect ); Override;
          Procedure DragOver( Source: TObject; X, Y: Integer; State: TDragState; Var Accept: Boolean ); Override;
{$ENDIF}
          Procedure KeyDown( Var Key: Word; Shift: TShiftState ); Override;
          Procedure MouseMove( Shift: TShiftState; X, Y: Integer ); Override;
          Procedure MouseDown( Button: TMouseButton; Shift: TShiftState; X, Y: Integer ); Override;
          Procedure MouseUp( Button: TMouseButton; Shift: TShiftState; X, Y: Integer ); Override;
          Procedure Notification( AComponent: TComponent; Operation: TOperation ); Override;
          Procedure CMDesignHitTest( Var Msg: TCMDesignHitTest ); Message CM_DESIGNHITTEST;
          Procedure CMTextChanged( Var Msg: TMessage ); Message CM_TEXTCHANGED;
          Procedure CMFontChanged( Var Msg: TMessage ); Message CM_FONTCHANGED;
          Procedure Paint; Override;
          Procedure Change; Virtual;
          Procedure InternalSortButtons;
          Procedure AutoSortButtons;

     Public

          Constructor Create( AOwner: TComponent ); Override;
          Destructor Destroy; Override;

          Function GetButtonCount: Integer;
          Function GetButtonByIndex( Index: Integer ): TOutlookButton;

          Function CreateButton( Caption: String ): TOutlookButton;
          Procedure AddButton( OutlookButton: TOutlookButton );
          Procedure DeleteButton( Index: Integer );

          Procedure SortButtons;

          Function IsUpButtonNeed: Boolean;
          Function IsDownButtonNeed: Boolean;

{$IFDEF DELPHI4_UP}
          Function CanFocus: Boolean; Override;
{$ENDIF}

     Published

          Property AutoSort: Boolean Read FAutoSort Write SetAutoSort;
          Property Bitmap: TBitmap Read FBitmap Write SetBitmap;
          Property BitmapCopy: TBitmapCopy Read FBitmapCopy Write SetBitmapCopy Default bcSrcCopy;
          Property Caption;
          Property Color;
          Property FirstButtonTop: Integer Read FFirstButtonTop Write SetFirstButtonTop;
          Property Gradient: TGradient Read FGradient Write FGradient;
          Property HeaderSettings: THeaderSettings Read FHeaderSettings Write FHeaderSettings;
          Property HeaderIndex: Integer Read GetHeaderIndex Write SetHeaderIndex;
          Property ImageIndex: TImageIndex Read FImageIndex Write SetImageIndex Default -1;
          Property PopupMenu;
          Property TabStop;
          Property Visible;

          Property OnCanSort: TEventCanSortButtons Read FOnCanSort Write FOnCanSort;
          Property OnChange: TNotifyEvent Read FOnChange Write FOnChange;
          Property OnCheckScroll: TEventCheckScroll Read FOnCheckScroll Write FOnCheckScroll;
          Property OnEnter;
          Property OnClick;
          Property OnDblClick;
          Property OnExit;
          Property OnKeyDown;
          Property OnKeyPress;
          Property OnKeyUp;
          Property OnMouseDown;
          Property OnMouseMove;
          Property OnMouseUp;
{$IFDEF DELPHI4_UP}
          Property OnMouseWheel;
          Property OnMouseWheelDown;
          Property OnMouseWheelUp;
          Property OnResize;
{$ENDIF}
          Property OnScroll: TNotifyEvent Read FOnScroll Write FOnScroll;
          Property OnSort: TNotifyEvent Read FOnSort Write FOnSort;
          Property OnHide: TNotifyEvent Read FOnHide Write FOnHide;
          Property OnShow: TNotifyEvent Read FOnShow Write FOnShow;
     End;

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

     TmxOutlookBar = Class( TCustomControl )
     Private

          FBevelInner: TPanelBevel;
          FBevelOuter: TPanelBevel;
          FBevelWidth: TBevelWidth;
          FActiveHeader: TmxOutlookBarHeader;
          FMouseInControl: TmxOutlookBarHeader;
          FBorderStyle: TBorderStyle;
          FCommonStyle: Boolean;
          FFlat: Boolean;
          FImages: TCustomImageList;
          FImageChangeLink: TChangeLink;
          FButtonDown: Boolean;
          FScrolling: Boolean; // ***  Internal use only ***
          FHeaderHeight: Integer;
          FVersion: Integer;

{$IFDEF HEADERSCROLL}
          FScrollSpeed: Integer;
{$ENDIF}

          FOnChange: TEventHeaderChange;
          FOnCanChange: TEventCanChangeHeader;

          FHeaderSettings: THeaderSettings;

          Procedure DoSettingsChange( Sender: TObject );
          Procedure BarResized( Sender: TObject );
          Procedure CMMouseLeave( Var Message: TMessage ); Message CM_MOUSELEAVE;

{$IFDEF DELPHI4_UP}
          Procedure CMBorderChanged( Var Message: TMessage ); Message CM_BORDERCHANGED;
{$ENDIF}
          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;

          Function CheckChild( Child: TControl ): Boolean;
          Function GetChild( Child: TControl ): TmxOutlookBarHeader;
          Function GetChildByIndex( Index: Integer ): TmxOutlookBarHeader;
          Function GetHeaderRect( Index: Integer ): TRect;
          Function GetUnVisibleHeaderCountToIndex( Index: Integer ): Integer;
          Function GetUnVisibleHeaderCountAfterIndex( Index: Integer ): Integer;

          Procedure ImageListChange( Sender: TObject );

          Procedure SetBorderStyle( Value: TBorderStyle );
          Procedure SetCommonStyle( Value: Boolean );
          Procedure SetFlat( Value: Boolean );
          Procedure SetHeaderHeight( Value: Integer );
          Procedure SetHeaderSizes;
          Procedure SetImages( Value: TCustomImageList );
{$IFDEF HEADERSCROLL}
          Procedure SetScrollSpeed( Value: integer );
{$ENDIF}
          Function CreateNewOutlookHeader: TmxOutlookBarHeader;

          Procedure SetVersion( Value: String );
          Function GetVersion: String;

     Protected

          Procedure WMGetDlgCode( Var Msg: TWMGetDlgCode ); Message WM_GETDLGCODE;
          Procedure CMFontChanged( Var Msg: TMessage ); Message CM_FONTCHANGED;
{$IFDEF DELPHI4_UP}
          Procedure AdjustClientRect( Var Rect: TRect ); Override;
{$ENDIF}
          Procedure CreateParams( Var Params: TCreateParams ); Override;
          Procedure ChangeHeader( OutlookSideBarHeader: TmxOutlookBarHeader );
          Procedure Paint; Override;
          Procedure SetActiveHeader( Const Value: TmxOutlookBarHeader );
          Procedure Notification( AComponent: TComponent; Operation: TOperation ); Override;
          Procedure KeyDown( Var Key: Word; Shift: TShiftState ); Override;
          Procedure SetBevelInner( Value: TPanelBevel );
          Procedure SetBevelOuter( Value: TPanelBevel );
          Procedure SetBevelWidth( Value: TBevelWidth );

          Property MouseInControl: TmxOutlookBarHeader Read FMouseInControl Write FMouseInControl;

     Public

          Constructor Create( AOwner: TComponent ); Override;
          Destructor Destroy; Override;

          Function GetHeaderCount: Integer;
          Function GetHeaderIndex: Integer;

          Function GetPrevHeader( OutlookSideBarHeader: TmxOutlookBarHeader ): TmxOutlookBarHeader;
          Function GetNextHeader( OutlookSideBarHeader: TmxOutlookBarHeader ): TmxOutlookBarHeader;

          Procedure CreateHeader( Const Caption: String );
          Procedure AddHeader( OutlookSideBarHeader: TmxOutlookBarHeader );
          Procedure DeleteHeader( Index: Integer );

          Function GetHeaderByIndex( Index: Integer ): TmxOutlookBarHeader; 

{$IFDEF DELPHI4_UP}
          Function CanFocus: Boolean; Override;
{$ENDIF}

     Published

          Property ActiveHeader: TmxOutlookBarHeader Read FActiveHeader Write SetActiveHeader;
{$IFDEF DELPHI4_UP}
          Property Anchors;
          Property Caption; // ** 1.2
          Property Font;
{$ENDIF}
          Property Align;
          Property BevelInner: TPanelBevel Read FBevelInner Write SetBevelInner Default bvNone;
          Property BevelOuter: TPanelBevel Read FBevelOuter Write SetBevelOuter Default bvRaised;
          Property BevelWidth: TBevelWidth Read FBevelWidth Write SetBevelWidth Default 1;
          Property BorderStyle: TBorderStyle Read FBorderStyle Write SetBorderStyle Default bsNone;
{$IFDEF DELPHI4_UP}
          Property BorderWidth;
{$ENDIF}
          Property ButtonDown: Boolean Read FButtonDown Write FButtonDown;
{$IFDEF DELPHI4_UP}
          Property Constraints;
{$ENDIF}
          Property Color;
          Property CommonStyle: Boolean Read FCommonStyle Write SetCommonStyle;
          Property Ctl3D;
          Property Enabled;
          Property Flat: Boolean Read FFlat Write SetFlat Default False;
          Property HeaderHeight: Integer Read FHeaderHeight Write SetHeaderHeight;
          Property HeaderSettings: THeaderSettings Read FHeaderSettings Write FHeaderSettings;
          Property Images: TCustomImageList Read FImages Write SetImages;
          Property PopupMenu;

{$IFDEF HEADERSCROLL}
          Property ScrollSpeed: Integer Read FScrollSpeed Write SetScrollSpeed;
{$ENDIF}

          Property TabStop;
          Property TabOrder;
          Property Version: String Read GetVersion Write SetVersion;
          Property Visible;

          Property OnChange: TEventHeaderChange Read FOnChange Write FOnChange;
          Property OnCanChange: TEventCanChangeHeader Read FOnCanChange Write FOnCanChange;
          Property OnClick;
          Property OnDblClick;

{$IFDEF DELPHI4_UP} // ** v1.2
          Property DockSite;
          Property DragCursor;
          Property DragKind;
          Property DragMode;
          Property OnDockDrop;
          Property OnDragDrop;
          Property OnDragOver;
          Property OnEndDock;
          Property OnEndDrag;
          Property OnGetSiteInfo;
          Property OnStartDock;
          Property OnUndock;
{$ENDIF}

{$IFDEF DELPHI4_UP}
          Property OnCanResize;
{$ENDIF}
          Property OnEnter;
          Property OnExit;
          Property OnKeyDown;
          Property OnKeyPress;
          Property OnKeyUp;
          Property OnMouseDown;
          Property OnMouseMove;
          Property OnMouseUp;
{$IFDEF DELPHI4_UP}
          Property OnMouseWheel;
          Property OnMouseWheelDown;
          Property OnMouseWheelUp;
          Property OnResize;
{$ENDIF}
     End;

Implementation

Const
     Alignments: Array[ TAlignment ] Of Longint = ( DT_LEFT, DT_RIGHT, DT_CENTER );

Type
     TWinControlClass = Class( TWinControl );

// *************************************************************************************
// *************************************************************************************
// *************************************************************************************
// ** TOutlookButton.Create, 4/12/01 3:42:02 PM
// *************************************************************************************
// *************************************************************************************
// *************************************************************************************

Constructor TOutlookButton.Create( AOwner: TComponent );
Begin
     Inherited Create( AOwner );
     ControlStyle := [ csCaptureMouse, csClickEvents, csDoubleClicks, csOpaque ];
     FButtonDown := FALSE;
     FMouseInButton := FALSE;
     FButtonStyle := bsLarge;
     Height := 60;

⌨️ 快捷键说明

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