📄 aclfpainter.pas
字号:
if DefaultManager.ma[MaskScrollLeft].ImageCount = 0 then DefaultManager.ma[MaskScrollLeft].ImageCount := 3;
if DefaultManager.ma[MaskScrollLeft].Bmp = nil
then TmpBmp.Width := math.max(GetSystemMetrics(SM_CXHSCROLL), WidthOf(DefaultManager.ma[MaskScrollLeft].R) div DefaultManager.ma[MaskScrollLeft].ImageCount)
else TmpBmp.Width := math.max(GetSystemMetrics(SM_CXHSCROLL), DefaultManager.ma[DefaultManager.ConstData.MaskScrollLeft].Bmp.Width div 3);
end;
PaintItemFast(IndexScrollLeft, MaskScrollLeft, IndexBGScrollLeft, IndexBGHotScrollLeft,
s_ScrollBtnLeft, CI, True, State, Rect(0, 0, TmpBmp.Width, TmpBmp.Height), Point(0, 0), TmpBmp, DefaultManager);
FreeAndNil(BGBmp);
PaintGlyph(DefaultManager.ConstData.MaskArrowLeft);
end;
sbpLineDown: begin
BGBmp := CreateBmp24(WidthOf(R), HeightOf(R));
PaintPage(sbpPageDown, BGBmp.Width, BGBmp.Height, BGBmp, True);
CI := MakeCacheInfo(BGBmp);
if DefaultManager.gd[IndexScrollRight].ReservedBoolean and (DefaultManager.ConstData.MaskScrollRight > -1) then begin
if DefaultManager.ma[MaskScrollRight].ImageCount = 0 then DefaultManager.ma[MaskScrollRight].ImageCount := 3;
if DefaultManager.ma[MaskScrollRight].Bmp = nil
then TmpBmp.Width := math.max(GetSystemMetrics(SM_CXHSCROLL), WidthOf(DefaultManager.ma[MaskScrollRight].R) div DefaultManager.ma[MaskScrollRight].ImageCount)
else TmpBmp.Width := math.max(GetSystemMetrics(SM_CXHSCROLL), DefaultManager.ma[MaskScrollRight].Bmp.Width div 3);
end;
PaintItemFast(IndexScrollRight, MaskScrollRight, IndexBGScrollRight, IndexBGHotScrollRight,
s_ScrollBtnRight, CI, True, State, Rect(0, 0, TmpBmp.Width, TmpBmp.Height), Point(0, 0), TmpBmp, DefaultManager);
FreeAndNil(BGBmp);
BitBlt(TmpBmp.Canvas.Handle, 0, 0, WidthOf(R), HeightOf(R), TmpBmp.Canvas.Handle, TmpBmp.Width - WidthOf(R), 0, SRCCOPY);
TmpBmp.Width := WidthOf(R);
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) + 60);
PaintPage(sbpPageUp, BGBmp.Width, BGBmp.Height, BGBmp);
CI := MakeCacheInfo(BGBmp);
CI.Y := 30;
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(sbpPageUp, BGBmp.Width, BGBmp.Height, BGBmp, True);
CI := MakeCacheInfo(BGBmp);
if DefaultManager.gd[IndexScrollTop].ReservedBoolean and (DefaultManager.ConstData.MaskScrollTop > -1) then begin
if DefaultManager.ma[DefaultManager.ConstData.MaskScrollTop].Bmp = nil
then TmpBmp.Height := math.max(GetSystemMetrics(SM_CYVSCROLL), HeightOf(DefaultManager.ma[MaskScrollTop].R) div (1 + DefaultManager.ma[MaskScrollTop].MaskType))
else TmpBmp.Height := math.max(GetSystemMetrics(SM_CYVSCROLL), DefaultManager.ma[MaskScrollTop].Bmp.Height div 2);
end;
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);
FreeAndNil(BGBmp);
PaintGlyph(DefaultManager.ConstData.MaskArrowTop);
end;
sbpLineDown: begin
BGBmp := CreateBmp24(WidthOf(R), HeightOf(R));
PaintPage(sbpPageDown, BGBmp.Width, BGBmp.Height, BGBmp, True);
CI := MakeCacheInfo(BGBmp);
if DefaultManager.gd[IndexScrollBottom].ReservedBoolean and (DefaultManager.ConstData.MaskScrollBottom > -1) then begin
if DefaultManager.ma[DefaultManager.ConstData.MaskScrollBottom].Bmp = nil
then TmpBmp.Height := math.max(GetSystemMetrics(SM_CYVSCROLL), HeightOf(DefaultManager.ma[MaskScrollBottom].R) div (1 + DefaultManager.ma[MaskScrollBottom].MaskType))
else TmpBmp.Height := math.max(GetSystemMetrics(SM_CYVSCROLL), DefaultManager.ma[MaskScrollBottom].Bmp.Height div 2);
end;
PaintItemFast(IndexScrollBottom, MaskScrollBottom, IndexBGScrollBottom, IndexBGHotScrollBottom,
s_ScrollBtnBottom, CI, True, State, Rect(0, 0, TmpBmp.Width, TmpBmp.Height), Point(0, 0), TmpBmp, DefaultManager);
FreeAndNil(BGBmp);
BitBlt(TmpBmp.Canvas.Handle, 0, 0, WidthOf(R), HeightOf(R), TmpBmp.Canvas.Handle, 0, TmpBmp.Height - HeightOf(R), SRCCOPY);
TmpBmp.Height := HeightOf(R);
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, WidthOf(R), HeightOf(R), TmpBmp.Canvas.Handle, 0, 0, SRCCOPY);
// BitBlt(ACanvas.Handle, R.Left, R.Top, TmpBmp.Width, TmpBmp.Height, TmpBmp.Canvas.Handle, 0, 0, SRCCOPY);
FreeAndNil(TmpBmp);
end;
class procedure TcxACLookAndFeelPainter.DrawSizeGrip(ACanvas: TcxCanvas; const ARect: TRect; ABackgroundColor: TColor = clDefault);
begin
if Skinned then FillDC(ACanvas.Handle, ARect, DefaultManager.GetGlobalColor) else inherited;
end;
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], MakeCacheInfo(TmpBmp));
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;
Bmp : TBitmap;
CI : TCacheInfo;
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
Bmp := CreateBmp24(WidthOf(R), HeightOf(R));
CI := MakeCacheInfo(Bmp);
CI.FillColor := DefaultManager.GetGlobalColor;
FillDC(Bmp.Canvas.Handle, Rect(0, 0, Bmp.Width, Bmp.Height), CI.FillColor);
if State <> 2 then dec(R.Bottom);
PaintItem(i, s, CI, True, State, R, Point(0, 0), ACanvas.Handle, DefaultManager);
FreeAndNil(Bmp);
end;
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;
Bmp : TBitmap;
CI : TCacheInfo;
begin
if Skinned then begin
s := s_PageControl;
CI.Ready := False;
CI.FillColor := DefaultManager.GetGlobalColor;
// ParentCenterColor := DefaultManager.GetGlobalColor;
// CtrlParentColor := ParentCenterColor;
if not AVertical then begin
i := DefaultManager.GetSkinIndex(s);
if DefaultManager.IsValidSkinIndex(i) then begin
Bmp := CreateBmp24(WidthOf(R), 15);
PaintItem(i, s, CI, False, 0, Rect(0, 0, Bmp.Width, Bmp.Height), Point(0, 0), Bmp, DefaultManager);
BitBlt(ACanvas.Handle, R.Left, R.Top, Bmp.Width, 2, Bmp.Canvas.Handle, 0, 0, SRCCOPY);
FreeAndNil(Bmp);
end
else FillDC(ACanvas.Handle, R, DefaultManager.GetGlobalColor);
end
else begin
s := s + 'LEFT';
i := DefaultManager.GetSkinIndex(s);
if DefaultManager.IsValidSkinIndex(i) then begin
PaintItem(i, s, CI, False, 0, R, Point(0, 0), ACanvas.Handle, DefaultManager);
end
else FillDC(ACanvas.Handle, R, DefaultManager.GetGlobalColor);
end;
// 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 Inc(Result, 2);
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.SizeGripSize: TSize;
begin
Result := Size(GetSystemMetrics(SM_CXVSCROLL),
GetSystemMetrics(SM_CYHSCROLL));
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 + -