C ++ Builder XE8
如果我选择Num 1 Memo将显示测试
如果我选择其他项目,备忘录将显示 Else Test
void __fastcall TForm1::FormCreate(TObject *Sender)
{
ListBox1->Items->Add("Num 1");
ListBox1->Items->Add("Num 2");
ListBox1->Items->Add("Num 3");
auto str = listBox1->SelectedItem->ToString();
if (str == L"Num 1") {
Memo1->Text = "Test";
}
else {
Memo1->Text = "Else Test";
}
}
答案 0 :(得分:0)
Form的OnCreate
事件(你不应该在C ++中使用,改为使用Form的构造函数)现在太快就无法检测用户的选择,因为用户还没有机会看到UI选择任何东西请改用ListBox的OnChange
事件。
此外,TListBox
没有SelectedItem
属性。在FireMonkey中(我假设您使用的是代替VCL),它具有Selected
属性。
试试这个:
__fastcall TForm1::TForm1(TComponent *Owner)
: TForm(Owner)
{
ListBox1->BeginUpdate();
try {
ListBox1->Items->Add("Num 1");
ListBox1->Items->Add("Num 2");
ListBox1->Items->Add("Num 3");
}
__finally {
ListBox1->EndUpdate();
}
}
void __fastcall TForm1::ListBox1Change(TObject *Sender)
{
TListBoxItem *Item = ListBox1->Selected;
if (Item) {
String str = ListBox1->Selected->Text;
if (str == L"Num 1") {
Memo1->Text = "Test";
}
else {
Memo1->Text = "Else Test";
}
}
else {
Memo1->Text = "Nothing";
}
}