13,825
社区成员
发帖
与我相关
我的任务
分享
void __fastcall TForm_CANMain::DBGrid_ListDrawColumnCell(TObject *Sender,
const TRect &Rect, int DataCol, TColumn *Column,
TGridDrawState State)
{
int widTitle_Draw,leftTitle_Draw,topTitle_Draw;
TRect rectAlarm_Draw;
AnsiString titleStr_Draw;
int penWidOld_Draw;
TBrushStyle bsOld_Draw;
TColor bColorOld_Draw,pColorOld_Draw,fColorOld_Draw;
TFontStyles fsOld_Draw;
//重画DBGrid标题栏
//if(Rect.Height()>16)
{
//保存画刷、画笔、字体样式
bsOld_Draw=this->DBGrid_List->Canvas->Brush->Style;
bColorOld_Draw=this->DBGrid_List->Canvas->Brush->Color;
pColorOld_Draw=this->DBGrid_List->Canvas->Pen->Color;
penWidOld_Draw=this->DBGrid_List->Canvas->Pen->Width;
fsOld_Draw=this->DBGrid_List->Canvas->Font->Style;
fColorOld_Draw=this->DBGrid_List->Canvas->Font->Color;
//根据列之位置设置标题内容
switch(Column->Index)
{
case 0:
titleStr_Draw="A";
break;
case 1:
titleStr_Draw="B";
break;
case 2:
titleStr_Draw="C";
break;
case 3:
titleStr_Draw="D";
break;
case 4:
titleStr_Draw="E";
break;
case 5:
titleStr_Draw="F";
break;
case 6:
titleStr_Draw="G";
break;
case 7:
titleStr_Draw="H";
break;
case 8:
titleStr_Draw="I";
break;
case 9:
titleStr_Draw="J1";
break;
case 10:
titleStr_Draw="J2";
break;
case 11:
titleStr_Draw="J3";
break;
case 12:
titleStr_Draw="J4";
break;
defalut:
titleStr_Draw=" ";
}//switch(Column->Index)
//设置DBGrid之画布——画刷及字体样式
this->DBGrid_List->Canvas->Brush->Style=bsClear;
this->DBGrid_List->Canvas->Font->Color=clWindowText;
this->DBGrid_List->Canvas->Font->Style=TFontStyles()<<fsBold;
//设置标题位置
widTitle_Draw=this->DBGrid_List->Canvas->TextWidth(titleStr_Draw);
leftTitle_Draw=Rect.left+Rect.Width()/2-widTitle_Draw/2;
if(Column->Index<9)
{
topTitle_Draw=12;
}
else
{
topTitle_Draw=25;
}//if(Column->Index<9)
//画各列标题
this->DBGrid_List->Canvas->TextOut(leftTitle_Draw,topTitle_Draw,titleStr_Draw);
if(Column->Index==9)
{
//设置DBGrid之画布——画刷及画笔样式
this->DBGrid_List->Canvas->Brush->Style=bsSolid;
this->DBGrid_List->Canvas->Brush->Color=clBtnFace;
this->DBGrid_List->Canvas->Pen->Width=2;
this->DBGrid_List->Canvas->Pen->Color=0xACA899;
//画矩形框并写标题内容
rectAlarm_Draw=TRect(Rect.left-1,-1,Rect.right+Rect.Width()*3+4,topTitle_Draw-3);
this->DBGrid_List->Canvas->Rectangle(rectAlarm_Draw);
widTitle_Draw=this->DBGrid_List->Canvas->TextWidth(titleStr_Draw);
this->DBGrid_List->Canvas->TextOut(Rect.left+Rect.Width()*1.3-widTitle_Draw/2,2," J 列");
}//if(Column->Index==9)
//恢复画刷、画笔、字体样式
this->DBGrid_List->Canvas->Brush->Style=bsOld_Draw;
this->DBGrid_List->Canvas->Brush->Color=bColorOld_Draw;
this->DBGrid_List->Canvas->Pen->Color=pColorOld_Draw;
this->DBGrid_List->Canvas->Pen->Width=penWidOld_Draw;
this->DBGrid_List->Canvas->Font->Style=fsOld_Draw;
this->DBGrid_List->Canvas->Font->Color=fColorOld_Draw;
}//if(Rect.Height()>40)
//this->DBGrid_List->DefaultDrawColumnCell(Rect, DataCol, Column, State);
}
--h
void __fastcall WndProc(Messages::TMessage &msg);
--cpp
void __fastcall TForm3::WndProc(Messages::TMessage &msg)
{
if (msg.Msg == WM_ERASEBKGND)
{
this->DBGrid_List->Invalidate();
}
TForm::WndProc(msg);
}
this->ADOQuery1->Open();
char tname[13][3] = {"A","B","C","D","E","F","G","H","I","J1","J2","J3","J4" };
for (int i = 0; i < DBGrid_List->Columns->Count; i++)
{
DBGrid_List->Columns->Items[i]->Title->Caption = tname[i];
}