cxpcpainters.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 1,694 行 · 第 1/5 页
PAS
1,694 行
{********************************************************************}
{ }
{ Developer Express Visual Component Library }
{ ExpressPageControl }
{ }
{ Copyright (c) 1998-2008 Developer Express Inc. }
{ ALL RIGHTS RESERVED }
{ }
{ The entire contents of this file is protected by U.S. and }
{ International Copyright Laws. Unauthorized reproduction, }
{ reverse-engineering, and distribution of all or any portion of }
{ the code contained in this file is strictly prohibited and may }
{ result in severe civil and criminal penalties and will be }
{ prosecuted to the maximum extent possible under the law. }
{ }
{ RESTRICTIONS }
{ }
{ THIS SOURCE CODE AND ALL RESULTING INTERMEDIATE FILES }
{ (DCU, OBJ, DLL, ETC.) ARE CONFIDENTIAL AND PROPRIETARY TRADE }
{ SECRETS OF DEVELOPER EXPRESS INC. THE REGISTERED DEVELOPER IS }
{ LICENSED TO DISTRIBUTE THE EXPRESSPAGECONTROL AND ALL }
{ ACCOMPANYING VCL CONTROLS AS PART OF AN EXECUTABLE PROGRAM ONLY. }
{ }
{ THE SOURCE CODE CONTAINED WITHIN THIS FILE AND ALL RELATED }
{ FILES OR ANY PORTION OF ITS CONTENTS SHALL AT NO TIME BE }
{ COPIED, TRANSFERRED, SOLD, DISTRIBUTED, OR OTHERWISE MADE }
{ AVAILABLE TO OTHER INDIVIDUALS WITHOUT EXPRESS WRITTEN CONSENT }
{ AND PERMISSION FROM DEVELOPER EXPRESS INC. }
{ }
{ CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON }
{ ADDITIONAL RESTRICTIONS. }
{ }
{********************************************************************}
unit cxPCPainters;
{$I cxVer.inc}
interface
uses
Windows, Classes, Controls, Graphics, SysUtils, cxGraphics, cxLookAndFeels,
cxPC;
const
cxPCEmptyWOffset: TcxPCWOffset = (Left: 0; Right: 0);
cxPCTabsStyle = 1;
cxPCButtonsStyle = 2;
cxPCFlatButtonsStyle = 3;
cxPCExtraFlatStyle = 5;
cxPCUltraFlatStyle = 6;
cxPCFlatStyle = 7;
cxPCOffice11Style = 8;
cxPCSlantedStyle = 9;
cxPCOneNoteStyle = 10;
cxPCSkinStyle = 11;
StandardPainterTabControlFrameBorderWidth = 2;
type
TcxPCNavigatorButtonPosition = record
Button: TcxPCNavigatorButton;
ButtonRect: TRect;
end;
TcxPCNavigatorButtonPositions = array of TcxPCNavigatorButtonPosition;
TcxPCTabsDelimiterOffsets = record
Top, Bottom: Integer;
end;
TcxPCArrow = (aTop, aBottom, aLeft, aRight);
TcxPCNavigatorButtonContentParameters = record
BrushColor: TColor;
Color: TColor;
Enabled: Boolean;
LiteStyle: Boolean;
end;
TLinePosition = (lpL, lpLT, lpT, lpRT, lpR, lpRB, lpB, lpLB);
TLinePositions = array of TLinePosition;
TPoints = array of TPoint;
{ TcxPCStandardPainter }
TcxPCStandardPainter = class(TcxPCCustomPainter)
private
FButtonsQueue: TcxPCNavigatorButtonPositions;
FButtonsRect: TRect;
function GetButtonsWidth(ANavigatorButtons: TcxPCNavigatorButtons): Integer;
protected
function CalculateTabNormalWidth(Tab: TcxTab): Integer; override;
function GetDrawImageOffset(TabVisibleIndex: Integer): TRect; override;
function GetDrawImageWithoutTextWOffset(TabVisibleIndex: Integer): TcxPCWOffset; override;
function GetDrawTextHOffset(TabVisibleIndex: Integer): TRect; override;
function GetFrameWidth: Integer; override;
function GetGoDialogPosition(GoDialogSize: TSize): TPoint; override;
function GetImageTextDistance(ATabVisibleIndex: Integer): Integer; override;
function GetMinTabNormalWidth(ATabVisibleIndex: Integer): Integer; override;
function GetMinTabSelectionDistance: TcxPCDistance; override;
function GetTabContentWOffset(ATabVisibleIndex: Integer): TcxPCWOffset; override;
function GetTabsNormalDistance: TcxPCDistance; override;
function GetTabsPosition(NavigatorButtons: TcxPCNavigatorButtons): TcxPCTabsPosition; override;
function GetTooNarrowTabContentWOffset(ATabVisibleIndex: Integer): TcxPCWOffset; override;
procedure InternalPrepareOutTabImageAndTextData(ATabVisibleIndex: Integer;
var AImageRect, ATextRect: TRect); override;
function IsOverButton(X, Y: Integer; var Button: TcxPCNavigatorButton): Boolean; override;
function IsTabBorderThick(ATabVisibleIndex: Integer): Boolean; override;
procedure Paint; override;
procedure PaintButtonsRegion; override;
procedure PaintTab(TabVisibleIndex: Integer); virtual;
procedure PaintTabsRegion; override;
procedure RepaintButton(Button: TcxPCNavigatorButton; OldButtonState: TcxPCNavigatorButtonState); override;
procedure RepaintButtonsRegion; override;
procedure RepaintTab(TabVisibleIndex: Integer; TabPropertyChanged: TcxPCTabPropertyChanged); override;
procedure CalculateButtonContentParameters(AButton: TcxPCNavigatorButton;
out AParameters: TcxPCNavigatorButtonContentParameters); virtual;
procedure CalculateButtonsRect(NavigatorButtons: TcxPCNavigatorButtons); virtual;
procedure CalculateButtonsRegion(NavigatorButtons: TcxPCNavigatorButtons); virtual;
function CalculateButtonsRegionWidth(NavigatorButtons: TcxPCNavigatorButtons): Integer; virtual;
procedure CorrectTabHeightForImage(var AHeight: Integer);
procedure DrawButtonContent(AButton: TcxPCNavigatorButton;
const AParameters: TcxPCNavigatorButtonContentParameters;
AContentRectLeftTopCorner: TPoint);
function Get3DButtonContentPosition(AButton: TcxPCNavigatorButton): TPoint;
function GetButtonArrow(AButton: TcxPCNavigatorButton): TcxPCArrow;
function GetButtonCenteredContentPosition(AButton: TcxPCNavigatorButton): TPoint;
function GetButtonColor(AButtonState: TcxPCNavigatorButtonState): TColor; virtual;
function GetButtonContentColor(AButtonState: TcxPCNavigatorButtonState): TColor; virtual;
function GetButtonContentPosition(AButton: TcxPCNavigatorButton): TPoint; virtual;
function GetButtonHeight: Integer; virtual;
function GetButtonWidth(Button: TcxPCNavigatorButton): Integer; virtual;
function GetDefaultTabNormalHeight: Integer; virtual;
function GetDefaultTabNormalHTextOffset: Integer; virtual;
function GetDefaultTabNormalWidth: Integer; virtual;
function GetFrameRect: TRect;
function GetFreeSpaceColor: TColor; virtual;
function GetMinFrameRectSize: Integer; virtual;
function GetTabBorderWidth(Tab: TcxTab): Integer; virtual;
function GetTabNormalWidth(ATabVisibleIndex: Integer): Integer; virtual;
function GetTabsRectOffset: TRect; virtual;
function InternalCalculateTabNormalHeight: Integer; virtual;
procedure InternalDrawEdge(const Rect: TRect; Sunken: Boolean; ThinFrame: Boolean = False);
procedure InternalDrawFocusRect(TabVisibleIndex: Integer; R: TRect); virtual;
procedure PaintButton(Button: TcxPCNavigatorButton;
const ButtonRect: TRect); virtual;
procedure PaintButtonBackground(AButtonRect: TRect;
AButtonState: TcxPCNavigatorButtonState); virtual;
procedure PaintButtonFrame(var ARect: TRect;
AButtonState: TcxPCNavigatorButtonState); virtual;
procedure PaintFrame; override;
procedure PaintFrameBorder(R: TRect); virtual;
procedure PaintTabShape(ATab: TcxTab; ATabVisibleIndex: Integer); virtual; abstract;
procedure PrepareTabBackground(ATab: TcxTab; ATabVisibleIndex: Integer); virtual;
procedure GetButtonsOrder(ANavigatorButtons: TcxPCNavigatorButtons;
var AButtonPositions: TcxPCNavigatorButtonPositions); virtual;
property ButtonsRect: TRect read FButtonsRect;
public
constructor Create(AParent: TcxCustomTabControl); override;
destructor Destroy; override;
function CalculateTabNormalHeight: Integer; override;
function GetGoDialogButtonBounds: TRect; override;
class function IsMainTabBoundWithClient: boolean; override;
class function IsMultiSelectionAccepted: boolean; override;
class function IsStandardStyle: Boolean; override;
class function IsTabPressable: Boolean; override;
end;
{ TcxPCButtonedPainter }
TcxPCButtonedPainter = class(TcxPCStandardPainter)
private
MainTabBrushBitmap: TBitmap;
protected
function GetButtonContentPosition(AButton: TcxPCNavigatorButton): TPoint; override;
function GetButtonsRegionHOffset: Integer; override;
function GetButtonsRegionWOffset: Integer; override;
function GetDisplayRectOffset: TRect; override;
function GetTabBodyColor(TabVisibleIndex: Integer): TColor; override;
function GetTabContentWOffset(ATabVisibleIndex: Integer): TcxPCWOffset; override;
function GetTabsContainerOffsets: TRect; override;
function GetTooNarrowTabContentWOffset(ATabVisibleIndex: Integer): TcxPCWOffset; override;
function IsTabBorderThick(ATabVisibleIndex: Integer): Boolean; override;
public
constructor Create(AParent: TcxCustomTabControl); override;
destructor Destroy; override;
end;
{ TcxPCTabsPainter }
TcxPCTabsPainter = class(TcxPCStandardPainter)
private
{ FMDC: HDC;
FPrevMDCBitmap: HBITMAP;}
protected
procedure CorrectTabRect(TabVisibleIndex: Integer;
var TabRectCorrection: TcxPCRectCorrection); override;
procedure DrawNativeTabBackground(DC: HDC; ATab: TcxTabSheet); override;
function GetButtonContentPosition(AButton: TcxPCNavigatorButton): TPoint; override;
function GetButtonHeight: Integer; override;
function GetButtonsRegionHOffset: Integer; override;
function GetButtonsRegionWOffset: Integer; override;
function GetButtonWidth(Button: TcxPCNavigatorButton): Integer; override;
function GetClientRectOffset: TRect; override;
function GetDisplayRectOffset: TRect; override;
function GetDrawImageOffset(TabVisibleIndex: Integer): TRect; override;
function GetDrawImageWithoutTextWOffset(TabVisibleIndex: Integer): TcxPCWOffset; override;
function GetDrawTextHOffset(TabVisibleIndex: Integer): TRect; override;
function GetImageTextDistance(ATabVisibleIndex: Integer): Integer; override;
function GetTabBodyColor(TabVisibleIndex: Integer): TColor; override;
function GetTabClipRgn(ATabVisibleIndex: Integer): TcxRegion; override;
function GetTabClipRgnOperation(ATabVisibleIndex: Integer): TcxRegionOperation; override;
function GetTabContentWOffset(ATabVisibleIndex: Integer): TcxPCWOffset; override;
procedure GetTabNativePartAndState(ATabVisibleIndex: Integer;
out PartId, StateId: Integer); override;
function GetTabsContainerOffsets: TRect; override;
function GetTabsPosition(NavigatorButtons: TcxPCNavigatorButtons): TcxPCTabsPosition; override;
function GetTooNarrowTabContentWOffset(
ATabVisibleIndex: Integer): TcxPCWOffset; override;
function InternalCalculateTabNormalHeight: Integer; override;
procedure InternalPrepareOutTabImageAndTextData(ATabVisibleIndex: Integer;
var AImageRect, ATextRect: TRect); override;
procedure InvalidateTabRect(ATabVisibleIndex: Integer); override;
function IsNativePainting: Boolean; override;
function IsOverTab(TabVisibleIndex: Integer; X, Y: Integer): Boolean; override;
function NeedShowFrame: Boolean; override;
procedure Paint; override;
procedure PaintButton(Button: TcxPCNavigatorButton;
const ButtonRect: TRect); override;
procedure PaintClientArea; override;
procedure PaintFrame; override;
procedure PaintTabShape(ATab: TcxTab; ATabVisibleIndex: Integer); override;
procedure PaintTabsRegion; override;
procedure PaintNativeTabBackground(DC: HDC; ATabVisibleIndex: Integer; const ABounds: TRect); virtual;
// procedure PrepareBackgroundBitmap; virtual;
procedure PrepareTabBackground(ATab: TcxTab; ATabVisibleIndex: Integer); override;
procedure PrepareTabBitmapBackground(ABitmap: TBitmap; const ARect: TRect; ATab: TcxTab); virtual;
procedure RepaintTab(TabVisibleIndex: Integer; TabPropertyChanged: TcxPCTabPropertyChanged); override;
function GetMinFrameRectSize: Integer; override;
procedure GetTabCornersColor(ATabVisibleIndex: Integer;
out AColor1, AColor2: TColor); virtual;
procedure PaintTabCorners(ATabVisibleIndex: Integer); virtual;
procedure PaintTabFrame(ATabVisibleIndex: Integer); virtual;
procedure InternalPaintFrame(ACanvas: TCanvas); virtual;
public
class function GetStandardStyle: TcxPCStandardStyle; override;
class function GetStyleID: TcxPCStyleID; override;
class function GetStyleName: TCaption; override;
class function HasLookAndFeel(ALookAndFeel: TcxLookAndFeel): Boolean; override;
class function IsDefault(ALookAndFeel: TcxLookAndFeel): Boolean; override;
end;
{ TcxPCButtonsPainter }
TcxPCButtonsPainter = class(TcxPCButtonedPainter)
protected
function IsTabBorderThick(ATabVisibleIndex: Integer): Boolean; override;
procedure PaintTabShape(ATab: TcxTab; ATabVisibleIndex: Integer); override;
public
class function GetStandardStyle: TcxPCStandardStyle; override;
class function GetStyleID: TcxPCStyleID; override;
class function GetStyleName: TCaption; override;
class function HasLookAndFeel(ALookAndFeel: TcxLookAndFeel): Boolean; override;
end;
{ TcxPCFlatButtonsPainter }
TcxPCFlatButtonsPainter = class(TcxPCButtonedPainter)
protected
procedure PaintTab(TabVisibleIndex: Integer); override;
procedure PaintTabShape(ATab: TcxTab; ATabVisibleIndex: Integer); override;
public
class function GetStandardStyle: TcxPCStandardStyle; override;
class function GetStyleID: TcxPCStyleID; override;
class function GetStyleName: TCaption; override;
class function HasLookAndFeel(ALookAndFeel: TcxLookAndFeel): Boolean; override;
end;
{ TcxPCExtraFlatPainter }
TcxPCExtraFlatPainter = class(TcxPCStandardPainter)
protected
procedure CalculateButtonContentParameters(AButton: TcxPCNavigatorButton;
out AParameters: TcxPCNavigatorButtonContentParameters); override;
function CalculateTabNormalWidth(Tab: TcxTab): Integer; override;
procedure CorrectTabRect(TabVisibleIndex: Integer; var TabRectCorrection: TcxPCRectCorrection); override;
function GetButtonColor(AButtonState: TcxPCNavigatorButtonState): TColor; override;
function GetButtonContentColor(AButtonState: TcxPCNavigatorButtonState): TColor; override;
function GetButtonContentPosition(AButton: TcxPCNavigatorButton): TPoint; override;
function GetButtonHeight: Integer; override;
function GetButtonWidth(Button: TcxPCNavigatorButton): Integer; override;
function GetClientRectOffset: TRect; override;
function GetDefaultClientColor: TColor; override;
function GetDefaultTabNormalHeight: Integer; override;
function GetDefaultTabNormalHTextOffset: Integer; override;
function GetDisplayRectOffset: TRect; override;
function GetDrawImageOffset(TabVisibleIndex: Integer): TRect; override;
function GetDrawTextHOffset(TabVisibleIndex: Integer): TRect; override;
function GetFrameWidth: Integer; override;
function GetFreeSpaceColor: TColor; override;
function GetMinTabNormalWidth(ATabVisibleIndex: Integer): Integer; override;
function GetTabBodyColor(TabVisibleIndex: Integer): TColor; override;
function GetTabBorderWidth(Tab: TcxTab = nil): Integer; override;
function GetTabContentWOffset(ATabVisibleIndex: Integer): TcxPCWOffset; override;
function GetTabNormalWidth(ATabVisibleIndex: Integer): Integer; override;
function GetTabsRowsDelimiterWidth: Integer; virtual;
function GetTabsNormalDistance: TcxPCDistance; override;
function GetTabsPosition(NavigatorButtons: TcxPCNavigatorButtons): TcxPCTabsPosition; override;
function GetTooNarrowTabContentWOffset(ATabVisibleIndex: Integer): TcxPCWOffset; override;
function InternalCalculateTabNormalHeight: Integer; override;
procedure InternalPaint; override;
procedure PaintButtonFrame(var ARect: TRect;
AButtonState: TcxPCNavigatorButtonState); override;
procedure PaintClientArea; override;
procedure PaintFrame; override;
procedure PaintTabShape(ATab: TcxTab; ATabVisibleIndex: Integer); override;
procedure PaintTabsRegion; override;
procedure RepaintTab(TabVisibleIndex: Integer; TabPropertyChanged: TcxPCTabPropertyChanged); override;
function GetButtonsDistance(AButton1, AButton2: TcxPCNavigatorButton): Integer; override;
function GetButtonsRegionHOffset: Integer; override;
function GetButtonsRegionWOffset: Integer; override;
function GetFocusRect: TRect; virtual;
function GetTabsDelimiterOffsets: TcxPCTabsDelimiterOffsets; virtual;
procedure DrawBackground(ACanvas: TCanvas; ARect: TRect;
ATabVisibleIndex: Integer); virtual;
procedure ExcludeUnderLine(var R: TRect); virtual;
function GetMainTabRowUnderlineColor: TColor; virtual;
function GetMainTabRowUnderlineRect: TRect; virtual;
function GetTabBackgroundRect(ATabVisibleIndex: Integer;
AForNormalState: Boolean): TRect; virtual;
function GetTabsDelimiterWidth: Integer; virtual;
function GetTabsRowColor: TColor; virtual;
function GetTabsRowRect(ARowIndex: Integer): TRect;
procedure InternalPaintFrame(ALeftTopColor, ARightBottomColor: TColor);
procedure InternalPaintMainTabFrame(var R: TRect; ALightColor, ADarkColor: TColor);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?