📄 aclfpainter.pas
字号:
BitBlt(ACanvas.Handle, X, Y, Size.cx, Size.cy, TmpBmp.Canvas.Handle, 0, 0, SRCCOPY);
FreeAndNil(TmpBmp);
end;
end else inherited DrawRadioButton(ACanvas, X, Y, AButtonState, AChecked, AFocused, ABrushColor, AIsDesigning)
end;
class function TcxACLookAndFeelPainter.RadioButtonSize: TSize;
var
i : integer;
begin
if Skinned then begin
i := DefaultManager.GetMaskIndex(DefaultManager.ConstData.IndexGLobalInfo, s_GLobalInfo, s_RadioButtonChecked);
if DefaultManager.IsValidImgIndex(i) then begin
Result.cx := WidthOfImage(DefaultManager.ma[i]);
Result.cy := HeightOfImage(DefaultManager.ma[i]);
end
else inherited RadioButtonSize;
end
else Result := inherited RadioButtonSize;
end;
class procedure TcxACLookAndFeelPainter.DrawFilterCloseButton(ACanvas: TcxCanvas; R: TRect; AState: TcxButtonState);
var
i : integer;
TmpBmp : TBitmap;
State : integer;
CI : TCacheInfo;
begin
if Skinned then begin
i := DefaultManager.GetSkinIndex(s_GlobalInfo);
i := DefaultManager.GetMaskIndex(i, s_GlobalInfo, s_BorderIconClose);
if DefaultManager.IsValidImgIndex(i) then begin
case AState of cxbsHot : State := 1; cxbsPressed : State := 2; else State := 0 end;
TmpBmp := CreateBmp24(WidthOf(R), HeightOf(R));
FillDC(TmpBmp.Canvas.Handle, Rect(0, 0, TmpBmp.Width, TmpBmp.Height), DefaultManager.GetGlobalColor);
CI := MakeCacheInfo(TmpBmp);
DrawSkinGlyph(TmpBmp, Point(0, 0), State, 1, DefaultManager.ma[i], MakeCacheInfo(TmpBmp));
BitBlt(ACanvas.Handle, R.Left, R.Top, TmpBmp.Width, TmpBmp.Height, TmpBmp.Canvas.Handle, 0, 0, SRCCOPY);
FreeAndNil(TmpBmp);
end;
end else inherited DrawFilterCloseButton(ACanvas, R, AState)
end;
class procedure TcxACLookAndFeelPainter.DrawFilterDropDownButton(ACanvas: TcxCanvas; R: TRect; AState: TcxButtonState; AIsFilterActive: Boolean);
var
i : integer;
TmpBmp : TBitmap;
State : integer;
CI : TCacheInfo;
begin
if Skinned then begin
i := DefaultManager.GetSkinIndex(s_ComboBox);
i := DefaultManager.GetMaskIndex(i, s_ComboBox, s_ItemGlyph);
if DefaultManager.IsValidImgIndex(i) then begin
case AState of cxbsHot : State := 1; cxbsPressed : State := 2; else State := 0 end;
TmpBmp := CreateBmp24(WidthOf(R), HeightOf(R));
FillDC(TmpBmp.Canvas.Handle, Rect(0, 0, TmpBmp.Width, TmpBmp.Height), DefaultManager.GetGlobalColor);
BitBlt(TmpBmp.Canvas.Handle, 0, 0, TmpBmp.Width, TmpBmp.Height, ACanvas.Handle, R.Left, R.Top, SRCCOPY);
CI := MakeCacheInfo(TmpBmp);
DrawSkinGlyph(TmpBmp, Point(0, 0), State, 1, DefaultManager.ma[i], MakeCacheInfo(TmpBmp));
BitBlt(ACanvas.Handle, R.Left, R.Top, TmpBmp.Width, TmpBmp.Height, TmpBmp.Canvas.Handle, 0, 0, SRCCOPY);
FreeAndNil(TmpBmp);
end;
end else inherited DrawFilterCloseButton(ACanvas, R, AState)
end;
class procedure TcxACLookAndFeelPainter.DrawFooterBorder(ACanvas: TcxCanvas; const R: TRect);
const
Section = 'BUTTON';
var
i : integer;
TmpBmp : TBitmap;
CI : TCacheInfo;
begin
if Skinned then begin
ACanvas.FrameRect(R, DefaultManager.GetActiveEditColor, 1);
Exit;
i := DefaultManager.GetSkinIndex(Section);
if DefaultManager.IsValidSkinIndex(i) then begin
TmpBmp := TBitmap.Create; TmpBmp.PixelFormat := pf24bit; TmpBmp.Width := WidthOf(R); TmpBmp.Height := HeightOf(R);
FillDC(TmpBmp.Canvas.Handle, Rect(0, 0, TmpBmp.Width, TmpBmp.Height), DefaultManager.GetGlobalColor);
CI.Bmp := TmpBmp;
CI.X := 0;
CI.Y := 0;
CI.Ready := True;
PaintItem(i, Section, CI, True, 0, Rect(0, 0, TmpBmp.Width, TmpBmp.Height), Point(0, 0), TmpBmp, DefaultManager);
BitBlt(ACanvas.Handle, R.Left, R.Top, TmpBmp.Width, TmpBmp.Height, TmpBmp.Canvas.Handle, 0, 0, SRCCOPY);
FreeAndNil(TmpBmp);
end;
end else inherited DrawFooterBorder(ACanvas, R)
end;
class procedure TcxACLookAndFeelPainter.DrawFooterCellBorder(ACanvas: TcxCanvas; const R: TRect);
const
Section = 'BUTTON';
var
i : integer;
TmpBmp : TBitmap;
CI : TCacheInfo;
begin
if Skinned then begin
ACanvas.FrameRect(R, DefaultManager.GetGlobalColor, 1);
Exit;
i := DefaultManager.GetSkinIndex(Section);
if DefaultManager.IsValidSkinIndex(i) then begin
TmpBmp := TBitmap.Create; TmpBmp.PixelFormat := pf24bit; TmpBmp.Width := WidthOf(R); TmpBmp.Height := HeightOf(R);
FillDC(TmpBmp.Canvas.Handle, Rect(0, 0, TmpBmp.Width, TmpBmp.Height), DefaultManager.GetGlobalColor);
CI.Bmp := TmpBmp;
CI.X := 0;
CI.Y := 0;
CI.Ready := True;
PaintItem(i, Section, CI, True, 0, Rect(0, 0, TmpBmp.Width, TmpBmp.Height), Point(0, 0), TmpBmp, DefaultManager);
BitBlt(ACanvas.Handle, R.Left, R.Top, TmpBmp.Width, TmpBmp.Height, TmpBmp.Canvas.Handle, 0, 0, SRCCOPY);
FreeAndNil(TmpBmp);
end;
end else inherited DrawFooterBorder(ACanvas, R)
end;
class procedure TcxACLookAndFeelPainter.DrawHeader;
const
AlignmentsHorz: array[TAlignment] of Integer = (cxAlignLeft, cxAlignRight, cxAlignHCenter);
AlignmentsVert: array[TcxAlignmentVert] of Integer = (cxAlignTop, cxAlignBottom, cxAlignVCenter);
MultiLines: array[Boolean] of Integer = (cxSingleLine, cxWordBreak);
ShowEndEllipsises: array[Boolean] of Integer = (0, cxShowEndEllipsis);
var
i : integer;
State : integer;
Section : string;
R : TRect;
TmpBmp : TBitmap;
CI : TCacheInfo;
begin
if Skinned then begin
if AState in [cxbsDefault, cxbsNormal, cxbsHot, cxbsPressed]{AIsLast} then begin
Section := s_ColHeader;
AOnDrawBackground := nil;
i := DefaultManager.GetSkinIndex(Section);
if not DefaultManager.IsValidSkinIndex(i) then begin Section := s_Button; i := DefaultManager.GetSkinIndex(Section) end; // For compatibility
if DefaultManager.IsValidSkinIndex(i) then begin
case AState of cxbsHot : State := 1; cxbsPressed : State := 2; else State := 0 end;
TmpBmp := CreateBmp24(WidthOf(ABounds), HeightOf(ABounds));
CI := MakeCacheInfo(TmpBmp);
CI.FillColor := DefaultManager.GetGlobalColor;
CI.Ready := False;
// ParentCenterColor := DefaultManager.GetGlobalColor;
// CtrlParentColor := ParentCenterColor;
FillDC(TmpBmp.Canvas.Handle, ABounds, CI.FillColor);
PaintItem(i, Section, CI, True, State, Rect(0, 0, TmpBmp.Width, TmpBmp.Height), Point(0, 0), TmpBmp.Canvas.Handle, DefaultManager);
// ParentCenterColor := clFuchsia;
// CtrlParentColor := clFuchsia;
BitBlt(ACanvas.Handle, ABounds.Left, ABounds.Top, TmpBmp.Width, TmpBmp.Height, TmpBmp.Canvas.Handle, 0, 0, SRCCOPY);
FreeAndnil(TmpBmp);
if AFont <> nil then ACanvas.Font.Assign(AFont);
ACanvas.Font.Color := DefaultManager.gd[i].FontColor[1];
ACanvas.Brush.Style := bsClear;
R := ATextAreaBounds;
ACanvas.DrawTexT(AText, ATextAreaBounds, AlignmentsHorz[AAlignmentHorz] or
AlignmentsVert[AAlignmentVert] or MultiLines[AMultiLine] or ShowEndEllipsises[AShowEndEllipsis]);
end;
end;
end else inherited
end;
class procedure TcxACLookAndFeelPainter.DrawHeaderBorder(ACanvas: TcxCanvas; const R: TRect; ANeighbors: TcxNeighbors; ABorders: TcxBorders);
begin
if not Skinned then inherited;
end;
class procedure TcxACLookAndFeelPainter.DrawHeaderControlSection(
ACanvas: TcxCanvas; const ABounds, ATextAreaBounds: TRect;
ANeighbors: TcxNeighbors; ABorders: TcxBorders; AState: TcxButtonState;
AAlignmentHorz: TAlignment; AAlignmentVert: TcxAlignmentVert; AMultiLine,
AShowEndEllipsis: Boolean; const AText: string; AFont: TFont; ATextColor,
ABkColor: TColor);
begin
inherited
end;
class procedure TcxACLookAndFeelPainter.DrawHeaderControlSectionBorder(
ACanvas: TcxCanvas; const R: TRect; ABorders: TcxBorders;
AState: TcxButtonState);
begin
inherited;
end;
class procedure TcxACLookAndFeelPainter.DrawHeaderEx(ACanvas: TcxCanvas;
const ABounds, ATextAreaBounds: TRect; ANeighbors: TcxNeighbors;
ABorders: TcxBorders; AState: TcxButtonState; AAlignmentHorz: TAlignment;
AAlignmentVert: TcxAlignmentVert; AMultiLine, AShowEndEllipsis: Boolean;
const AText: string; AFont: TFont; ATextColor, ABkColor: TColor;
AOnDrawBackground: TcxDrawBackgroundEvent);
begin
if Skinned then DrawHeader(ACanvas, ABounds, ATextAreaBounds, ANeighbors, ABorders, AState,
AAlignmentHorz, AAlignmentVert, AMultiLine, AShowEndEllipsis, AText, AFont, ATextColor, ABkColor,
AOnDrawBackground, False)
else inherited
end;
class procedure TcxACLookAndFeelPainter.DrawHeaderPressed(ACanvas: TcxCanvas; const ABounds: TRect);
begin
if not Skinned then inherited
end;
class procedure TcxACLookAndFeelPainter.DrawMonthHeader(ACanvas: TcxCanvas;
const ABounds: TRect; const AText: string; ANeighbors: TcxNeighbors;
const AViewParams: TcxViewParams; AArrows: TcxHeaderArrows;
ASideWidth: Integer; AOnDrawBackground: TcxDrawBackgroundEvent);
begin
// inherited;
end;
class procedure TcxACLookAndFeelPainter.DrawScrollBarPart(ACanvas: TcxCanvas; AHorizontal: Boolean; R: TRect; APart: TcxScrollBarPart; AState: TcxButtonState);
var
State : integer;
TmpBmp, BGBmp : TBitmap;
CI : TCacheInfo;
BtnSize : integer;
procedure PaintGlyph(MaskIndex : integer);
var
p : TPoint;
begin
if DefaultManager.IsValidImgIndex(MaskIndex) then with DefaultManager do begin
if ma[MaskIndex].Bmp = nil then begin
p.x := (WidthOf(R) - WidthOf(ma[MaskIndex].R) div ma[MaskIndex].ImageCount) div 2;
p.y := (HeightOf(R) - HeightOf(ma[MaskIndex].R) div (1 + ma[MaskIndex].MaskType)) div 2;
end
else if (ma[MaskIndex].Bmp.Height div 2 < HeightOf(R)) then begin
p.x := (WidthOf(R) - ma[MaskIndex].Bmp.Width div 3) div 2;
p.y := (HeightOf(R) - ma[MaskIndex].Bmp.Height div 2) div 2;
end;
if (p.x < 0) or (p.y < 0) then Exit;
DrawSkinGlyph(TmpBmp, p, State, 1, ma[MaskIndex], MakeCacheInfo(TmpBmp));
end;
end;
procedure PaintPage(APart: TcxScrollBarPart; w, h : integer; NewBmp : TBitmap = nil; IsBtn : boolean = False);
var
Bmp : TBitmap;
CI : TCacheInfo;
begin
if NewBmp = nil then NewBmp := TmpBmp;
if IsBtn then BtnSize := 0 else BtnSize := GetSystemMetrics(SM_CYVSCROLL);
Bmp := CreateBmp24(w, h);
CI.Ready := False;
CI.FillColor := DefaultManager.GetGlobalColor;
with DefaultManager.ConstData do begin
if AHorizontal then begin
Bmp.Width := w + BtnSize;
if APart = sbpPageUp then begin
PaintItemFast(IndexScrollBar1H, MaskScrollBar1H, BGScrollBar1H, BGHotScrollBar1H, '', CI, True,
State, Rect(0, 0, Bmp.Width, h), Point(0, 0), Bmp, DefaultManager);
BitBlt(NewBmp.Canvas.Handle, 0, 0, w, h, Bmp.Canvas.Handle, BtnSize, 0, SRCCOPY);
end
else begin
PaintItemFast(IndexScrollBar2H, MaskScrollBar2H, BGScrollBar2H, BGHotScrollBar2H, '', CI, True,
State, Rect(0, 0, Bmp.Width, NewBmp.Height), Point(0, 0), Bmp, DefaultManager);
BitBlt(NewBmp.Canvas.Handle, 0, 0, w, h, Bmp.Canvas.Handle, 0, 0, SRCCOPY);
end;
end
else begin
Bmp.Height := h + BtnSize;
if APart = sbpPageUp then begin
PaintItemFast(IndexScrollBar1V, MaskScrollBar1V, BGScrollBar1V, BGHotScrollBar1V, '', CI, True,
State, Rect(0, 0, w, Bmp.Height), Point(0, 0), Bmp, DefaultManager);
BitBlt(NewBmp.Canvas.Handle, 0, 0, w, h, Bmp.Canvas.Handle, 0, BtnSize, SRCCOPY);
end
else begin
PaintItemFast(IndexScrollBar2V, MaskScrollBar2V, BGScrollBar2V, BGHotScrollBar2V, '', CI, True,
State, Rect(0, 0, w, Bmp.Height), Point(0, 0), Bmp, DefaultManager);
BitBlt(NewBmp.Canvas.Handle, 0, 0, w, h, Bmp.Canvas.Handle, 0, 0, SRCCOPY);
end;
end;
end;
FreeAndNil(Bmp);
end;
begin
if IsRectEmpty(R) or ((APart = sbpThumbnail) and (AState = cxbsDisabled)) then Exit;
if not Skinned then begin inherited DrawScrollBarPart(ACanvas, AHorizontal, R, APart, AState); Exit; end;
case AState of cxbsHot : State := 1; cxbsPressed : State := 2; else State := 0 end;
TmpBmp := CreateBmp24(WidthOf(R), HeightOf(R));
with DefaultManager.ConstData do begin
if AHorizontal then begin
case APart of
sbpThumbnail : begin
BGBmp := CreateBmp24(WidthOf(R) + 60, HeightOf(R));
PaintPage(sbpPageUp, BGBmp.Width, BGBmp.Height, BGBmp);
CI := MakeCacheInfo(BGBmp);
CI.X := 30;
PaintItemFast(IndexSliderHorz, MaskSliderHorz, ScrollSliderBGHorz, ScrollSliderBGHotHorz,
s_ScrollSliderH, CI, True, State, Rect(0, 0, TmpBmp.Width, TmpBmp.Height), Point(0, 0), TmpBmp, DefaultManager);
FreeAndNil(BGBmp);
PaintGlyph(DefaultManager.ConstData.MaskSliderGlyphHorz);
end;
sbpLineUp: begin
BGBmp := CreateBmp24(WidthOf(R), HeightOf(R));
PaintPage(sbpPageUp, BGBmp.Width, BGBmp.Height, BGBmp, True);
CI := MakeCacheInfo(BGBmp);
if DefaultManager.gd[IndexScrollLeft].ReservedBoolean and (DefaultManager.ConstData.MaskScrollLeft > -1) then begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -