⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aclfpainter.pas

📁 I mComputermaster programmisDelphi+pascal
💻 PAS
📖 第 1 页 / 共 4 页
字号:

      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 + -