它没有显示 aTComboBox
因为您实际上没有将 设置TComboBox
为 的子控件TListView
。您所做的只是将TComboBox
指针存储为与TListItem
. 这对 UI 没有影响,所以去掉它:
for (int i = 0; i < 10; i++)
{
TListItem *items = ListView1->Items->Add();
items->Caption = IntToStr(i);
items->SubItems->Add("combo"+IntToStr(i));
}
要实际显示 的TComboBox
内部TListView
,您必须将 分配TListView
为Parent
,TComboBox
然后在需要显示时使用该SetBounds()
方法来定位和调整大小:TComboBox
ComboBox1->Parent = ListView1;
...
RECT rect = {0};
ListView_GetSubItemRect(ListView1->Handle, SomeListItem->Index, 1, LVIR_BOUNDS, &rect);
ComboBox1->SetBounds(rect.left, rect.top, rect.right-rect.left, rect.bottom-rect.top);
// update ComboBox1->Items as needed...
ComboBox1->Visible = true;
...
ComboBox1->Visible = false;
话虽如此,您尝试做的事情最好使用TValueListEditor
组件来处理。根据需要向其中添加项目,然后使用其ItemProps
属性将每个项目的TItemProp.EditStyle
属性设置为 ,然后根据需要esPickList
使用TValueListEditor.OnGetPickList
事件或TItemProp.PickList
属性来管理 ComboBox 字符串。