请问:怎么重绘ComboBox下拉框?

chlidchen 2015-08-18 05:09:45
改变整个下拉框的边框和位置,目前暂时还没有思路,不知道哪位大神能提供一些思路。
...全文
997 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
宝龙哥 2015-08-19
  • 打赏
  • 举报
回复

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);
    }
}
xiaoxiangqing 2015-08-19
  • 打赏
  • 举报
回复
版主的就可以。
chlidchen 2015-08-19
  • 打赏
  • 举报
回复
二楼三楼的两位的思路和代码我都已经看过了,但是我个人觉得,我主要是要改变整个下拉框的位置,重载DrawItem只能改变的是下拉框中的每一项,无法完成我自己的需求.
缘中人 2015-08-18
  • 打赏
  • 举报
回复
先看看以前的帖子,找点思路 http://bbs.csdn.net/topics/390285879

602

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧