📄 customdrawtableviewdemomain.cpp
字号:
case vtMaster: {
switch (ACustomDrawArea) {
case cdaCell: FGridBrushMasterCell->Bitmap = Value; break;
case cdaGroupCell: FGridBrushMasterGroupCell->Bitmap = Value; break;
case cdaColumnHeader: FGridBrushMasterColumnHeader->Bitmap = Value; break;
case cdaFooterCell: FGridBrushMasterFooterCell->Bitmap = Value; break;
case cdaIndicatorCell: FGridBrushMasterIndicatorCell->Bitmap = Value; break;
case cdaPartBackGround: FGridBrushMasterPartBackground->Bitmap = Value; break;
};
};
case vtDetail: {
switch (ACustomDrawArea) {
case cdaCell: FGridBrushDetailCell->Bitmap = Value; break;
case cdaGroupCell: FGridBrushDetailGroupCell->Bitmap = Value; break;
case cdaColumnHeader: FGridBrushDetailColumnHeader->Bitmap = Value; break;
case cdaFooterCell: FGridBrushDetailFooterCell->Bitmap = Value; break;
case cdaIndicatorCell: FGridBrushDetailIndicatorCell->Bitmap = Value; break;
case cdaPartBackGround: FGridBrushMasterPartBackground->Bitmap = Value; break;
};
};
};
}
//---------------------------------------------------------------------------
TFont* __fastcall TCustomDrawTableViewDemoMainForm::GetFont(TViewType AViewType, TCustomDrawArea ACustomDrawArea)
{
return(FFonts[(int)AViewType][(int)ACustomDrawArea]);
}
//---------------------------------------------------------------------------
void __fastcall TCustomDrawTableViewDemoMainForm::SetFont(TViewType AViewType, TCustomDrawArea ACustomDrawArea, const TFont* Value)
{
FFonts[(int)AViewType][(int)ACustomDrawArea]->Assign((TPersistent*)Value);
switch (AViewType) {
case vtMaster: {
tvCars->LayoutChanged(false);
tvCars->Painter->Invalidate();
}; break;
case vtDetail: {
tvOrders->LayoutChanged(false);
tvOrders->Painter->Invalidate();
}; break;
};
}
//---------------------------------------------------------------------------
void __fastcall TCustomDrawTableViewDemoMainForm::InitFonts()
{
for(int i=0; i < 2; i++)
for(int j=0; j < 6; j++)
FFonts[i][j] = new TFont();
}
//---------------------------------------------------------------------------
void __fastcall TCustomDrawTableViewDemoMainForm::tvCarsCustomDrawCell(
TcxCustomGridTableView *Sender, TcxCanvas *ACanvas,
TcxGridTableDataCellViewInfo *AViewInfo, bool &ADone)
{
String ATextToDraw = AViewInfo->GridRecord->DisplayTexts[AViewInfo->Item->Index];
TRect ARec = AViewInfo->Bounds;
ACanvas->Canvas->Font->Assign(FFonts[(int)vtMaster][(int)cdaCell]);
switch(FCustomDrawingStyle[(int)vtMaster][(int)cdaCell]) {
case cdsBkImage: {
ACanvas->Brush->Bitmap = NULL;
ACanvas->Brush->Assign(FGridBrushMasterCell);
ACanvas->FillRect(ARec, NULL);
}; break;
case cdsGradient: {
bool AIsVertical = (FColorScheme[(int)vtMaster][(int)cdaCell] == csGrey) || (FColorScheme[(int)vtMaster][(int)cdaCell] == csGold);
DrawGradient(ACanvas->Canvas, ARec, ColorScheme[(int)FColorScheme[(int)vtMaster][(int)cdaCell]][1], ColorScheme[(int)FColorScheme[(int)vtMaster][(int)cdaCell]][0], 40, AIsVertical);
}; break;
case cdsDependsOnData: {
ACanvas->Canvas->Brush->Style = bsSolid;
ACanvas->Canvas->Brush->Color = clBlueLight;
String val = VarAsType(AViewInfo->GridRecord->DisplayTexts[tvCarsCategory->Index], varString);
if (val == "SPORTS")
ACanvas->Canvas->Font->Color = clRed;
else
if (val == "SALOON")
ACanvas->Canvas->Font->Color = clBlue;
else
if (val == "TRUCK")
ACanvas->Canvas->Font->Color = clGreen;
ACanvas->Canvas->FillRect(ARec);
}; break;
};
SetBkMode(ACanvas->Canvas->Handle, TRANSPARENT);
ADone = !((TCustomDrawingStyles() << cdsDefaultDrawing << cdsDependsOnData).Contains(FCustomDrawingStyle[(int)vtMaster][(int)cdaCell]));
if (ADone)
ACanvas->Canvas->TextOut(AViewInfo->Bounds.Left, AViewInfo->Bounds.Top, ATextToDraw);
}
//---------------------------------------------------------------------------
void __fastcall TCustomDrawTableViewDemoMainForm::tvCarsCustomDrawGroupCell(
TcxCustomGridTableView *Sender, TcxCanvas *ACanvas,
TcxGridTableCellViewInfo *AViewInfo, bool &ADone)
{
String ATextToDraw = AViewInfo->Text;
TRect ARec = AViewInfo->Bounds;
ACanvas->Canvas->Font->Assign(FFonts[(int)vtMaster][(int)cdaGroupCell]);
switch (FCustomDrawingStyle[(int)vtMaster][(int)cdaGroupCell]) {
case cdsBkImage: {
ACanvas->Brush->Bitmap = NULL;
ACanvas->Brush->Assign(FGridBrushMasterGroupCell);
ACanvas->FillRect(ARec, NULL);
}; break;
case cdsGradient: {
bool AIsVertical = (FColorScheme[(int)vtMaster][(int)cdaGroupCell] == csGrey) || (FColorScheme[(int)vtMaster][(int)cdaGroupCell] == csGold);
DrawGradient(ACanvas->Canvas, ARec, ColorScheme[(int)FColorScheme[(int)vtMaster][(int)cdaGroupCell]][1], ColorScheme[(int)FColorScheme[(int)vtMaster][(int)cdaGroupCell]][0], 40, AIsVertical);
}; break;
};
ADone = !(TCustomDrawingStyles() << cdsDefaultDrawing).Contains(FCustomDrawingStyle[(int)vtMaster][(int)cdaGroupCell]);
if(ADone) {
SetBkMode(ACanvas->Canvas->Handle, TRANSPARENT);
ARec.Left = ARec.Left + (AViewInfo->RecordViewInfo->ExpandButtonBounds.Right - AViewInfo->RecordViewInfo->ExpandButtonBounds.Left) + 10;
ARec.Top++;
ACanvas->DrawTexT(ATextToDraw, ARec, 0, true);
};
}
//---------------------------------------------------------------------------
void __fastcall TCustomDrawTableViewDemoMainForm::tvCarsCustomDrawColumnHeader(
TcxGridTableView *Sender, TcxCanvas *ACanvas,
TcxGridColumnHeaderViewInfo *AViewInfo, bool &ADone)
{
String ATextToDraw = AViewInfo->Text;
TRect ARec = AViewInfo->Bounds;
ACanvas->Canvas->Font->Assign(FFonts[(int)vtMaster][(int)cdaColumnHeader]);
switch(FCustomDrawingStyle[(int)vtMaster][(int)cdaColumnHeader]) {
case cdsBkImage: {
ACanvas->Brush->Bitmap = NULL;
ACanvas->Brush->Assign(FGridBrushMasterColumnHeader);
ACanvas->FillRect(ARec, NULL);
}; break;
case cdsGradient: {
bool AIsVertical = (FColorScheme[(int)vtMaster][(int)cdaColumnHeader] == csGrey) || (FColorScheme[(int)vtMaster][(int)cdaColumnHeader] == csGold);
DrawGradient(ACanvas->Canvas, ARec, ColorScheme[(int)FColorScheme[(int)vtMaster][(int)cdaColumnHeader]][1], ColorScheme[(int)FColorScheme[(int)vtMaster][(int)cdaColumnHeader]][0], 40, AIsVertical);
}; break;
};
SetBkMode(ACanvas->Canvas->Handle, TRANSPARENT);
ACanvas->Canvas->TextOut(AViewInfo->Bounds.Left, AViewInfo->Bounds.Top, ATextToDraw);
ADone = FCustomDrawingStyle[(int)vtMaster][(int)cdaColumnHeader] != cdsDefaultDrawing;
}
//---------------------------------------------------------------------------
void __fastcall TCustomDrawTableViewDemoMainForm::tvCarsCustomDrawFooterCell(
TcxGridTableView *Sender, TcxCanvas *ACanvas,
TcxGridColumnHeaderViewInfo *AViewInfo, bool &ADone)
{
String ATextToDraw = AViewInfo->Text;
TRect ARec = AViewInfo->Bounds;
ACanvas->Canvas->Font->Assign(FFonts[(int)vtMaster][(int)cdaFooterCell]);
switch(FCustomDrawingStyle[(int)vtMaster][(int)cdaFooterCell]) {
case cdsBkImage: {
ACanvas->Brush->Bitmap = NULL;
ACanvas->Brush->Assign(FGridBrushMasterFooterCell);
ACanvas->Canvas->FillRect(ARec);
}; break;
case cdsGradient: {
bool AIsVertical = (FColorScheme[(int)vtMaster][(int)cdaFooterCell] == csGrey) || (FColorScheme[(int)vtMaster][(int)cdaFooterCell] == csGold);
DrawGradient(ACanvas->Canvas, ARec, ColorScheme[(int)FColorScheme[(int)vtMaster][(int)cdaFooterCell]][1],
ColorScheme[(int)FColorScheme[(int)vtMaster][(int)cdaFooterCell]][0], 40, AIsVertical);
}; break;
};
SetBkMode(ACanvas->Canvas->Handle, TRANSPARENT);
ACanvas->Canvas->TextOut(AViewInfo->Bounds.Left, AViewInfo->Bounds.Top, ATextToDraw);
ADone = FCustomDrawingStyle[(int)vtMaster][(int)cdaFooterCell] != cdsDefaultDrawing;
}
//---------------------------------------------------------------------------
void __fastcall TCustomDrawTableViewDemoMainForm::tvCarsCustomDrawPartBackground(
TcxCustomGridTableView *Sender, TcxCanvas *ACanvas,
TcxCustomGridCellViewInfo *AViewInfo, bool &ADone)
{
TRect ARec = AViewInfo->Bounds;
ACanvas->Canvas->Font->Assign(FFonts[(int)vtMaster][(int)cdaPartBackGround]);
switch(FCustomDrawingStyle[(int)vtMaster][(int)cdaPartBackGround]) {
case cdsBkImage: {
ACanvas->Brush->Bitmap = NULL;
ACanvas->Brush->Assign(FGridBrushMasterPartBackground);
ACanvas->Canvas->FillRect(ARec);
}; break;
case cdsGradient: {
bool AIsVertical = (FColorScheme[(int)vtMaster][(int)cdaPartBackGround] == csGrey) ||
(FColorScheme[(int)vtMaster][(int)cdaPartBackGround] == csGold);
DrawGradient(ACanvas->Canvas, ARec, ColorScheme[(int)FColorScheme[(int)vtMaster][(int)cdaPartBackGround]][1],
ColorScheme[(int)FColorScheme[(int)vtMaster][(int)cdaPartBackGround]][0], 40, AIsVertical);
}; break;
};
ADone = FCustomDrawingStyle[(int)vtMaster][(int)cdaPartBackGround] != cdsDefaultDrawing;
}
//---------------------------------------------------------------------------
void __fastcall TCustomDrawTableViewDemoMainForm::tvOrdersCustomDrawCell(
TcxCustomGridTableView *Sender, TcxCanvas *ACanvas,
TcxGridTableDataCellViewInfo *AViewInfo, bool &ADone)
{
String ATextToDraw = AViewInfo->GridRecord->DisplayTexts[AViewInfo->Item->Index];
TRect ARec = AViewInfo->Bounds;
ACanvas->Canvas->Font->Assign(FFonts[(int)vtDetail][(int)cdaCell]);
switch(FCustomDrawingStyle[(int)vtDetail][(int)cdaCell]) {
case cdsBkImage: {
ACanvas->Brush->Bitmap = NULL;
ACanvas->Brush->Assign(FGridBrushDetailCell);
ACanvas->Canvas->FillRect(ARec);
}; break;
case cdsGradient: {
bool AIsVertical = (FColorScheme[(int)vtDetail][(int)cdaCell] == csGrey) || (FColorScheme[(int)vtDetail][(int)cdaCell] == csGold);
DrawGradient(ACanvas->Canvas, ARec, ColorScheme[(int)FColorScheme[(int)vtDetail][(int)cdaCell]][1], ColorScheme[(int)FColorScheme[(int)vtDetail][(int)cdaCell]][0], 40, AIsVertical);
}; break;
case cdsDependsOnData: {
ACanvas->Canvas->Brush->Style = bsSolid;
ACanvas->Canvas->Brush->Color = clBlueLight;
String val = VarAsType(AViewInfo->GridRecord->DisplayTexts[tvOrdersPaymentType->Index], varString);
if (val == "Master Card")
ACanvas->Canvas->Font->Color = clRed;
else
if (val == "American Express")
ACanvas->Canvas->Font->Color = clBlue;
else
if (val == "Cash")
ACanvas->Canvas->Font->Color = clGreen;
if (val == "Visa Card")
ACanvas->Canvas->Font->Color = clFuchsia;
ACanvas->Canvas->FillRect(ARec);
}; break;
};
SetBkMode(ACanvas->Canvas->Handle, TRANSPARENT);
ADone = !((TCustomDrawingStyles() << cdsDefaultDrawing << cdsDependsOnData).Contains(FCustomDrawingStyle[(int)vtDetail][(int)cdaCell]));
if (ADone)
ACanvas->Canvas->TextOut(AViewInfo->Bounds.Left, AViewInfo->Bounds.Top, ATextToDraw);
}
//---------------------------------------------------------------------------
void __fastcall TCustomDrawTableViewDemoMainForm::tvOrdersCustomDrawGroupCell(
TcxCustomGridTableView *Sender, TcxCanvas *ACanvas,
TcxGridTableCellViewInfo *AViewInfo, bool &ADone)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -