cxpcpainters.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 1,694 行 · 第 1/5 页
PAS
1,694 行
procedure InternalPaintTabsRowsDelimiter(var ARowRect: TRect;
AColors: array of TColor);
function IsMainTabRow(AVisibleRow: Integer): Boolean;
function NeedShowTabsRegionFrame: Boolean; virtual;
procedure PaintMainTabFrame(var R: TRect); virtual;
procedure PaintMainTabRowUnderline;
procedure PaintTabsDelimiter(const ARect: TRect); virtual;
procedure PaintTabsRowsDelimiter(var ARowRect: TRect; ARowIndex: Integer); virtual;
public
function CalculateTabNormalHeight: Integer; override;
class function GetStyleID: TcxPCStyleID; override;
class function GetStyleName: TCaption; override;
class function HasLookAndFeel(ALookAndFeel: TcxLookAndFeel): Boolean; override;
class function IsMainTabBoundWithClient: boolean; override;
class function IsMultiSelectionAccepted: boolean; override;
class function IsTabPressable: Boolean; override;
end;
{ TcxPCUltraFlatPainter }
TcxPCUltraFlatPainter = class(TcxPCExtraFlatPainter)
protected
procedure CalculateButtonContentParameters(AButton: TcxPCNavigatorButton;
out AParameters: TcxPCNavigatorButtonContentParameters); override;
function GetButtonColor(AButtonState: TcxPCNavigatorButtonState): TColor; override;
function GetButtonContentPosition(AButton: TcxPCNavigatorButton): TPoint; override;
function GetButtonHeight: Integer; override;
function GetButtonsDistance(AButton1, AButton2: TcxPCNavigatorButton): Integer; override;
function GetButtonsRegionHOffset: Integer; override;
function GetButtonWidth(Button: TcxPCNavigatorButton): Integer; override;
function GetFocusRect: TRect; override;
procedure PaintButtonFrame(var ARect: TRect;
AButtonState: TcxPCNavigatorButtonState); override;
procedure PaintFrame; override;
procedure PaintMainTabFrame(var R: TRect); override;
procedure PaintTabsRowsDelimiter(var ARowRect: TRect; ARowIndex: Integer); override;
public
class function GetStyleID: TcxPCStyleID; override;
class function GetStyleName: TCaption; override;
class function HasLookAndFeel(ALookAndFeel: TcxLookAndFeel): Boolean; override;
end;
{ TcxPCFlatPainter }
TcxPCFlatPainter = class(TcxPCTabsPainter)
protected
function GetButtonContentPosition(AButton: TcxPCNavigatorButton): TPoint; override;
function GetButtonHeight: Integer; override;
function GetButtonWidth(Button: TcxPCNavigatorButton): Integer; override;
function GetFrameWidth: Integer; override;
function GetTabClipRgn(ATabVisibleIndex: Integer): TcxRegion; override;
function GetTabClipRgnOperation(ATabVisibleIndex: Integer): TcxRegionOperation; override;
function IsNativePainting: Boolean; override;
function NeedShowFrame: Boolean; override;
procedure PaintButtonFrame(var ARect: TRect;
AButtonState: TcxPCNavigatorButtonState); override;
procedure PaintFrameBorder(R: TRect); override;
procedure PaintTabFrame(ATabVisibleIndex: Integer); override;
public
class function GetStyleID: TcxPCStyleID; override;
class function GetStyleName: TCaption; override;
class function HasLookAndFeel(ALookAndFeel: TcxLookAndFeel): Boolean; override;
end;
{ TcxPCOffice11Painter }
TcxPCOffice11Painter = class(TcxPCUltraFlatPainter)
private
function GetSelectedColor1: TColor;
function GetSelectedColor2: TColor;
function IsGradientClienArea: Boolean;
function NeedShowMainTabOppositeRowLine: Boolean;
procedure PaintMainTabOppositeRowLine;
protected
class function GetFrameColor: TColor; virtual;
procedure DrawBackground(ACanvas: TCanvas; ARect: TRect;
ATabVisibleIndex: Integer); override;
procedure ExcludeUnderLine(var R: TRect); override;
procedure FillDisplayRect; override;
function GetButtonContentColor(AButtonState: TcxPCNavigatorButtonState): TColor; override;
function GetClientRectOffset: TRect; override;
function GetFocusRect: TRect; override;
function GetFreeSpaceColor: TColor; override;
function GetMainTabRowUnderlineColor: TColor; override;
function GetMainTabRowUnderlineRect: TRect; override;
function GetTabBodyColor(TabVisibleIndex: Integer): TColor; override;
function GetTabsDelimiterOffsets: TcxPCTabsDelimiterOffsets; override;
function GetTabsDelimiterWidth: Integer; override;
function GetTabsRowsDelimiterWidth: Integer; override;
function IsTabTransparent(ATabVisibleIndex: Integer): Boolean; override;
function NeedRedrawOnResize: Boolean; override;
function NeedShowTabsRegionFrame: Boolean; override;
procedure PaintButtonBackground(AButtonRect: TRect;
AButtonState: TcxPCNavigatorButtonState); override;
procedure PaintButtonFrame(var ARect: TRect;
AButtonState: TcxPCNavigatorButtonState); override;
procedure PaintClientArea; override;
procedure PaintFrame; override;
procedure PaintMainTabFrame(var R: TRect); override;
procedure PaintTabsDelimiter(const ARect: TRect); override;
procedure PaintTabsRowsDelimiter(var ARowRect: TRect; ARowIndex: Integer); override;
procedure PrepareDrawTabContentBitmapBackground(ABitmap: TBitmap;
const ABitmapPos: TPoint; ATabVisibleIndex: Integer); override;
procedure DrawGradientBackground(ACanvas: TCanvas; ARect: TRect;
ATabVisibleIndex: Integer; AHorizontal, AInverse: Boolean);
public
class function GetStyleID: TcxPCStyleID; override;
class function GetStyleName: TCaption; override;
class function HasLookAndFeel(ALookAndFeel: TcxLookAndFeel): Boolean; override;
end;
{ TcxPCSlantedPainter }
TcxPCSlantedPainter = class(TcxPCStandardPainter)
private
FCutValue: Integer;
function GetTabsLineRect(ATabIndexInterval: TcxPCIndexInterval; AFullRect: Boolean): TRect;
function GetTabUnderlineRect(ATab: TcxTab): TRect;
protected
function AlwaysColoredTabs: Boolean; override;
procedure CalculateButtonContentParameters(AButton: TcxPCNavigatorButton;
out AParameters: TcxPCNavigatorButtonContentParameters); override;
function CalculateTabNormalWidth(Tab: TcxTab): Integer; override;
procedure FillDisplayRect; override;
function GetButtonColor(AButtonState: TcxPCNavigatorButtonState): TColor; override;
function GetButtonContentColor(AButtonState: TcxPCNavigatorButtonState): TColor; override;
function GetButtonContentPosition(AButton: TcxPCNavigatorButton): TPoint; override;
function GetButtonHeight: Integer; override;
function GetButtonsDistance(AButton1, AButton2: TcxPCNavigatorButton): Integer; override;
function GetButtonsRegionFromTabsOffset: Integer; override;
function GetButtonsRegionHOffset: Integer; override;
function GetButtonsRegionWOffset: Integer; override;
function GetButtonWidth(Button: TcxPCNavigatorButton): Integer; override;
function GetClientColor: TColor; override;
function GetClientRectOffset: TRect; override;
function GetDefaultTabNormalHeight: Integer; override;
function GetDrawImageOffset(TabVisibleIndex: Integer): TRect; override;
function GetDrawTextHOffset(TabVisibleIndex: Integer): TRect; override;
function GetFrameWidth: Integer; override;
function GetImageTextDistance(ATabVisibleIndex: Integer): Integer; override;
function GetMinTabNormalWidth(ATabVisibleIndex: Integer): Integer; override;
function GetTabBodyColor(TabVisibleIndex: Integer): TColor; override;
function GetTabClipRgn(ATabVisibleIndex: Integer): TcxRegion; override;
function GetTabContentWOffset(ATabVisibleIndex: Integer): TcxPCWOffset; override;
function GetTabNormalWidth(ATabVisibleIndex: Integer): Integer; override;
function GetTabsContainerOffsets: TRect; override;
function GetTabsNormalDistance: TcxPCDistance; override;
function GetTabsRectOffset: TRect; override;
function GetTooNarrowTabContentWOffset(ATabVisibleIndex: Integer): TcxPCWOffset; override;
procedure Init; override;
function InternalCalculateTabNormalHeight: Integer; override;
function IsOverTab(TabVisibleIndex: Integer; X, Y: Integer): Boolean; override;
function IsTabBorderThick(ATabVisibleIndex: Integer): Boolean; override;
procedure PaintButtonFrame(var ARect: TRect;
AButtonState: TcxPCNavigatorButtonState); override;
procedure PaintFrame; override;
procedure PaintTabShape(ATab: TcxTab; ATabVisibleIndex: Integer); override;
procedure PaintTabsRegion; override;
procedure PrepareDrawTabContentBitmapBackground(ABitmap: TBitmap;
const ABitmapPos: TPoint; ATabVisibleIndex: Integer); override;
function CanLightMainTab: Boolean; virtual;
function DirectionalGetFigureRegion(const R: TRect; APoints: array of TPoint;
ALinePositions: array of TLinePosition; ATabPositon: TcxTabPosition;
AForContent: Boolean): TcxRegion;
procedure DrawBackground(ACanvas: TCanvas; R: TRect;
ATabVisibleIndex: Integer; AHorizontalGradient, AInverseGradient: Boolean); virtual;
procedure DrawTabUnderline(ATabVisibleIndex: Integer); virtual;
procedure GetBackgroundGradientColors(ATabVisibleIndex: Integer;
out AColor1, AColor2: TColor); virtual;
function GetCutValue: Integer;
function GetGeometricalMinTabWidth: Integer; virtual;
function GetFrameColor: TColor; virtual;
function GetSlantedSides: TcxTabSlantPositions; virtual;
procedure GetTabFramePolyline(ATabVisibleIndex: Integer;
out APoints: TPoints; out ALinePositions: TLinePositions);
function GetTabImageSize: TSize; virtual;
function GetVerticalTextIndent: Integer; virtual;
function InternalGetCutValue: Integer; virtual;
function InternalGetTabClipRegion(ATabVisibleIndex: Integer;
AForContent: Boolean): TcxRegion; virtual;
procedure PaintTabFrame(ATabVisibleIndex: Integer; const R: TRect); virtual;
procedure PaintTabStateMark(ATabVisibleIndex: Integer); virtual;
property SlantedSides: TcxTabSlantPositions read GetSlantedSides;
public
class function GetStyleID: TcxPCStyleID; override;
class function GetStyleName: TCaption; override;
class function HasLookAndFeel(ALookAndFeel: TcxLookAndFeel): Boolean; override;
end;
{ TcxPCOneNotePainter }
TcxPCOneNotePainter = class(TcxPCSlantedPainter)
protected
class function AllowRotate: Boolean; override;
function CanLightMainTab: Boolean; override;
procedure DrawTabUnderline(ATabVisibleIndex: Integer); override;
procedure GetBackgroundGradientColors(ATabVisibleIndex: Integer;
out AColor1, AColor2: TColor); override;
function GetButtonsRegionHOffset: Integer; override;
function GetDrawImageOffset(TabVisibleIndex: Integer): TRect; override;
function GetDrawTextHOffset(TabVisibleIndex: Integer): TRect; override;
function GetFrameColor: TColor; override;
function GetGeometricalMinTabWidth: Integer; override;
function GetSlantedSides: TcxTabSlantPositions; override;
function GetTabContentWOffset(ATabVisibleIndex: Integer): TcxPCWOffset; override;
function GetTabsContainerOffsets: TRect; override;
function GetTabsNormalDistance: TcxPCDistance; override;
function GetTabsRectOffset: TRect; override;
function InternalGetCutValue: Integer; override;
function InternalGetTabClipRegion(ATabVisibleIndex: Integer;
AForContent: Boolean): TcxRegion; override;
procedure PaintTabFrame(ATabVisibleIndex: Integer; const R: TRect); override;
procedure PaintTabStateMark(ATabVisibleIndex: Integer); override;
public
class function GetStyleID: TcxPCStyleID; override;
class function GetStyleName: TCaption; override;
class function HasLookAndFeel(ALookAndFeel: TcxLookAndFeel): Boolean; override;
end;
procedure DrawBorder(ACanvas: TcxCanvas; var ARect: TRect; ASides: array of TcxBorder; AColors: array of TColor; AExcludeBorder: Boolean = False);
procedure ExchangeValues(var AValue1, AValue2);
procedure GetRectSize(const R: TRect; AIsHorizontal: Boolean;
out ARWidth, ARHeight: Integer);
procedure RotateTabsDistance(var ADistance: TcxPCDistance);
var
cxPCLightBrushColor: TColor;
implementation
uses
Math, cxLookAndFeelPainters, cxPCPaintersFactory, dxThemeConsts,
dxThemeManager, dxUxTheme, dxOffice11;
const
ButtonsPainterTabContentWOffsetA: array[Boolean] of TcxPCWOffset = (
(Left: 4; Right: 4),
(Left: 3; Right: 4)
);
StandardNativePainterButtonHeight = 17;
StandardNativePainterButtonWidth = 17;
StandardPainterButtonHeight = 20;
StandardPainterButtonWidthA: array [Boolean, TcxPCNavigatorButton] of Integer = (
(20, 20, 12, 20), // TabPosition in [tpLeft, tpRight]
(20, 20, 13, 20) // TabPosition in [tpTop, tpBottom]
);
StandardPainterTabBorderWidth = 2;
StandardPainterDefaultTabNormalHeightA: array [TcxPCStandardStyle] of Integer = (18, 20, 20);
StandardPainterDefaultTabNormalHTextOffsetA: array [TcxPCStandardStyle] of Integer = (2, 4, 4);
StandardPainterDrawImageOffsetA: array [Boolean, TcxPCStandardStyle] of TRect = (
((Left: 6; Top: 1; Right: 0; Bottom: 0),
(Left: 6; Top: -1; Right: 0; Bottom: 1),
(Left: 6; Top: -1; Right: 0; Bottom: 1)
),
((Left: 8; Top: 1; Right: 0; Bottom: 3),
(Left: 7; Top: -1; Right: 0; Bottom: 1),
(Left: 7; Top: -1; Right: 0; Bottom: 1)
)
);
StandardPainterDrawTextHOffsetA: array [Boolean, TcxPCStandardStyle] of TRect = (
((Left: 5; Top: 1; Right: 5; Bottom: -1),
(Left: 6; Top: 0; Right: 4; Bottom: 1),
(Left: 6; Top: 0; Right: 4; Bottom: 1)
),
((Left: 5; Top: 1; Right: 5; Bottom: 2),
(Left: 6; Top: 0; Right: 4; Bottom: 1),
(Left: 6; Top: 0; Right: 4; Bottom: 1)
)
);
StandardPainterTabContentWOffsetA: array [Boolean, TcxPCStandardStyle] of TcxPCWOffset = (
((Left: 2; Right: 2),
(Left: 3; Right: 3),
(Left: 2; Right: 2)
),
((Left: 4; Right: 4),
(Left: 3; Right: 3),
(Left: 4; Right: 2)
)
);
StandardPainterTabsNormalDistanceA: array [TcxPCStandardStyle] of TcxPCDistance = (
(dw: 0; dh: 0),
(dw: 3; dh: 3),
(dw: 10; dh: 3)
);
StandardPainterMaxTabBorderWidth = 2;
StandardPainterWDistanceBetweenImageBorderAndText = 1;
StandardPainterTooNarrowTabContentWOffsetA: array [Boolean, TcxPCStandardStyle] of TcxPCWOffset = (
((Left: 2; Right: 2),
(Left: 3; Right: 3),
(Left: 2; Right: 2)
),
((Left: 4; Right: 4),
(Left: 3; Right: 3),
(Left: 3; Right: 2)
)
);
TabsPainterContentWOffsetA: array[Boolean, Boolean] of TcxPCWOffset = (
((Left: 3; Right: 3),
(Left: 3; Right: 3)),
((Left: 5; Right: 5),
(Left: 4; Right: 5))
);
TabsPainterDrawImageWithoutTextRotatedMainTabWOffset: array[Boolean] of TcxPCWOffset =
((Left: 1; Right: 2), (Left: 2; Right: 1));
TabsPainterButtonBorderWidth = 2;
ExtraFlatPainterButtonSize = 13;
ExtraFlatPainterDefaultTabNormalWidth = 0;
ExtraFlatPainterDrawImageOffsetA: array [Boolean] of TRect = (
(Left: 2; Top: 0; Right: 0; Bottom: 0),
(Left: 3; Top: 0; Right: 0; Bottom: 0)
);
ExtraFlatPainterDrawTextHOffsetA: array [Boolean] of TRect = (
(Left: 5; Top: 2; Right: 3; Bottom: 0),
(Left: 6; Top: 2; Right: 3; Bottom: 0)
);
ExtraFlatPainterMainTabBorderWidth = 1;
ExtraFlatPainterMainTabRectCorrection: TcxPCRectCorrection = (
dLeft: -1; dTop: -1; dRight: 1; dBottom: 1
);
ExtraFlatPainterTabContentWOffset: array [Boolean] of TcxPCWOffset = (
(Left: 2; Right: 2),
(Left: 3; Right: 3)
);
ExtraFlatPainterWDistanceBetweenImageBorderAndText = 0;
ExtraFlatPainterTabsRowFreeSpaceWidth = 3;
ExtraFlatPainterMainTabRowUnderlineWidth = 2;
ButtonedPainterDistanceBetweenTabsAndClientRects = 2;
MinTabSelectionDistance: TcxPCDistance = (dw: 4; dh: 4);
cxPCDarkEdgeColor = clBtnShadow;
cxPCDarkestEdgeColor = cl3DDkShadow;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?