导航
  • 主页
  • Windows SDK/API
  • 基础类
  • ActiveX
  • 数据库及相关技术
  • 网络及通讯开发
  • VCL组件使用和开发
  • 问答

怎样在comboBox里放入图片(回者有分),急

mikesome 2002-09-16 04:34:53
就好像oicq选头像的那个comboBox,
...全文
9 点赞 收藏 5
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingcaiyao 2002-09-16
当然Form中ImageList中必须要有图片。
回复
kingcaiyao 2002-09-16
这简单啦,你可在OnDrawItem事件中画,不过前提是你必须将ComboBox1的Style设置成csOwnerDrawVariable,另外在桌面上放一个ImageList,详细请看代码:
#include <vcl.h>
#pragma hdrstop
#include "ComboBoxWithIcon.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
const int Margin=2;
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{

for(int i=0;i<100;i++)
{
ComboBox1->Items->Add("KK"+IntToStr(i));

}
}
void __fastcall TForm1::ComboBox1DrawItem(TWinControl *Control, int Index,
TRect &Rect, TOwnerDrawState State)
{
ComboBox1->Canvas->FillRect(Rect);
ImageList1->Draw(ComboBox1->Canvas,Rect.Left+Margin,Rect.Top+Margin,Index,true);
String Text=ComboBox1->Items->Strings[Index];
int off=(Rect.Bottom-Rect.Top-ListBox1->Canvas->TextHeight(Text))/2;
ComboBox1->Canvas->TextOut(Rect.Left+ImageList1->Width+Margin*2,Rect.Top+off,Text);


}
void __fastcall TForm1::ComboBox1MeasureItem(TWinControl *Control,
int Index, int &Height)
{
Height=ImageList1->Height+Margin*2;
}
回复
lingbin 2002-09-16
BCB6有一个ComboBoxEx控件,你只要设置它的Images和Style为csExDropDowny就可以了。
回复
gfh21cn 2002-09-16
自己画,好像是可以自己画的
回复
creativezj 2002-09-16
首先,设置ComboBox的Style属性为sOwnerDrawFixed 或者csOwnerDrawVariable.然后在OnDrawItem事件里用画它的Canvas就行了!!
回复
发动态
发帖子
C++ Builder
创建于2007-08-02

1.3w+

社区成员

C++ Builder相关内容讨论区
申请成为版主
社区公告
暂无公告