📄 jvdockvidvcstyle.pas
字号:
{-----------------------------------------------------------------------------
The contents of this file are subject to the Mozilla Public License
Version 1.1 (the "License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/MPL-1.1.html
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See the License for
the specific language governing rights and limitations under the License.
The Original Code is: JvDockVIDVCStyle.pas, released on 2003-12-31.
The Initial Developer of the Original Code is luxiaoban.
Portions created by luxiaoban are Copyright (C) 2002,2003 luxiaoban.
All Rights Reserved.
Contributor(s):
devedit
You may retrieve the latest version of this file at the Project JEDI's JVCL home page,
located at http://jvcl.sourceforge.net
Known Issues:
-----------------------------------------------------------------------------}
// $Id: JvDockVIDVCStyle.pas,v 1.19 2005/02/17 10:20:25 marquardt Exp $
unit JvDockVIDVCStyle;
{$I jvcl.inc}
interface
uses
{$IFDEF USEJVCL}
{$IFDEF UNITVERSIONING}
JclUnitVersioning,
{$ENDIF UNITVERSIONING}
{$ENDIF USEJVCL}
Windows, Messages, Classes, Controls, Graphics, ComCtrls, ImgList,
JvDockControlForm, JvDockSupportControl, JvDockTree, JvDockAdvTree;
const
VIDDefaultDockGrabbersSize = 18;
VIDDefaultDockSplitterWidth = 4;
HTEXPAND = 31;
type
TJvDockVIDVCConjoinServerOption = class(TJvDockBasicConjoinServerOption)
private
FTextEllipsis: Boolean;
FTextAlignment: TAlignment;
FInactiveTitleEndColor: TColor;
FInactiveTitleStartColor: TColor;
FActiveTitleEndColor: TColor;
FActiveTitleStartColor: TColor;
FSystemInfo: Boolean;
FActiveFont: TFont;
FInactiveFont: TFont;
procedure SetActiveTitleEndColor(const Value: TColor);
procedure SetActiveTitleStartColor(const Value: TColor);
procedure SetInactiveTitleEndColor(const Value: TColor);
procedure SetInactiveTitleStartColor(const Value: TColor);
procedure SetTextAlignment(const Value: TAlignment);
procedure SetTextEllipsis(const Value: Boolean);
procedure SetSystemInfo(const Value: Boolean);
procedure SetActiveFont(const Value: TFont);
procedure SetInactiveFont(const Value: TFont);
protected
procedure ResetDockControlOption; override;
procedure SetDefaultSystemCaptionInfo; virtual;
public
constructor Create(ADockStyle: TJvDockBasicStyle); override;
destructor Destroy; override;
procedure Assign(Source: TPersistent); override;
procedure SetActiveTitleEndColor_WithoutChangeSystemInfo(const Value: TColor);
procedure SetActiveTitleStartColor_WithoutChangeSystemInfo(const Value: TColor);
procedure SetInactiveTitleEndColor_WithoutChangeSystemInfo(const Value: TColor);
procedure SetInactiveTitleStartColor_WithoutChangeSystemInfo(const Value: TColor);
procedure SetTextAlignment_WithoutChangeSystemInfo(const Value: TAlignment);
procedure SetTextEllipsis_WithoutChangeSystemInfo(const Value: Boolean);
procedure SetActiveFont_WithoutChangeSystemInfo(const Value: TFont);
procedure SetInactiveFont_WithoutChangeSystemInfo(const Value: TFont);
published
property ActiveFont: TFont read FActiveFont write SetActiveFont;
property InactiveFont: TFont read FInactiveFont write SetInactiveFont;
property TextAlignment: TAlignment read FTextAlignment write SetTextAlignment;
property ActiveTitleStartColor: TColor read FActiveTitleStartColor write SetActiveTitleStartColor;
property ActiveTitleEndColor: TColor read FActiveTitleEndColor write SetActiveTitleEndColor;
property InactiveTitleStartColor: TColor read FInactiveTitleStartColor write SetInactiveTitleStartColor;
property InactiveTitleEndColor: TColor read FInactiveTitleEndColor write SetInactiveTitleEndColor;
property TextEllipsis: Boolean read FTextEllipsis write SetTextEllipsis;
property SystemInfo: Boolean read FSystemInfo write SetSystemInfo;
end;
TJvDockZoneSizeStyle = (zssMinimum, zssNormal, zssMaximum);
TJvDockVIDVCTabServerOption = class(TJvDockBasicTabServerOption)
private
FActiveFont: TFont;
FActiveSheetColor: TColor;
FHotTrackColor: TColor;
FInactiveFont: TFont;
FInactiveSheetColor: TColor;
FShowTabImages: Boolean;
function GetActiveFont: TFont;
function GetActiveSheetColor: TColor;
function GetHotTrackColor: TColor;
function GetInactiveFont: TFont;
function GetInactiveSheetColor: TColor;
function GetShowTabImages: Boolean;
procedure SetActiveFont(const Value: TFont);
procedure SetActiveSheetColor(const Value: TColor);
procedure SetHotTrackColor(const Value: TColor);
procedure SetInactiveFont(const Value: TFont);
procedure SetInactiveSheetColor(const Value: TColor);
procedure SetShowTabImages(const Value: Boolean);
protected
procedure ResetDockControlOption; override;
procedure ResetTabPageControl(APage: TJvDockTabPageControl); override;
public
constructor Create(ADockStyle: TJvDockBasicStyle); override;
destructor Destroy; override;
procedure Assign(Source: TPersistent); override;
procedure SetTabPosition(const Value: TTabPosition); override;
published
property ActiveSheetColor: TColor read GetActiveSheetColor write SetActiveSheetColor;
property InactiveSheetColor: TColor read GetInactiveSheetColor write SetInactiveSheetColor;
property ActiveFont: TFont read GetActiveFont write SetActiveFont;
property InactiveFont: TFont read GetInactiveFont write SetInactiveFont;
property HotTrackColor: TColor read GetHotTrackColor write SetHotTrackColor;
property ShowTabImages: Boolean read GetShowTabImages write SetShowTabImages;
end;
TJvDockSystemInfoChange = procedure(Value: Boolean) of object;
TJvDockVIDVCStyle = class(TJvDockAdvStyle)
private
FSystemInfoChange: TJvDockSystemInfoChange;
protected
function DockClientWindowProc(DockClient: TJvDockClient; var Msg: TMessage): Boolean; override;
procedure ParentFormWindowProc(var Msg: TMessage); override;
procedure FormDockDrop(DockClient: TJvDockClient;
Source: TJvDockDragDockObject; X, Y: Integer); override;
procedure FormGetSiteInfo(Source: TJvDockDragDockObject; DockClient: TJvDockClient;
Client: TControl; var InfluenceRect: TRect; MousePos: TPoint;
var CanDock: Boolean); override;
procedure FormDockOver(DockClient: TJvDockClient; Source: TJvDockDragDockObject; X, Y: Integer;
State: TDragState; var Accept: Boolean); override;
procedure FormStartDock(DockClient: TJvDockClient;
var Source: TJvDockDragDockObject); override;
procedure FormGetDockEdge(DockClient: TJvDockClient; Source: TJvDockDragDockObject;
MousePos: TPoint; var DropAlign: TAlign); override;
procedure CreateConjoinServerOption(var Option: TJvDockBasicConjoinServerOption); override;
procedure CreateTabServerOption(var Option: TJvDockBasicTabServerOption); override;
procedure AssignConjoinServerOption(APanel: TJvDockCustomPanel); override;
procedure AssignTabServerOption(APage: TJvDockTabPageControl); override;
procedure DoSystemInfoChange(Value: Boolean);
public
constructor Create(AOwner: TComponent); override;
{$IFNDEF USEJVCL}
function GetControlName: string; override;
{$ENDIF !USEJVCL}
procedure SetDockBaseControl(IsCreate: Boolean; DockBaseControl: TJvDockBaseControl); override;
published
property SystemInfoChange: TJvDockSystemInfoChange read FSystemInfoChange
write FSystemInfoChange;
property ConjoinServerOption;
property TabServerOption;
end;
TJvDockVIDVCSplitter = class(TJvDockSplitter)
protected
procedure Paint; override;
end;
TJvDockVIDVCPanel = class(TJvDockAdvPanel)
protected
procedure CustomGetSiteInfo(Source: TJvDockDragDockObject;
Client: TControl; var InfluenceRect: TRect; MousePos: TPoint;
var CanDock: Boolean); override;
procedure CustomStartDock(var Source: TJvDockDragDockObject); override;
procedure CustomDockDrop(Source: TJvDockDragDockObject; X, Y: Integer); override;
procedure CustomDockOver(Source: TJvDockDragDockObject; X, Y: Integer;
State: TDragState; var Accept: Boolean); override;
procedure CustomGetDockEdge(Source: TJvDockDragDockObject; MousePos: TPoint;
var DropAlign: TAlign); override;
function CreateDockManager: IDockManager; override;
public
procedure DockDrop(Source: TDragDockObject; X, Y: Integer); override;
procedure UpdateCaption(Exclude: TControl); override;
end;
TJvDockVIDVCConjoinPanel = class(TJvDockAdvConjoinPanel)
protected
procedure CustomGetSiteInfo(Source: TJvDockDragDockObject;
Client: TControl; var InfluenceRect: TRect; MousePos: TPoint;
var CanDock: Boolean); override;
procedure CustomDockOver(Source: TJvDockDragDockObject; X, Y: Integer;
State: TDragState; var Accept: Boolean); override;
procedure CustomGetDockEdge(Source: TJvDockDragDockObject; MousePos: TPoint; var DropAlign: TAlign); override;
function CustomUnDock(Source: TJvDockDragDockObject; NewTarget: TWinControl; Client: TControl): Boolean; override;
procedure CustomDockDrop(Source: TJvDockDragDockObject; X, Y: Integer); override;
function CreateDockManager: IDockManager; override;
public
procedure UpdateCaption(Exclude: TControl); override;
procedure DockDrop(Source: TDragDockObject; X, Y: Integer); override;
end;
TJvDockVIDVCZone = class(TJvDockAdvZone)
private
FExpandButtonDown: Boolean;
FZoneSizeStyle: TJvDockZoneSizeStyle;
procedure DoSetChildSizeStyle(ZoneSizeStyle: TJvDockZoneSizeStyle);
protected
function GetSplitterLimit(IsMin: Boolean): Integer; override;
public
property ExpandButtonDown: Boolean read FExpandButtonDown write FExpandButtonDown;
property ZoneSizeStyle: TJvDockZoneSizeStyle read FZoneSizeStyle write FZoneSizeStyle;
procedure Insert(DockSize: Integer; Hide: Boolean); override;
procedure Remove(DockSize: Integer; Hide: Boolean); override;
end;
TJvDockVIDVCTree = class(TJvDockAdvTree)
private
FDropOnZone: TJvDockZone;
FExpandBtnZone: TJvDockVIDVCZone;
FLockDropDockSizeCount: Integer;
FCaptionLeftOffset: Integer;
FCaptionRightOffset: Integer;
procedure LockDropDockSize;
procedure UnlockDropDockSize;
procedure SetCaptionLeftOffset(const Value: Integer);
procedure SetCaptionRightOffset(const Value: Integer);
protected
procedure DoLButtonUp(var Msg: TWMMouse;
var Zone: TJvDockZone; out HTFlag: Integer); override;
procedure ResetDockZoneSizeStyle(Parent: TJvDockZone;
ZoneSizeStyle: TJvDockZoneSizeStyle; Exclude: TJvDockZone);
function GetLeftGrabbersHTFlag(const MousePos: TPoint;
out HTFlag: Integer; Zone: TJvDockZone): TJvDockZone; override;
function GetTopGrabbersHTFlag(const MousePos: TPoint;
out HTFlag: Integer; Zone: TJvDockZone): TJvDockZone; override;
procedure DoMouseMove(var Msg: TWMMouse;
var Zone: TJvDockZone; out HTFlag: Integer); override;
function DoLButtonDown(var Msg: TWMMouse;
var Zone: TJvDockZone; out HTFlag: Integer): Boolean; override;
procedure InsertControlFromConjoinHost(Control: TControl;
InsertAt: TAlign; DropCtl: TControl); virtual;
procedure IgnoreZoneInfor(Stream: TMemoryStream); virtual;
// procedure AdjustDockRect(Control: TControl; var ARect: TRect); override;
procedure WindowProc(var Msg: TMessage); override;
procedure SplitterMouseUp; override;
procedure GetSiteInfo(Client: TControl;
var InfluenceRect: TRect; MousePos: TPoint; var CanDock: Boolean); override;
procedure InsertControl(Control: TControl; InsertAt: TAlign;
DropCtl: TControl); override;
procedure InsertSibling(NewZone, SiblingZone: TJvDockZone;
InsertLast, Update: Boolean); override;
procedure InsertNewParent(NewZone, SiblingZone: TJvDockZone;
ParentOrientation: TDockOrientation; InsertLast, Update: Boolean); override;
procedure DrawDockGrabber(Control: TControl; const ARect: TRect); override;
procedure DrawSplitterRect(const ARect: TRect); override;
procedure PaintDockGrabberRect(Canvas: TCanvas; Control: TControl;
const ARect: TRect); virtual;
procedure DrawCloseButton(Canvas: TCanvas; Zone: TJvDockZone;
Left, Top: Integer); virtual;
procedure ResetBounds(Force: Boolean); override;
procedure SetActiveControl(const Value: TControl); override;
procedure DrawDockSiteRect; override;
{ procedure PositionDockRect(Client, DropCtl: TControl; DropAlign: TAlign;
var DockRect: TRect); override;}
function GetDockEdge(DockRect: TRect; MousePos: TPoint;
var DropAlign: TAlign; Control: TControl): TControl; override;
procedure RemoveZone(Zone: TJvDockZone; Hide: Boolean = True); override;
procedure GetCaptionRect(var Rect: TRect); override;
property CaptionLeftOffset: Integer read FCaptionLeftOffset write SetCaptionLeftOffset;
property CaptionRightOffset: Integer read FCaptionRightOffset write SetCaptionRightOffset;
public
constructor Create(DockSite: TWinControl; DockZoneClass: TJvDockZoneClass; ADockStyle: TComponent); override;
end;
TJvDockVIDVCTabPageControl = class;
TJvDockVIDVCTabSheet = class(TJvDockTabSheet)
private
FTabWidth: Integer;
FShowTabWidth: Integer;
FIsSourceDockClient: Boolean;
// FZoneSizeStyle: TJvDockZoneSizeStyle;
procedure SetTabWidth(const Value: Integer);
procedure WMSetText(var Msg: TMessage); message WM_SETTEXT;
procedure SetSheetSort(const CaptionStr: string);
protected
procedure SetPageControl(APageControl: TJvDockPageControl); override;
property TabWidth: Integer read FTabWidth write SetTabWidth;
property ShowTabWidth: Integer read FShowTabWidth;
procedure Loaded; override;
procedure UpdateTabShowing; override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property BorderWidth;
property Caption;
property DragMode;
property Enabled;
property Font;
property Height stored False;
property Highlighted;
property ImageIndex;
property Left stored False;
property Constraints;
property PageIndex;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property TabVisible;
property Top stored False;
property Visible stored False;
property Width stored False;
property OnContextPopup;
property OnDragDrop;
property OnDragOver;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnHide;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnResize;
property OnShow;
property OnStartDrag;
end;
TJvDockTabPanel = class(TCustomControl)
private
FPage: TJvDockVIDVCTabPageControl;
FActiveSheetColor: TColor;
FHotTrackColor: TColor;
FActiveFont: TFont;
FInactiveFont: TFont;
FTabLeftOffset: Integer;
FTabRightOffset: Integer;
FTabTopOffset: Integer;
FTabBottomOffset: Integer;
FCaptionLeftOffset: Integer;
FCaptionRightOffset: Integer;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -