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

📄 customdrawtableviewdemomain.cpp

📁 DevExpress ExpressQuantumGrid Suite v5.9 Full Source
💻 CPP
📖 第 1 页 / 共 3 页
字号:
    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 + -