602
社区成员
发帖
与我相关
我的任务
分享
TForm1 *Form1;
const TColor colors[8] = {clBlack, clWhite, clRed, clBlue, clGreen, clYellow, clAqua, clPurple};//颜色在这里扩充
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ComboBox1DrawItem(TWinControl *Control, int Index,
TRect &Rect, TOwnerDrawState State)
{
//画颜色索引的小方块
((TComboBox *)Control)->Canvas->Brush->Color = colors[Index];
((TComboBox *)Control)->Canvas->Brush->Style = bsSolid;
((TComboBox *)Control)->Canvas->FillRect(Classes::Rect(Rect.Left+2, Rect.Top+2, Rect.Left+14, Rect.Bottom-2)); //之所以用Classes::Rect是因为与参数重名
((TComboBox *)Control)->Canvas->Pen->Color = clBlack;
((TComboBox *)Control)->Canvas->Rectangle(Rect.Left+1, Rect.Top+1, Rect.Left+15, Rect.Bottom-1);
//写文字
((TComboBox *)Control)->Canvas->Font->Color = clBlack;
((TComboBox *)Control)->Canvas->Font->Name = "宋体";
((TComboBox *)Control)->Canvas->Font->Size = 9;
((TComboBox *)Control)->Canvas->Brush->Style = bsClear;
((TComboBox *)Control)->Canvas->TextOut(Rect.Left+20, Rect.Top+2, ((TComboBox *)Control)->Items->Strings[Index]);
//标记当前鼠标所在项(焦点项)[本例中在外边画个蓝方框表示]
if(State.Contains(odFocused)){
((TComboBox *)Control)->Canvas->Pen->Color = clBlue;
((TComboBox *)Control)->Canvas->Rectangle(Rect.Left, Rect.Top, Rect.Right, Rect.Bottom);
}else{
((TComboBox *)Control)->Canvas->Pen->Color = clWhite;
((TComboBox *)Control)->Canvas->Rectangle(Rect.Left, Rect.Top, Rect.Right, Rect.Bottom);
}
}