在备忘录中显示项目值

时间:2015-07-20 11:46:30

标签: c++ c++builder-xe8

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";
    }
}

1 个答案:

答案 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";
    }
}