TComboBox und ItemIndex



  • Hallo.

    Ich hätte da mal eine Frage zu folgendem Code:

    ComboBox1->Items->Clear();
    for (int i=0;i<10;i++)
    {
    ComboBox1->Items->Add("");
    }
    ComboBox1->ItemIndex = 0;
    ShowMessage(IntToStr(ComboBox1->ItemIndex));
    ComboBox1->Items->Strings[0] = "test";
    ShowMessage(IntToStr(ComboBox1->ItemIndex));
    

    Warum erhalte ich in der zweiten ShowMessage plötzlich einen ItemIndex von "-1"?
    Ich ändere doch nur den Text in der TComboBox 😮

    (System: WinXP/C++Builder2009)



  • Hallo,
    wenn du den Inhalt deiner ComboBox änderst, ist die Selektion weg.
    d.h. Wert von Itemindex auf -1
    Merke dir den Itemindex in einer Variable und schreibe ihn nach dem Ändern wieder zurück.



  • Das ist ein "Feature" der zugrunde liegenden Win32 API, selbst wenn man mit Windowsnachrichten direkten Einfluss auf die ComboBox nimmt und die VCL Kapselung ignoriert wird die Auswahl zurückgesetzt.


Anmelden zum Antworten