📄 jvnavigationpane.pas
字号:
property ParentColor default False;
property Caption: TCaption read GetCaption write SetCaption;
{$IFDEF VCL}
property DragCursor;
property DragKind;
property OnStartDock;
property OnDockDrop;
property OnDockOver;
property OnUnDock;
property OnEndDock;
{$ENDIF VCL}
property DragMode;
property Iconic: Boolean read GetIconic write SetIconic default False;
property ImageIndex: TImageIndex read GetImageIndex write SetImageIndex default -1;
property Hint: string read GetHint write SetHint;
property OnClick: TNotifyEvent read FOnClick write FOnClick;
property OnContextPopup;
property OnDragDrop;
property OnDragOver;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnKeyDown;
property OnKeyPress;
property OnKeyUp;
property OnMouseDown;
property OnMouseEnter;
property OnMouseLeave;
property OnMouseMove;
property OnMouseUp;
property OnMouseWheel;
property OnMouseWheelDown;
property OnMouseWheelUp;
property OnResize;
property OnShow;
property OnStartDrag;
end;
TJvCustomNavPaneToolPanel = class;
TJvNavPaneToolButton = class(TCollectionItem)
private
FRealButton: TJvNavPanelToolButton;
procedure SetImageIndex(const Value: TImageIndex);
procedure SetEnabled(const Value: Boolean);
procedure SetAction(const Value: TBasicAction);
procedure SetHint(const Value: string);
function GetAction: TBasicAction;
function GetEnabled: Boolean;
function GetHint: string;
function GetImageIndex: TImageIndex;
public
procedure Assign(Source: TPersistent); override;
constructor Create(Collection: TCollection); override;
destructor Destroy; override;
property Button: TJvNavPanelToolButton read FRealButton;
published
property Action: TBasicAction read GetAction write SetAction;
property Hint: string read GetHint write SetHint;
property ImageIndex: TImageIndex read GetImageIndex write SetImageIndex default -1;
property Enabled: Boolean read GetEnabled write SetEnabled default True;
end;
TJvNavPaneToolButtons = class(TOwnedCollection)
private
FPanel: TJvCustomNavPaneToolPanel;
function GetItem(Index: Integer): TJvNavPaneToolButton;
procedure SetItem(Index: Integer; const Value: TJvNavPaneToolButton);
protected
procedure Update(Item: TCollectionItem); override;
public
constructor Create(AOwner: TJvCustomNavPaneToolPanel);
function Add: TJvNavPaneToolButton;
property Items[Index: Integer]: TJvNavPaneToolButton read GetItem write SetItem; default;
end;
TJvNavPaneToolButtonClick = procedure(Sender: TObject; Index: Integer) of object;
TJvToolPanelHitTestInfo = (phtNowhere, phtAbove, phtBelow, phtToLeft, phtToRight, phtGrabber, phtHeader, phtClient);
TJvToolPanelHitTestInfos = set of TJvToolPanelHitTestInfo;
TJvCustomNavPaneToolPanel = class(TJvCustomControl)
private
FStyleLink: TJvNavStyleLink;
FChangeLink: TChangeLink;
FStyleManager: TJvNavPaneStyleManager;
FButtonWidth: Integer;
FHeaderHeight: Integer;
FEdgeRounding: Integer;
FButtonHeight: Integer;
FImages: TCustomImageList;
FButtons: TJvNavPaneToolButtons;
FOnButtonClick: TJvNavPaneToolButtonClick;
FDropDown: TJvNavPanelToolButton;
FCloseButton: TJvNavPanelToolButton;
FOnClose: TNotifyEvent;
FShowGrabber: Boolean;
FOnDropDownMenu: TContextPopupEvent;
FParentStyleManager: Boolean;
FBackground: TJvNavPaneBackgroundImage;
FColors: TJvNavPanelColors;
FHeaderVisible: Boolean;
procedure DoStyleChange(Sender: TObject);
procedure DoImagesChange(Sender: TObject);
procedure ButtonsChanged;
procedure SetStyleManager(const Value: TJvNavPaneStyleManager);
procedure SetButtonHeight(const Value: Integer);
procedure SetButtonWidth(const Value: Integer);
procedure SetEdgeRounding(const Value: Integer);
procedure SetHeaderHeight(const Value: Integer);
procedure SetImages(const Value: TCustomImageList);
procedure SetButtons(const Value: TJvNavPaneToolButtons);
procedure InternalButtonClick(Sender: TObject);
function GetCloseButton: Boolean;
function GetDropDownMenu: TPopupMenu;
procedure SetCloseButton(const Value: Boolean);
procedure SetDropDownMenu(const Value: TPopupMenu);
procedure DoCloseClick(Sender: TObject);
procedure SetShowGrabber(const Value: Boolean);
procedure ParentStyleManagerChanged(var Msg: TMsgStyleManagerChange); message CM_PARENTSTYLEMANAGERCHANGED;
procedure ParentStyleManagerChange(var Msg: TMessage); message CM_PARENTSTYLEMANAGERCHANGE;
procedure SetParentStyleManager(const Value: Boolean);
function GetDrawPartialMenuFrame: Boolean;
procedure SetDrawPartialMenuFrame(const Value: Boolean);
procedure SetBackground(const Value: TJvNavPaneBackgroundImage);
procedure SetColors(const Value: TJvNavPanelColors);
procedure SetHeaderVisible(const Value: Boolean);
function IsColorsStored: Boolean;
{$IFDEF VCL}
procedure CMControlChange(var Msg: TMessage); message CM_CONTROLCHANGE;
procedure WMEraseBkgnd(var Msg: TWMEraseBkgnd); message WM_ERASEBKGND;
procedure WMNCPaint(var Msg: TWMNCPaint); message WM_NCPAINT;
{$ENDIF VCL}
procedure AlignButtons;
protected
procedure Paint; override;
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
procedure TextChanged; override;
procedure FontChanged; override;
procedure DoDropDownMenu(Sender: TObject; MousePos: TPoint; var Handled: Boolean);
{$IFDEF VisualCLX}
procedure Loaded; override;
procedure ControlsListChanged(Control: TControl; Inserting: Boolean); override;
function WidgetFlags: Integer; override;
{$ENDIF VisualCLX}
property EdgeRounding: Integer read FEdgeRounding write SetEdgeRounding default 9;
procedure AdjustClientRect(var Rect: TRect); override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
function GetHitTestInfoAt(X, Y: Integer): TJvToolPanelHitTestInfos;
procedure SetBounds(ALeft: Integer; ATop: Integer; AWidth: Integer; AHeight: Integer); override;
protected
property Background: TJvNavPaneBackgroundImage read FBackground write SetBackground;
property DrawPartialMenuFrame: Boolean read GetDrawPartialMenuFrame write SetDrawPartialMenuFrame default False;
property Buttons: TJvNavPaneToolButtons read FButtons write SetButtons;
property ButtonWidth: Integer read FButtonWidth write SetButtonWidth default 25;
property ButtonHeight: Integer read FButtonHeight write SetButtonHeight default 22;
property CloseButton: Boolean read GetCloseButton write SetCloseButton default True;
property Colors: TJvNavPanelColors read FColors write SetColors stored IsColorsStored;
property DropDownMenu: TPopupMenu read GetDropDownMenu write SetDropDownMenu;
property HeaderHeight: Integer read FHeaderHeight write SetHeaderHeight default 29;
property HeaderVisible: Boolean read FHeaderVisible write SetHeaderVisible default True;
property Images: TCustomImageList read FImages write SetImages;
// property ParentColor default False;
property ShowGrabber: Boolean read FShowGrabber write SetShowGrabber default True;
property StyleManager: TJvNavPaneStyleManager read FStyleManager write SetStyleManager;
property ParentStyleManager: Boolean read FParentStyleManager write SetParentStyleManager default True;
property OnButtonClick: TJvNavPaneToolButtonClick read FOnButtonClick write FOnButtonClick;
property OnClose: TNotifyEvent read FOnClose write FOnClose;
property OnDropDownMenu: TContextPopupEvent read FOnDropDownMenu write FOnDropDownMenu;
end;
TJvNavPaneToolPanel = class(TJvCustomNavPaneToolPanel)
published
property Align;
property Anchors;
property Caption;
property Constraints;
{$IFDEF VCL}
property BorderWidth;
property DragCursor;
property DragKind;
{$ENDIF VCL}
property DragMode;
property Background;
property DrawPartialMenuFrame;
property Buttons;
property ButtonWidth;
property ButtonHeight;
property CloseButton;
property Colors;
property DropDownMenu;
property HeaderHeight;
property HeaderVisible;
property Images;
property ShowGrabber;
property StyleManager;
// (p3) must be published after StyleManager
property ParentStyleManager;
property OnButtonClick;
property OnClose;
property OnDropDownMenu;
property Enabled;
property Font;
property ParentColor;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property Visible;
property Width default 185;
property Height default 41;
{$IFDEF VCL}
property OnEndDock;
property OnStartDock;
property OnUnDock;
{$ENDIF VCL}
property OnClick;
property OnContextPopup;
property OnDragDrop;
property OnDragOver;
property OnEndDrag;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnStartDrag;
end;
TJvCustomNavigationPane = class(TJvCustomPageList)
private
FIconPanel: TJvIconPanel;
FSplitter: TJvOutlookSplitter;
FLargeImages: TCustomImageList;
FSmallImages: TCustomImageList;
FColors: TJvNavPanelColors;
FNavPanelFont: TFont;
FResizable: Boolean;
FButtonWidth: Integer;
FButtonHeight: Integer;
FStyleManager: TJvNavPaneStyleManager;
FStyleLink: TJvNavStyleLink;
FNavPanelHotTrackFont: TFont;
FNavPanelHotTrackFontOptions: TJvTrackFontOptions;
FAutoHeaders: Boolean;
FWordWrap: Boolean;
FAlignment: TAlignment;
FOnDropDownMenu: TContextPopupEvent;
FParentStyleManager: Boolean;
FBackground: TJvNavPaneBackgroundImage;
function GetDropDownMenu: TPopupMenu;
function GetSmallImages: TCustomImageList;
procedure SetDropDownMenu(const Value: TPopupMenu);
procedure SetLargeImages(const Value: TCustomImageList);
procedure SetSmallImages(const Value: TCustomImageList);
function GetMaximizedCount: Integer;
procedure SetMaximizedCount(Value: Integer);
procedure HidePanel(Index: Integer);
procedure ShowPanel(Index: Integer);
procedure SetColors(const Value: TJvNavPanelColors);
procedure SetResizable(const Value: Boolean);
function GetNavPage(Index: Integer): TJvNavPanelPage;
procedure DoSplitterCanResize(Sender: TObject; var NewSize: Integer; var Accept: Boolean);
procedure DoColorsChange(Sender: TObject);
procedure SetNavPanelFont(const Value: TFont);
procedure SetNavPanelHotTrackFont(const Value: TFont);
procedure SetNavPanelHotTrackFontOptions(const Value: TJvTrackFontOptions);
procedure DoNavPanelFontChange(Sender: TObject);
procedure SetButtonHeight(const Value: Integer);
procedure SetButtonWidth(const Value: Integer);
procedure SetSplitterHeight(const Value: Integer);
function GetSplitterHeight: Integer;
procedure SetStyleManager(const Value: TJvNavPaneStyleManager);
procedure DoStyleChange(Sender: TObject);
procedure SetAutoHeaders(const Value: Boolean);
procedure SetAlignment(const Value: TAlignment);
procedure SetWordWrap(const Value: Boolean);
procedure ParentStyleManagerChanged(var Msg: TMsgStyleManagerChange); message CM_PARENTSTYLEMANAGERCHANGED;
procedure ParentStyleManagerChange(var Msg: TMessage); message CM_PARENTSTYLEMANAGERCHANGE;
{$IFDEF VCL}
procedure CMControlChange(var Msg: TMessage); message CM_CONTROLCHANGE;
procedure WMNCPaint(var Msg: TWMNCPaint); message WM_NCPAINT;
procedure WMEraseBkgnd(var Msg: TWMEraseBkgnd); message WM_ERASEBKGND;
{$ENDIF VCL}
procedure SetParentStyleManager(const Value: Boolean);
procedure SetBackground(const Value: TJvNavPaneBackgroundImage);
function GetSplitterClick: TNotifyEvent;
function GetSplitterDblClick: TNotifyEvent;
function GetSplitterMouseDown: TMouseEvent;
function GetSplitterMouseEnter: TNotifyEvent;
function GetSplitterMouseLeave: TNotifyEvent;
function GetSplitterMouseMove: TMouseMoveEvent;
function GetSplitterMouseUp: TMouseEvent;
procedure SetSplitterClick(const Value: TNotifyEvent);
procedure SetSplitterDblClick(const Value: TNotifyEvent);
procedure SetSplitterMouseDown(const Value: TMouseEvent);
procedure SetSplitterMouseEnter(const Value: TNotifyEvent);
procedure SetSplitterMouseLeave(const Value: TNotifyEvent);
procedure SetSplitterMouseMove(const Value: TMouseMoveEvent);
procedure SetSplitterMouseUp(const Value: TMouseEvent);
function GetSplitterCanResize: TCanResizeEvent;
function GetSplitterMoved: TNotifyEvent;
function GetSplitterPaint: TNotifyEvent;
procedure SetSplitterCanResize(const Value: TCanResizeEvent);
procedure SetSplitterMoved(const Value: TNotifyEvent);
procedure SetSplitterPaint(const Value: TNotifyEvent);
protected
function IsColorsStored: Boolean;
function IsNavPanelFontStored: Boolean;
function IsNavPanelFontHotTrackStored: Boolean;
function IsNavPanelHotTrackFontOptionsStored: Boolean;
procedure UpdatePages; virtual;
{$IFDEF VisualCLX}
procedure ControlsListChanged(Control: TControl; Inserting: Boolean); override;
function WidgetFlags: Integer; override;
procedure Paint; override;
{$ENDIF VisualCLX}
procedure SetActivePage(Page: TJvCustomPage); override;
procedure InsertPage(APage: TJvCustomPage); override;
procedure RemovePage(APage: TJvCustomPage); override;
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
procedure Loaded; override;
procedure DoDropDownMenu(Sender: TObject; MousePos: TPoint; var Handled: Boolean);
function InternalGetPageClass: TJvCustomPageClass; override;
property NavPages[Index: Integer]: TJvNavPanelPage read GetNavPage;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
function HidePage(Page: TJvCustomPage): TJvCustomPage; override;
function ShowPage(Page: TJvCustomPage; PageIndex: Integer = -1): TJvCustomPage; override;
procedure UpdatePositions;
protected
{$IFDEF VCL}
property BorderWidth default 1;
{$ENDIF VCL}
property AutoHeaders: Boolean read FAutoHeaders write SetAutoHeaders default False;
property Alignment: TAlignment read FAlignment write SetAlignment default taLeftJustify;
property Background: TJvNavPaneBackgroundImage read FBackground write SetBackground;
property ButtonHeight: Integer read FButtonHeight write SetButtonHeight default 28;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -