在c++ Builder XE8中显示/添加项目到某些组合框
Show/Add an Item from/to Some ComboBoxs in C++ Builder XE8
我需要你的帮助来解决我的两个问题。
我使用3个组合框(CB)。当从第一个CB中选择一个项目时,然后选择第二个&第三个CB会自动出现
在Delphi中,所有设置都可以通过"Text"属性很好地工作。
第一个CB包含:
Google
Yahoo
第二个CB包含:
8.8.8.8
9.9.9.9
第三个CB包含:
8888
9999
下面是我在Delphi上的代码:
procedure TForm.1stCBChange(Sender: TObject);
begin
if 1stCB.Text = 'Google' then begin
2ndCB.Text := '8.8.8.8';
3rdCB.Text := '8888';
end else
if 1stCB.Text = 'Yahoo' then begin
2ndCB.Text := '9.9.9.9';
3rdCB.Text := '9999';
end;
end;
问题是,在c++ Builder XE8上,它不能通过"Text"属性正常工作。换句话说,第二次世界大战第三个CB的项目没有通过"Text"属性显示。
void __fastcall TForm::1stCBChange(TObject *Sender)
{
if (1stCBChange->Text == "Google")
{
2ndCB->Text = "8.8.8.8";
3rdCB->Text = "8888";
}
else
if (1stCBChange->Text == "Yahoo")
{
2ndCB->Text = "9.9.9.9";
3rdCB->Text = "9999";
}
}
所以要使它工作,我必须使用"ItemIndex"属性。
void __fastcall TForm::1stCBChange(TObject *Sender)
{
if (1stCBChange->ItemIndex == 0)
{
2ndCB->ItemIndex = IntToStr(0);
// or 2ndCB->ItemIndex = 0;
3rdCB->ItemIndex = IntToStr(0);
}
else
if (1stCBChange->ItemIndex == 1)
{
2ndCB->ItemIndex = IntToStr(1);
3rdCB->ItemIndex = IntToStr(1);
}
}
我已经尝试了一些方法,但不工作,例如2ndCB->Items->Objects[1] = (TObject*) new String("8.8.8.8");
或2ndCB->Items->AddObject("8.8.8.8",2ndCB);
等等…
所以我的问题:如何使其工作在c++ Builder XE8通过"文本"选项真的像在Delphi ?
非常感谢您的帮助
关于你的第一个问题:你可能在Delphi和c++ Builder的组合框上没有相同的Style
属性。将其设置为csDropDown
允许您指定文本,但csDropDownList
不允许。
现在,ItemIndex是一个整数属性,所以不需要调用IntToStr。它甚至不应该编译,因为您不能将文本赋值给整数变量,至少在XE5中是这样。如果它稍后工作,那一定是因为有operator int()
或类似的UnicodeString,尽管我没有在最新的文档中找到它。
关于你的第二个问题:Add()
将传递的字符串添加到列表的末尾。如果你想在一个特定的位置插入字符串,那么你需要调用Insert()
,它要求你插入它的位置,在你的情况下,它将是0。当然,这是假设StringList没有排序的。
以下是TStrings
的文档:http://docwiki.embarcadero.com/Libraries/XE5/en/System.Classes.TStrings
- 从文本文件在组合框中添加项目
- 在组合框中拖放项目
- 如何在C++项目中组合着色器源?
- 删除并清除组合框 Win32 API 中的所有项目
- 将两个数组组合在一起,形成每个项目的一对
- 在Qt组合框中设置项目
- MFC 组合框下拉列表:仅显示一个项目
- 项目列表中的组合
- 如何获取组合框项目计数
- 如何将库与__stdcall和__cdecl组合在一个vs2008项目中
- Qt 组合框:选择项目时的事件
- 根据组合框中所选项目设置标签文本 (QT/C++)
- 将组合框中的类型字符串与其项目进行比较
- 从一个组合框中选择项目,然后从其他组合框中删除该项目
- 如何在组合框中发送这些项目
- 如何创建具有不同项目字符串的两个不同的组合框
- 根据组合框中的选定项目选择算法
- C ++ win 32,我想将项目列表添加到组合框中.我该怎么做
- 将一个项目组合到另一个项目中的方法
- 如何将基于OSGi的项目与基于c++的项目组合起来