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

📄 customdrawtableviewdemomain.pas

📁 胜天进销存源码,国产优秀的进销存
💻 PAS
📖 第 1 页 / 共 3 页
字号:
    end;
  end;

  InflateRect(ARec, -cxGridCellTextOffset, -cxGridCellTextOffset);
  SetBkMode(ACanvas.Canvas.Handle, TRANSPARENT);
  ACanvas.DrawText(ATextToDraw, ARec, 0);

  ADone := FCustomDrawingStyle[Integer(vtMaster), Integer(cdaFooterCell)] <> cdsDefaultDrawing;
end;

procedure TCustomDrawTableViewDemoMainForm.tvCarsCustomDrawPartBackground(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxCustomGridCellViewInfo; var ADone: Boolean);
var
  ARec: TRect;
  AIsVertical: Boolean;
begin
  ARec := AViewInfo.Bounds;
  ACanvas.Canvas.Font.Assign(FFonts[Integer(vtMaster), Integer(cdaPartBackground)]);
  case FCustomDrawingStyle[Integer(vtMaster), Integer(cdaPartBackground)] of
    cdsBkImage:
    begin
      ACanvas.Brush.Bitmap := nil;
      ACanvas.Brush.Assign(FGridBrushMasterPartBackground);
      ACanvas.Canvas.FillRect(ARec);
      ACanvas.Brush.Bitmap := nil;
    end;
    cdsGradient:
    begin
      AIsVertical := (FColorScheme[Integer(vtMaster), Integer(cdaPartBackground)] = csGrey) or
        (FColorScheme[Integer(vtMaster), Integer(cdaPartBackground)] = csGold);
      DrawGradient(ACanvas.Canvas, ARec, ColorScheme[Integer(FColorScheme[Integer(vtMaster), Integer(cdaPartBackground)]), 1],
         ColorScheme[Integer(FColorScheme[Integer(vtMaster), Integer(cdaPartBackground)]), 0], 40, AIsVertical)
    end;
  end;

  ADone := FCustomDrawingStyle[Integer(vtMaster), Integer(cdaPartBackground)] <> cdsDefaultDrawing;
end;

procedure TCustomDrawTableViewDemoMainForm.tvOrdersCustomDrawColumnHeader(
  Sender: TcxGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean);
var
  ARec: TRect;
  ATextToDraw: String;
  AIsVertical: Boolean;
begin
  ATextToDraw := AViewInfo.Text;
  ARec := AViewInfo.Bounds;
  ACanvas.Canvas.Font.Assign(FFonts[Integer(vtDetail), Integer(cdaColumnHeader)]);
  case FCustomDrawingStyle[Integer(vtDetail), Integer(cdaColumnHeader)] of
    cdsBkImage:
    begin
      ACanvas.Brush.Bitmap := nil;
      ACanvas.Brush.Assign(FGridBrushDetailColumnHeader);
      ACanvas.Canvas.FillRect(ARec);
      ACanvas.Brush.Bitmap := nil;
    end;
    cdsGradient:
    begin
      AIsVertical := (FColorScheme[Integer(vtDetail), Integer(cdaColumnHeader)] = csGrey) or
        (FColorScheme[Integer(vtDetail), Integer(cdaColumnHeader)] = csGold);
      DrawGradient(ACanvas.Canvas, ARec, ColorScheme[Integer(FColorScheme[Integer(vtDetail), Integer(cdaColumnHeader)]), 1],
        ColorScheme[Integer(FColorScheme[Integer(vtDetail), Integer(cdaColumnHeader)]), 0], 40, AIsVertical);
    end;
    cdsDependOnData:
    begin
      ACanvas.Canvas.Brush.Style := bsSolid;
      ACanvas.Canvas.Brush.Color := clBlueLight;
      ACanvas.Canvas.FillRect(ARec);
    end;
  end;

  InflateRect(ARec, -cxGridCellTextOffset, -cxGridCellTextOffset);
  SetBkMode(ACanvas.Canvas.Handle, TRANSPARENT);
  ACanvas.DrawText(ATextToDraw, ARec, 0);

  ADone := FCustomDrawingStyle[Integer(vtDetail), Integer(cdaColumnHeader)] <> cdsDefaultDrawing;
end;

procedure TCustomDrawTableViewDemoMainForm.tvOrdersCustomDrawFooterCell(
  Sender: TcxGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean);
var
  ARec: TRect;
  ATextToDraw: String;
  AIsVertical: Boolean;
begin
  ATextToDraw := AViewInfo.Text;
  ARec := AViewInfo.Bounds;
  ACanvas.Canvas.Font.Assign(FFonts[Integer(vtDetail), Integer(cdaFooterCell)]);
  case FCustomDrawingStyle[Integer(vtDetail), Integer(cdaFooterCell)] of
    cdsBkImage:
    begin
      ACanvas.Brush.Bitmap := nil;
      ACanvas.Brush.Assign(FGridBrushDetailFooterCell);
      ACanvas.Canvas.FillRect(ARec);
      ACanvas.Brush.Bitmap := nil;
    end;
    cdsGradient:
    begin
      AIsVertical := (FColorScheme[Integer(vtDetail), Integer(cdaFooterCell)] = csGrey) or
        (FColorScheme[Integer(vtDetail), Integer(cdaFooterCell)] = csGold);
      DrawGradient(ACanvas.Canvas, ARec, ColorScheme[Integer(FColorScheme[Integer(vtDetail), Integer(cdaFooterCell)]), 1],
        ColorScheme[Integer(FColorScheme[Integer(vtDetail), Integer(cdaFooterCell)]), 0], 40, AIsVertical)
    end;
  end;

  InflateRect(ARec, -cxGridCellTextOffset, -cxGridCellTextOffset);
  SetBkMode(ACanvas.Canvas.Handle, TRANSPARENT);
  ACanvas.DrawText(ATextToDraw, ARec, 0);

  ADone := FCustomDrawingStyle[Integer(vtDetail), Integer(cdaFooterCell)] <> cdsDefaultDrawing;
end;

procedure TCustomDrawTableViewDemoMainForm.tvOrdersCustomDrawPartBackground(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxCustomGridCellViewInfo; var ADone: Boolean);
var
  ARec: TRect;
  AIsVertical: Boolean;
begin
  ARec := AViewInfo.Bounds;
  ACanvas.Canvas.Font.Assign(FFonts[Integer(vtDetail), Integer(cdaPartBackground)]);
  case FCustomDrawingStyle[Integer(vtDetail), Integer(cdaPartBackground)] of
    cdsBkImage:
    begin
      ACanvas.Brush.Bitmap := nil;
      ACanvas.Brush.Assign(FGridBrushDetailPartBackground);
      ACanvas.Canvas.FillRect(ARec);
      ACanvas.Brush.Bitmap := nil;
    end;
    cdsGradient:
    begin
      AIsVertical := (FColorScheme[Integer(vtDetail), Integer(cdaPartBackground)] = csGrey) or
        (FColorScheme[Integer(vtDetail), Integer(cdaPartBackground)] = csGold);
      DrawGradient(ACanvas.Canvas, ARec, ColorScheme[Integer(FColorScheme[Integer(vtDetail), Integer(cdaPartBackground)]),1],
        ColorScheme[Integer(FColorScheme[Integer(vtDetail), Integer(cdaPartBackground)]), 0], 40, AIsVertical)
    end;
  end;

  ADone := FCustomDrawingStyle[Integer(vtDetail), Integer(cdaPartBackground)] <> cdsDefaultDrawing;
end;

function TCustomDrawTableViewDemoMainForm.GetCustomBkImage(
  AViewType: TViewType; ACustomDrawArea: TCustomDrawArea): TBkImage;
begin
  Result := FBkImages[Integer(AViewType), Integer(ACustomDrawArea)];
end;

procedure TCustomDrawTableViewDemoMainForm.SetCustomBkImage(
  AViewType: TViewType; ACustomDrawArea: TCustomDrawArea; AValue: TBkImage);
  function GetImage: TBitMap;
  begin
    Result := nil;
    case AValue of
      bkiTile: Result := FTileBitmap;
      bkiSky: Result := FSkyBitmap;
      bkiEgypt: Result := FEgyptBitmap;
      bkiMyFace: Result := FMyFaceBitmap;
    end;
  end;
begin
  if AValue <> bkiUserDefined then
  begin
    if FBkImages[Integer(AViewType), Integer(ACustomDrawArea)] <> AValue then
    begin
      FBkImages[Integer(AViewType), Integer(ACustomDrawArea)] := AValue;
      case AViewType of
        vtMaster:
        begin
          case ACustomDrawArea of
            cdaCell: FGridBrushMasterCell.Bitmap := GetImage;
            cdaGroupCell: FGridBrushMasterGroupCell.Bitmap := GetImage;
            cdaColumnHeader: FGridBrushMasterColumnHeader.Bitmap := GetImage;
            cdaFooterCell: FGridBrushMasterFooterCell.Bitmap := GetImage;
            cdaIndicatorCell: FGridBrushMasterIndicatorCell.Bitmap := GetImage;
            cdaPartBackGround: FGridBrushMasterPartBackGround.Bitmap := GetImage;
          end;
          tvCars.LayoutChanged(False);
          tvCars.Painter.Invalidate;
        end;
        vtDetail:
        begin
          case ACustomDrawArea of
            cdaCell: FGridBrushDetailCell.Bitmap := GetImage;
            cdaGroupCell: FGridBrushDetailGroupCell.Bitmap := GetImage;
            cdaColumnHeader: FGridBrushDetailColumnHeader.Bitmap := GetImage;
            cdaFooterCell: FGridBrushDetailFooterCell.Bitmap := GetImage;
            cdaIndicatorCell: FGridBrushDetailIndicatorCell.Bitmap := GetImage;
            cdaPartBackGround: FGridBrushDetailPartBackGround.Bitmap := GetImage;
          end;
          tvOrders.LayoutChanged(False);
          tvOrders.Painter.Invalidate;
        end;
      end;
    end;
  end
  else
  begin
    FBkImages[Integer(AViewType), Integer(ACustomDrawArea)] := AValue;
    case AViewType of
      vtMaster:
      begin
        tvCars.LayoutChanged(False);
        tvCars.Painter.Invalidate;
      end;
      vtDetail:
      begin
        tvOrders.LayoutChanged(False);
        tvOrders.Painter.Invalidate;
      end;
    end;
  end;
end;

function TCustomDrawTableViewDemoMainForm.GetCustomColorScheme(
  AViewType: TViewType; ACustomDrawArea: TCustomDrawArea): TColorScheme;
begin
  Result := FColorScheme[Integer(AViewType), Integer(ACustomDrawArea)];
end;

procedure TCustomDrawTableViewDemoMainForm.SetCustomColorScheme(
  AViewType: TViewType; ACustomDrawArea: TCustomDrawArea;
  const Value: TColorScheme);
begin
  if FColorScheme[Integer(AViewType), Integer(ACustomDrawArea)] <> Value then
  begin
    FColorScheme[Integer(AViewType), Integer(ACustomDrawArea)] := Value;
    case AViewType of
      vtMaster:
      begin
        tvCars.LayoutChanged(False);
        tvCars.Painter.Invalidate;
      end;
      vtDetail:
      begin
        tvOrders.LayoutChanged(False);
        tvOrders.Painter.Invalidate;
      end;
    end;
  end;
end;

procedure TCustomDrawTableViewDemoMainForm.SetUserDefineBitmap(
  AViewType: TViewType; ACustomDrawArea: TCustomDrawArea;
  const Value: TBitmap);
begin
  case AViewType of
    vtMaster:
    begin
      case ACustomDrawArea of
        cdaCell: FGridBrushMasterCell.Bitmap := Value;
        cdaGroupCell: FGridBrushMasterGroupCell.Bitmap := Value;
        cdaColumnHeader: FGridBrushMasterColumnHeader.Bitmap := Value;
        cdaFooterCell: FGridBrushMasterFooterCell.Bitmap := Value;
        cdaIndicatorCell: FGridBrushMasterIndicatorCell.Bitmap := Value;
        cdaPartBackGround: FGridBrushMasterPartBackGround.Bitmap := Value;
      end;
    end;
    vtDetail:
    begin
      case ACustomDrawArea of
        cdaCell: FGridBrushDetailCell.Bitmap := Value;
        cdaGroupCell: FGridBrushDetailGroupCell.Bitmap := Value;
        cdaColumnHeader: FGridBrushDetailColumnHeader.Bitmap := Value;
        cdaFooterCell: FGridBrushDetailFooterCell.Bitmap := Value;
        cdaIndicatorCell: FGridBrushDetailIndicatorCell.Bitmap := Value;
        cdaPartBackGround: FGridBrushDetailPartBackGround.Bitmap := Value;
      end;
    end;
  end;
end;

function TCustomDrawTableViewDemoMainForm.GetFont(AViewType: TViewType;
  ACustomDrawArea: TCustomDrawArea): TFont;
begin
  Result := FFonts[Integer(AViewType), Integer(ACustomDrawArea)];
end;

procedure TCustomDrawTableViewDemoMainForm.SetFont(AViewType: TViewType;
  ACustomDrawArea: TCustomDrawArea; const Value: TFont);
begin
  FFonts[Integer(AViewType), Integer(ACustomDrawArea)].Assign(Value);
  case AViewType of
    vtMaster:
    begin
      tvCars.LayoutChanged(False);
      tvCars.Painter.Invalidate;
    end;
    vtDetail:
    begin
      tvOrders.LayoutChanged(False);
      tvOrders.Painter.Invalidate;
    end;
  end;
end;

function TCustomDrawTableViewDemoMainForm.GetIndicatorImageIndex(
  AViewType: TViewType): Integer;
begin
  Result := FIndicatorImageIndex[Integer(AViewType)];
end;

procedure TCustomDrawTableViewDemoMainForm.SetIndicatorImageIndex(
  AViewType: TViewType; const Value: Integer);
begin
  if FIndicatorImageIndex[Integer(AViewType)] <> Value then
  begin
    FIndicatorImageIndex[Integer(AViewType)] := Value;
    case AViewType of
      vtMaster:
      begin
        tvCars.LayoutChanged(False);
        tvCars.Painter.Invalidate;
      end;
      vtDetail:
      begin
        tvOrders.LayoutChanged(False);
        tvOrders.Painter.Invalidate;
      end;
    end;
  end
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -