📄 aclfpainter.pas
字号:
end;
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 DefaultManager.gd[IndexScrollRight].ReservedBoolean and not (APart in [sbpPageUp, sbpPageDown, sbpThumbnail]) then begin
PaintItem(DefaultManager.GetSkinIndex(s_Button),
s_Button, EmptyCI, True,
State, Rect(0, 0, TmpBmp.Width, TmpBmp.Height), Point(0, 0), TmpBmp, DefaultManager);
end;
if AHorizontal then begin
case APart of
sbpThumbnail : begin
BGBmp := CreateBmp24(WidthOf(R), HeightOf(R));
PaintPage(sbpPageUp, BGBmp.Width, BGBmp.Height, BGBmp);
CI := MakeCacheInfo(BGBmp);
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(sbpPagedown, BGBmp.Width, BGBmp.Height, BGBmp);
CI := MakeCacheInfo(BGBmp);
if not DefaultManager.gd[IndexScrollLeft].ReservedBoolean then begin
PaintItemFast(IndexScrollLeft, MaskScrollLeft, IndexBGScrollLeft, IndexBGHotScrollLeft,
s_ScrollBtnLeft, CI, True,
State, Rect(0, 0, TmpBmp.Width, TmpBmp.Height), Point(0, 0), TmpBmp, DefaultManager);
end;
FreeAndNil(BGBmp);
PaintGlyph(DefaultManager.ConstData.MaskArrowLeft);
end;
sbpLineDown: begin
BGBmp := CreateBmp24(WidthOf(R), HeightOf(R));
PaintPage(sbpPageUp, BGBmp.Width, BGBmp.Height, BGBmp);
CI := MakeCacheInfo(BGBmp);
if not DefaultManager.gd[IndexScrollLeft].ReservedBoolean then begin
PaintItemFast(IndexScrollRight, MaskScrollRight, IndexBGScrollRight, IndexBGHotScrollRight,
s_ScrollBtnRight, CI, True,
State, Rect(0, 0, TmpBmp.Width, TmpBmp.Height), Point(0, 0), TmpBmp, DefaultManager);
end;
FreeAndNil(BGBmp);
PaintGlyph(DefaultManager.ConstData.MaskArrowRight);
end;
sbpPageUp, sbpPageDown: begin
PaintPage(APart, TmpBmp.Width, TmpBmp.Height);
end;
end;
end
else begin
case APart of
sbpThumbnail : begin
BGBmp := CreateBmp24(WidthOf(R), HeightOf(R));
PaintPage(sbpPageUp, BGBmp.Width, BGBmp.Height, BGBmp);
CI := MakeCacheInfo(BGBmp);
PaintItemFast(IndexSliderVert, MaskSliderVert,
ScrollSliderBGVert, ScrollSliderBGHotVert,
s_ScrollSliderV, CI, True,
State, Rect(0, 0, TmpBmp.Width, TmpBmp.Height), Point(0, 0), TmpBmp, DefaultManager);
FreeAndNil(BGBmp);
PaintGlyph(DefaultManager.ConstData.MaskSliderGlyphVert);
end;
sbpLineUp: begin
BGBmp := CreateBmp24(WidthOf(R), HeightOf(R));
PaintPage(sbpPageDown, BGBmp.Width, BGBmp.Height, BGBmp);
CI := MakeCacheInfo(BGBmp);
if not DefaultManager.gd[IndexScrollLeft].ReservedBoolean then begin
PaintItemFast(DefaultManager.ConstData.IndexScrollTop, DefaultManager.ConstData.MaskScrollTop, DefaultManager.ConstData.IndexBGScrollTop, IndexBGHotScrollTop,
s_ScrollBtnTop, CI, True,
State, Rect(0, 0, TmpBmp.Width, TmpBmp.Height), Point(0, 0), TmpBmp, DefaultManager);
end;
FreeAndNil(BGBmp);
PaintGlyph(DefaultManager.ConstData.MaskArrowTop);
end;
sbpLineDown: begin
BGBmp := CreateBmp24(WidthOf(R), HeightOf(R));
PaintPage(sbpPageUp, BGBmp.Width, BGBmp.Height, BGBmp);
CI := MakeCacheInfo(BGBmp);
if not DefaultManager.gd[IndexScrollLeft].ReservedBoolean then begin
PaintItemFast(IndexScrollBottom, MaskScrollBottom, IndexBGScrollBottom, IndexBGHotScrollBottom,
s_ScrollBtnBottom, CI, True,
State, Rect(0, 0, TmpBmp.Width, TmpBmp.Height), Point(0, 0), TmpBmp, DefaultManager);
end;
FreeAndNil(BGBmp);
PaintGlyph(DefaultManager.ConstData.MaskArrowBottom);
end;
sbpPageUp, sbpPageDown: begin
PaintPage(APart, TmpBmp.Width, TmpBmp.Height);
end;
end;
end;
end;
BitBlt(ACanvas.Handle, R.Left, R.Top, TmpBmp.Width, TmpBmp.Height, TmpBmp.Canvas.Handle, 0, 0, SRCCOPY);
FreeAndNil(TmpBmp);
end;
{$IFDEF DEVEX6}
class procedure TcxACLookAndFeelPainter.DrawSizeGrip(ACanvas: TcxCanvas; const ARect: TRect; ABackgroundColor: TColor);
begin
if Skinned then begin
FillDC(ACanvas.Handle, ARect, DefaultManager.GetGlobalColor)
end
else inherited;
end;
{$ENDIF}
class procedure TcxACLookAndFeelPainter.DrawSortingMark(ACanvas: TcxCanvas; const R: TRect; AAscendingSorting: Boolean);
var
State : integer;
TmpBmp : TBitmap;
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]);
end;
end;
begin
if not Skinned then begin inherited; Exit end;
TmpBmp := CreateBmp24(WidthOf(R), HeightOf(R));
BitBlt(TmpBmp.Canvas.Handle, 0, 0, TmpBmp.Width, TmpBmp.Height, ACanvas.Handle, R.Left, R.Top, SRCCOPY);
if AAscendingSorting
then PaintGlyph(DefaultManager.ConstData.MaskArrowBottom)
else PaintGlyph(DefaultManager.ConstData.MaskArrowtop);
BitBlt(ACanvas.Handle, R.Left, R.Top, TmpBmp.Width, TmpBmp.Height, TmpBmp.Canvas.Handle, 0, 0, SRCCOPY);
FreeAndNil(TmpBmp)
end;
class procedure TcxACLookAndFeelPainter.DrawTab(ACanvas: TcxCanvas; R: TRect; ABorders: TcxBorders; const AText: string;
AState: TcxButtonState; AVertical: Boolean; AFont: TFont; ATextColor, ABkColor: TColor; AShowPrefix: Boolean);
var
i : integer;
State : integer;
s : string;
begin
if Skinned then begin
case AState of cxbsHot : State := 1; cxbsPressed : State := 2; else State := 0 end;
ParentCenterColor := DefaultManager.GetGlobalColor;
CtrlParentColor := ParentCenterColor;
if AVertical then s := s_TabLeft else s := s_TabTop;
i := DefaultManager.GetSkinIndex(s);
if DefaultManager.IsValidSkinIndex(i) then begin
PaintItem(i, s, EmptyCI, True, State, R, Point(0, 0), ACanvas.Handle, DefaultManager);
end;
if AVertical then i := DefaultManager.GetSkinIndex(s_PageControl) else i := DefaultManager.GetSkinIndex(s_PageControl + 'LEFT');
if State = 0
then ACanvas.Font.Color := DefaultManager.gd[i].FontColor[1]
else ACanvas.Font.Color := DefaultManager.gd[i].HotFontColor[1];
ACanvas.Brush.Style := bsClear;
DrawText(ACanvas.Handle, PAnsiChar(AText), Length(AText), R, DT_EXPANDTABS + DT_VCENTER + DT_CENTER + DT_SINGLELINE);
ParentCenterColor := clFuchsia;
CtrlParentColor := clFuchsia;
end
else inherited;
end;
class procedure TcxACLookAndFeelPainter.DrawTabBorder(ACanvas: TcxCanvas; R: TRect; ABorder: TcxBorder; ABorders: TcxBorders; AVertical: Boolean);
begin
if not Skinned then inherited;
end;
class procedure TcxACLookAndFeelPainter.DrawTabsRoot(ACanvas: TcxCanvas; const R: TRect; ABorders: TcxBorders; AVertical: Boolean);
var
i : integer;
s : string;
begin
if Skinned then begin
s := s_PageControl;
if AVertical then s := s + 'LEFT';
i := DefaultManager.GetSkinIndex(s);
ParentCenterColor := DefaultManager.GetGlobalColor;
CtrlParentColor := ParentCenterColor;
if DefaultManager.IsValidSkinIndex(i) then begin
PaintItem(i, s, EmptyCI, False, 0, R, Point(0, 0), ACanvas.Handle, DefaultManager);
end
else FillDC(ACanvas.Handle, R, DefaultManager.GetGlobalColor);
ParentCenterColor := clFuchsia;
CtrlParentColor := clFuchsia;
end
else inherited DrawTabsRoot(ACanvas, R, ABorders, AVertical);
end;
class function TcxACLookAndFeelPainter.ExpandButtonSize: Integer;
begin
Result := inherited ExpandButtonSize;
if Skinned then begin
Inc(Result, 2);
end
end;
class function TcxACLookAndFeelPainter.FilterActivateButtonSize: TPoint;
var
i : integer;
begin
if Skinned then begin
i := DefaultManager.GetSkinIndex(s_GlobalInfo);
i := DefaultManager.GetMaskIndex(i, s_GlobalInfo, s_SmallBoxChecked);
if i < 0 then i := DefaultManager.GetMaskIndex(i, s_GlobalInfo, s_CheckBoxChecked);
if DefaultManager.IsValidImgIndex(i) then begin
Result.x := WidthOf(DefaultManager.ma[i].R) div DefaultManager.ma[i].ImageCount;
Result.y := HeightOf(DefaultManager.ma[i].R) div (DefaultManager.ma[i].MaskType + 1);
end
else Result := inherited FilterCloseButtonSize;
end
else Result := inherited FilterCloseButtonSize;
end;
class function TcxACLookAndFeelPainter.FilterCloseButtonSize: TPoint;
var
i : integer;
begin
if Skinned then begin
i := DefaultManager.GetSkinIndex(s_GlobalInfo);
i := DefaultManager.GetMaskIndex(i, s_GlobalInfo, s_BorderIconClose);
if DefaultManager.IsValidImgIndex(i) then begin
Result.x := WidthOf(DefaultManager.ma[i].R) div DefaultManager.ma[i].ImageCount;
Result.y := HeightOf(DefaultManager.ma[i].R) div (DefaultManager.ma[i].MaskType + 1);
end
else Result := inherited FilterCloseButtonSize;
end
else Result := inherited FilterCloseButtonSize;
end;
class function TcxACLookAndFeelPainter.FilterDropDownButtonSize: TPoint;
var
i : integer;
begin
if Skinned then begin
i := DefaultManager.GetSkinIndex(s_ComboBox);
i := DefaultManager.GetMaskIndex(i, s_ComboBox, s_ItemGlyph);
if DefaultManager.IsValidImgIndex(i) then begin
Result.x := WidthOf(DefaultManager.ma[i].R) div DefaultManager.ma[i].ImageCount;
Result.y := HeightOf(DefaultManager.ma[i].R) div (DefaultManager.ma[i].MaskType + 1) + 1;
end
else Result := inherited FilterCloseButtonSize;
end
else Result := inherited FilterCloseButtonSize;
end;
class function TcxACLookAndFeelPainter.FooterBorderSize: Integer;
begin
if Skinned then Result := 0 else Result := inherited FooterBorderSize
end;
class function TcxACLookAndFeelPainter.HeaderBorders(ANeighbors: TcxNeighbors): TcxBorders;
begin
Result := cxBordersAll;
end;
class function TcxACLookAndFeelPainter.HeaderBorderSize: Integer;
begin
if Skinned then Result := 2 else Result := inherited HeaderBorderSize
end;
class function TcxACLookAndFeelPainter.IsButtonHotTrack: Boolean;
begin
if Skinned then Result := True else Result := inherited IsButtonHotTrack
end;
class function TcxACLookAndFeelPainter.IsDrawTabImplemented(AVertical: Boolean): Boolean;
begin
if Skinned
then Result := True
else Result := inherited IsDrawTabImplemented(AVertical)
end;
class function TcxACLookAndFeelPainter.IsHeaderHotTrack: Boolean;
begin
if Skinned then Result := False{True} else Result := inherited IsHeaderHotTrack
end;
class function TcxACLookAndFeelPainter.IsTabHotTrack(AVertical: Boolean): Boolean;
begin
if Skinned then Result := True else Result := inherited IsTabHotTrack(AVertical)
end;
class function TcxACLookAndFeelPainter.TabBorderSize(AVertical: Boolean): Integer;
begin
Result := inherited TabBorderSize(AVertical);
if Skinned then inc(Result)
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -