C++ Builder XE AdvStringGrid的表格画线显示隐藏经典实例

 源码实例下载:https://download.csdn.net/download/lzksword/87904787

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "AdvGrid"
#pragma link "AdvObj"
#pragma link "BaseGrid"
#pragma resource "*.dfm"
TForm1 *Form1;
bool XSyn =false;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
AdvStringGrid1->FixedCols=0;
AdvStringGrid1->FixedRows=0;
for(int i=0;i<AdvStringGrid1->ColCount;i++)
{
     AdvStringGrid1->ColWidths[i]=22;
   for(int j=0;j<AdvStringGrid1->RowCount;j++)
   {
     AdvStringGrid1->Cells[i][j]=i;
   }
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::AdvStringGrid1DrawCell(TObject *Sender, int ACol, int ARow,
          TRect &Rect, TGridDrawState State)
{

String XStr =  AdvStringGrid1->Cells[ACol][ARow] ;
          int x=Rect.left   +   (Rect.Width()   -   AdvStringGrid1->Canvas->TextWidth(XStr))/2;   //   --   水平居中                                                                                                       //   --   垂直居上
          int y=Rect.top   +   (Rect.Height()   -   AdvStringGrid1->Canvas->TextHeight(XStr))/2;//
               AdvStringGrid1->Canvas->Pen->Color =clRed;
               AdvStringGrid1->Canvas->Brush->Color =clRed;
               AdvStringGrid1->Canvas->Ellipse(Rect);
               //
               AdvStringGrid1->Canvas->Font->Color   = clWhite;       //字体颜色
               AdvStringGrid1->Canvas->TextOutW(x,y,XStr);
if(XSyn)  //是否显示画线
{
AdvStringGrid1->Canvas->Pen->Color=clBlue;    //画线颜色
AdvStringGrid1->Canvas->Pen->Style=psSolid;   //画线样式
AdvStringGrid1->Canvas->Pen->Width=2;   //画笔粗细

  //AdvStringGrid1->Canvas->MoveTo(AdvStringGrid1->CellRect(1,1).Left/2,AdvStringGrid1->CellRect(1,1).Top/2);
  //AdvStringGrid1->Canvas->LineTo(AdvStringGrid1->CellRect(2,2).Right/2,AdvStringGrid1->CellRect(2,2).Bottom/2);
    //计算描线的坐标点
  x=AdvStringGrid1->CellRect(0,0).left+AdvStringGrid1->CellRect(0,0).Width()/2;
  y=AdvStringGrid1->CellRect(0,0).top+AdvStringGrid1->CellRect(0,0).Height()/2;
  AdvStringGrid1->Canvas->MoveTo(x,y);

  x=AdvStringGrid1->CellRect(7,1).left+AdvStringGrid1->CellRect(7,1).Width()/2;
  y=AdvStringGrid1->CellRect(7,1).top+AdvStringGrid1->CellRect(7,1).Height()/2;
  AdvStringGrid1->Canvas->LineTo(x,y);

  x=AdvStringGrid1->CellRect(3,2).left+AdvStringGrid1->CellRect(3,2).Width()/2;
  y=AdvStringGrid1->CellRect(3,2).top+AdvStringGrid1->CellRect(3,2).Height()/2;
  AdvStringGrid1->Canvas->LineTo(x,y);

  x=AdvStringGrid1->CellRect(4,3).left+AdvStringGrid1->CellRect(4,3).Width()/2;
  y=AdvStringGrid1->CellRect(4,3).top+AdvStringGrid1->CellRect(4,3).Height()/2;
  AdvStringGrid1->Canvas->LineTo(x,y);

  x=AdvStringGrid1->CellRect(0,4).left+AdvStringGrid1->CellRect(0,4).Width()/2;
  y=AdvStringGrid1->CellRect(0,4).top+AdvStringGrid1->CellRect(0,4).Height()/2;
  AdvStringGrid1->Canvas->LineTo(x,y);

  x=AdvStringGrid1->CellRect(9,5).left+AdvStringGrid1->CellRect(9,5).Width()/2;
  y=AdvStringGrid1->CellRect(9,5).top+AdvStringGrid1->CellRect(9,5).Height()/2;
  AdvStringGrid1->Canvas->LineTo(x,y);


  x=AdvStringGrid1->CellRect(8,6).left+AdvStringGrid1->CellRect(8,6).Width()/2;
  y=AdvStringGrid1->CellRect(8,6).top+AdvStringGrid1->CellRect(8,6).Height()/2;
  AdvStringGrid1->Canvas->LineTo(x,y);

    x=AdvStringGrid1->CellRect(1,7).left+AdvStringGrid1->CellRect(1,7).Width()/2;
  y=AdvStringGrid1->CellRect(1,7).top+AdvStringGrid1->CellRect(1,7).Height()/2;
  AdvStringGrid1->Canvas->LineTo(x,y);

}

}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
XSyn=true;
AdvStringGrid1->Refresh();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
XSyn=false;
AdvStringGrid1->Refresh();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lzksword

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值