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

📄 customdrawdemomain.cpp

📁 delphi的的三方控件
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "CustomDrawDemoMain.h"
#include "CustomDrawDemoData.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "cxLookAndFeels"
#pragma link "DemoBasicMain"
#pragma link "cxControls"
#pragma link "cxDBVGrid"
#pragma link "cxEdit"
#pragma link "cxEditRepositoryItems"
#pragma link "cxGraphics"
#pragma link "cxInplaceContainer"
#pragma link "cxStyles"
#pragma link "cxVGrid"
#pragma link "cxBlobEdit"
#pragma link "cxCheckBox"
#pragma link "cxHyperLinkEdit"
#pragma link "cxImageComboBox"
#pragma resource "*.dfm"
#include "CustomDrawDemoEditor.h"
TCustomDrawDemoMainForm *CustomDrawDemoMainForm;
//---------------------------------------------------------------------------
__fastcall TcxCustomDrawInfo::TcxCustomDrawInfo(TControl* AControl)
{
  FControl = AControl;
  FBitmaps = new TList();
  LoadResourceBitmaps();
  FDefaultFont = new TFont();
  FCustomDrawData = new TList();
}
//---------------------------------------------------------------------------

void TcxCustomDrawInfo::LoadResourceBitmaps()
{
  Graphics::TBitmap *ABitmap;
  for (int I = 0; I < BkImageCount; I++){
    ABitmap = new Graphics::TBitmap();
    LoadImageFromRes(ABitmap, BkImageResNames[I]);
    FBitmaps->Add(ABitmap);
  }
}
//---------------------------------------------------------------------------

__fastcall TcxCustomDrawInfo::~TcxCustomDrawInfo(void)
{
  for (int I = 0; I < FCustomDrawData->Count; I++)
    delete (TcxItemCustomDrawInfo*)FCustomDrawData->Items[I];
  for (int I = 0; I < FBitmaps->Count; I++)
    delete (Graphics::TBitmap*)FBitmaps->Items[I];
  delete FCustomDrawData;
  delete FBitmaps;
  delete FDefaultFont;
}
//---------------------------------------------------------------------------

void TcxCustomDrawInfo::AddNewItem(TCustomDrawArea ADrawArea,
  TcxItemCustomDrawType AItemType)
{
  FCustomDrawData->Add(new TcxItemCustomDrawInfo(this, ADrawArea, AItemType));
}
//---------------------------------------------------------------------------

TcxItemCustomDrawInfo* TcxCustomDrawInfo::GetItemByIndex(int AIndex)
{
  return ((TcxItemCustomDrawInfo*)FCustomDrawData->Items[AIndex]);
}
//---------------------------------------------------------------------------

Graphics::TBitmap* TcxCustomDrawInfo::GetBkBitmap(TBkImage ABkImage)
{
  return (Graphics::TBitmap*)FBitmaps->Items[int(ABkImage)];
}
//---------------------------------------------------------------------------

int TcxCustomDrawInfo::GetCount(void)
{
  return FCustomDrawData->Count;
}
//---------------------------------------------------------------------------

TcxItemCustomDrawInfo* TcxCustomDrawInfo::GetItem(TCustomDrawArea ADrawArea)
{
  TcxItemCustomDrawInfo *Result = NULL;
  for (int I = 0; I < FCustomDrawData->Count; I++)
    if (((TcxItemCustomDrawInfo*)FCustomDrawData->Items[I])->DrawArea == ADrawArea){
      Result = ((TcxItemCustomDrawInfo*)FCustomDrawData->Items[I]);
      break;
    }
  return Result;
}
//---------------------------------------------------------------------------

__fastcall TcxItemCustomDrawInfo::TcxItemCustomDrawInfo(TcxCustomDrawInfo *AOwner,
  TCustomDrawArea ADrawArea, TcxItemCustomDrawType AItemType)
{
  FOwner = AOwner;
  FDrawArea = ADrawArea;
  FItemType = AItemType;
  if (FOwner != NULL)
    FBitmap = AOwner->Bitmaps[TBkImage(0)];
  else
    FBitmap = NULL;
  if (FOwner != NULL)
    FFont = AOwner->DefaultFont;
  else
    FBitmap = NULL;
  FBkImageType = (TBkImage)0;
  FDrawingStyle = (TCustomDrawingStyle)0;
  FColorScheme = (TcxColorScheme)0;
  FIsBitmapAssigned = false;
  FIsFontAssigned = false;
}
//---------------------------------------------------------------------------

__fastcall TcxItemCustomDrawInfo::~TcxItemCustomDrawInfo()
{
  if (FIsBitmapAssigned)
    delete FBitmap;
  if (FIsFontAssigned)
    delete FFont;
}
//---------------------------------------------------------------------------

Graphics::TBitmap* TcxItemCustomDrawInfo::GetBitmap()
{
  if ((FBkImageType != bkiUserDefined || !FIsBitmapAssigned) &&
    (FOwner != NULL))
    return FOwner->Bitmaps[FBkImageType];
  else
    return FBitmap;
}
//---------------------------------------------------------------------------

TFont* TcxItemCustomDrawInfo::GetFont()
{
  return FFont;
}
//---------------------------------------------------------------------------

void TcxItemCustomDrawInfo::SetBitmap(Graphics::TBitmap *Value)
{
  if (FIsBitmapAssigned)
    delete FBitmap;
  FBitmap = Value;
  FIsBitmapAssigned = true;
  FBkImageType = bkiUserDefined;
}
//---------------------------------------------------------------------------

void TcxItemCustomDrawInfo::SetFont(TFont *Value)
{
  ((TControlAccess*)Owner->Control)->Font = Value;
  if (FIsFontAssigned)
    delete FFont;
  FFont = Value;
  FIsFontAssigned = true;
}
//---------------------------------------------------------------------------

__fastcall TCustomDrawDemoMainForm::TCustomDrawDemoMainForm(TComponent* Owner)
  : TDemoBasicMainForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TCustomDrawDemoMainForm::FormCreate(TObject *Sender)
{
  FCustomDrawInfo = new TcxCustomDrawInfo(cxDBVerticalGrid);
  AddCustomDrawInfos();
  AdjustCustomDrawItems();
}
//---------------------------------------------------------------------------

void __fastcall TCustomDrawDemoMainForm::FormShow(TObject *Sender)
{
  cxDBVerticalGrid->FullExpand();
  CustomDrawDemoEditorForm->Show();
}
//---------------------------------------------------------------------------

void __fastcall TCustomDrawDemoMainForm::actCustomizationFormExecute(
      TObject *Sender)
{
  CustomDrawDemoEditorForm->Show();
}
//---------------------------------------------------------------------------

void __fastcall TCustomDrawDemoMainForm::cxDBVerticalGridDrawBackground(
	  TObject *Sender, TcxCanvas *ACanvas, const TRect &R,
      const TcxViewParams &AViewParams, bool &Done)
{
  Done = DrawBackgroundItem(FCustomDrawInfo->Items[cdaBackground], ACanvas, R, AViewParams, Sender);
}
//---------------------------------------------------------------------------

void __fastcall TCustomDrawDemoMainForm::cxDBVerticalGridDrawRowHeader(
      TObject *Sender, TcxCanvas *ACanvas, TcxvgPainter *APainter,
      TcxCustomRowHeaderInfo *AHeaderViewInfo, bool &Done)
{
  if (dynamic_cast<TcxEditorRowHeaderInfo*>(AHeaderViewInfo))
    Done = DrawHeaderItem(FCustomDrawInfo->Items[cdaHeader], ACanvas, AHeaderViewInfo, APainter, Sender); else
  if (dynamic_cast<TcxCategoryRowHeaderInfo*>(AHeaderViewInfo))
    Done = DrawCategoryItem(FCustomDrawInfo->Items[cdaCategory], ACanvas, (TcxCategoryRowHeaderInfo*)AHeaderViewInfo,
      APainter, Sender);

/*  AHeaderViewInfo->Transparent = true;
  Done = false;*/
}
//---------------------------------------------------------------------------

void __fastcall TCustomDrawDemoMainForm::cxDBVerticalGridDrawValue(
      TObject *Sender, TcxCanvas *ACanvas, TcxvgPainter *APainter,
      TcxRowValueInfo *AValueInfo, bool &Done)
{
  Done = DrawCellItem(FCustomDrawInfo->Items[cdaCell], ACanvas, AValueInfo, APainter, Sender);
}
//---------------------------------------------------------------------------

void __fastcall TCustomDrawDemoMainForm::LayoutStyleClick(TObject *Sender)
{
  if (!((TMenuItem*)Sender)->Checked) {
    ((TMenuItem*)Sender)->Checked = true;
    cxDBVerticalGrid->LayoutStyle = (TcxvgLayoutStyle)((TMenuItem*)Sender)->Tag;
  }
}
//---------------------------------------------------------------------------

void __fastcall TCustomDrawDemoMainForm::AddCustomDrawInfos()
{
  FCustomDrawInfo->AddNewItem(cdaBackground, itNormal);
  FCustomDrawInfo->AddNewItem(cdaCategory, itNormal);
  FCustomDrawInfo->AddNewItem(cdaCell, itCell);
  FCustomDrawInfo->AddNewItem(cdaHeader, itNormal);
}
//---------------------------------------------------------------------------

void __fastcall TCustomDrawDemoMainForm::AdjustCustomDrawItems()
{
  FCustomDrawInfo->Items[cdaBackground]->BkImageType = bkiTile;
  FCustomDrawInfo->Items[cdaCategory]->DrawingStyle = cdsGradient;
  FCustomDrawInfo->Items[cdaCategory]->ColorScheme = csBlue;
  FCustomDrawInfo->Items[cdaCell]->DrawingStyle = cdsGradient;
  FCustomDrawInfo->Items[cdaHeader]->DrawingStyle = cdsDefaultDrawing;
}
//---------------------------------------------------------------------------

void __fastcall AddRectLines(TLineInfoList* ALines, const TRect &R, TColor AColor)
{
	ALines->Add(R.Left, R.Top, R.Right - R.Left, 1, AColor);

⌨️ 快捷键说明

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