怎么让combobox中的一系列项目中插入分割符呢,就像菜单的分割符一样

如题
谢谢
[11 byte] By [winner8080-志在云天] at [2008-1-9]
# 1
没这功能,你自己划条"__________________"就可以
yi10000 at 2007-10-18 > top of Msdn China Tech,C++ Builder,基础类...
# 2
不想画线.画的线是可以被选中的
winner8080-志在云天 at 2007-10-18 > top of Msdn China Tech,C++ Builder,基础类...
# 3
mark
tianshanfe-武林外传 at 2007-10-18 > top of Msdn China Tech,C++ Builder,基础类...
# 4
OwnerDraw
# 5
那就只要自己做个下拉框就可以了,
yi10000 at 2007-10-18 > top of Msdn China Tech,C++ Builder,基础类...
# 6
自己自绘一个。。。。。。。。不难
wh_mimi at 2007-10-18 > top of Msdn China Tech,C++ Builder,基础类...
# 7
能具体给点例子吗,谢谢,可以多加分.别人给了我一些分,
winner8080-志在云天 at 2007-10-18 > top of Msdn China Tech,C++ Builder,基础类...
# 8
通过自画实现ComboBox的自画线,如果文本为"-",就认为是分隔线。
在窗体上添加一个ComboBox,然后在其OnDrawItem事件和OnMeasureItem事件中添加以下代码:

__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
ComboBox1->Style = csOwnerDrawVariable;
ComboBox1->ItemHeight = 16;

ComboBox1->Items->Add("aaa");
ComboBox1->Items->Add("bbb");
ComboBox1->Items->Add("-");
ComboBox1->Items->Add("ccc");
ComboBox1->Items->Add("ddd");
ComboBox1->Items->Add("eee");
ComboBox1->Items->Add("-");
ComboBox1->Items->Add("fff");
ComboBox1->Items->Add("ggg");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ComboBox1DrawItem(TWinControl *Control, int Index,
TRect &Rect, TOwnerDrawState State)
{
TComboBox *cbb = (TComboBox *)Control;

String strText = cbb->Items->Strings[Index];

if((State.Contains(odFocused) || State.Contains(odSelected))
&& cbb->Items->Strings[Index] != "-")
cbb->Canvas->Brush->Color = TColor(0x00CFB9B1);
else
cbb->Canvas->Brush->Color = clWhite;
cbb->Canvas->FillRect(Rect);
cbb->Canvas->Font->Color = clBlack;

if(cbb->Items->Strings[Index] == "-")
{
cbb->Canvas->Pen->Color = clGray;
cbb->Canvas->MoveTo(Rect.Left, Rect.Top + (Rect.Bottom - Rect.Top) / 2);
cbb->Canvas->LineTo(Rect.Right, Rect.Top + (Rect.Bottom - Rect.Top) / 2);
}
else
{
TEXTMETRIC tm;
GetTextMetrics(Canvas->Handle, &tm);
cbb->Canvas->TextOutA(Rect.Left + 3,
(Rect.Height() - tm.tmHeight) / 2 + Rect.Top - 1, strText);
}

if(State.Contains(odFocused))
cbb->Canvas->DrawFocusRect(Rect);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ComboBox1Select(TObject *Sender)
{
TComboBox *cbb = (TComboBox *)Sender;
// 如果选中的是分隔线,就将ItemIndex默认成-1,或者0,自己看
if(cbb->ItemIndex != -1 && cbb->Items->Strings[cbb->ItemIndex] == "-")
cbb->ItemIndex = -1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ComboBox1MeasureItem(TWinControl *Control,
int Index, int &Height)
{
TComboBox *cbb = (TComboBox *)Control;
if(Index > -1 && cbb->Items->Strings[Index] == "-")
Height -= 6;
}
# 9
谢谢了.揭帖
winner8080-志在云天 at 2007-10-18 > top of Msdn China Tech,C++ Builder,基础类...