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 窗口还原的样子
图二 窗口最大化的样子