📄 customdrawtableviewdemomain.pas
字号:
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 + -