在C++Builder 中通过TDrawGrid控件绘制出的单元格能够根据窗口大小自动填充

1、创建DrawGrid控件,由于DrawGrid控件中没有OnResize事件(,所以回到窗体事件中选择OnResize事件

//当窗体大小发生改变的时候触发OnResize事件
void __fastcall TForm1::FormResize(TObject *Sender)
{
//row行,col列,通过窗体的行高和列宽计算当前窗体所需填充单元格的行列
  int rows =DrawGrid1->Height/DrawGrid1->DefaultRowHeight;

  int cols =DrawGrid1->Width/DrawGrid1->DefaultColWidth;
  DrawGrid1->RowCount = rows;
  DrawGrid1->ColCount = cols;

}

void __fastcall TForm1::DrawGrid1DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect,
          TGridDrawState State)
{
  TCanvas* Canvas = DrawGrid1->Canvas;

//进行单元格的绘制,一定要有
  Canvas ->Rectangle(Rect);
//该控件的高度和宽度,在进行自动填充的时候需要考虑到自己设置的高度和宽度能否在显示的窗口中正好完美匹配出一个单元格显示出来,如果不能就会出现图2的情况(由于不能除完,所以会有空白)

  float heigth= DrawGrid1->Height;
  float width = DrawGrid1->Width;
  AnsiString str = "H:";
  AnsiString output = str+" "+FloatToStr(heigth)+"   ";
  str = "W:";
  output+=str+""+FloatToStr(width);
  Canvas->TextOut(Rect.Left+4,Rect.Top+2,output);
  Canvas->Font->Color = clBlack;
}

对于自定义的单元格宽度和高度,可以在

void __fastcall TForm1::FormCreate(TObject *Sender)
{
  DrawGrid1->DefaultRowHeight =200;
  DrawGrid1->DefaultColWidth = 250;
}

进行设置,其实控件属性里也可以的。

                                               图1 窗口还原的样子      

 

                                              图二 窗口最大化的样子 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值