BCBStringGrid中文字居中

BCBDelphi中,StringGrid中的文字無法置中,一般只能自己寫代碼来,下面的代碼可以完成這個功能,同時還支持列寬自動置中。

void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,

      int ARow, TRect &Rect, TGridDrawState State)

{

AnsiString Str=" ";

 ((TStringGrid*)Sender)->Canvas->Font=((TStringGrid*)Sender)->Font;

 for(int i=0;i<((TStringGrid*)Sender)->RowCount;i++){

     if(((TStringGrid*)Sender)->Cells[ACol][i].Length()>Str.Length())

         Str=((TStringGrid*)Sender)->Cells[ACol][i];

 }


 int colWidth=((TStringGrid*)Sender)->Canvas->TextWidth(Str)+4;

 if(colWidth>((TStringGrid*)Sender)->ColWidths[ACol])

      ((TStringGrid*)Sender)->ColWidths[ACol]=colWidth;

 if(ACol==0||ARow==0)

      ((TStringGrid*)Sender)->Canvas->Brush->Color=clBtnFace;

 else

     ((TStringGrid*)Sender)->Canvas->Brush->Color=clWhite;


  ((TStringGrid*)Sender)->Canvas->FillRect(Rect);

  DrawText(((TStringGrid*)Sender)->Canvas->Handle,((TStringGrid*)Sender)->Cells[ACol][ARow].c_str(),-1,(RECT*)&Rect,DT_SINGLELINE|DT_VCENTER|DT_CENTER);

}

arrow
arrow
    文章標籤
    BCB C++
    全站熱搜
    創作者介紹
    創作者 yao67 的頭像
    yao67

    洋芋片與羊吧@Pixnet

    yao67 發表在 痞客邦 留言(0) 人氣()