改變整個下拉框的邊框和位置,目前暫時還沒有思路,不知道哪位大神能提供一些思路。
uj5u.com熱心網友回復:
先看看以前的帖子,找點思路http://bbs.csdn.net/topics/390285879
uj5u.com熱心網友回復:
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);
}
}
uj5u.com熱心網友回復:
二樓三樓的兩位的思路和代碼我都已經看過了,但是我個人覺得,我主要是要改變整個下拉框的位置,多載DrawItem只能改變的是下拉框中的每一項,無法完成我自己的需求.uj5u.com熱心網友回復:
版主的就可以。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/95820.html
標籤:VCL組件使用和開發
上一篇:畫若干矩形
下一篇:template模版類
