Nie pamiętam jak to jest dokładnie w BCB6, Ale postaram Ci się doradzić. Po pierwsze zwykły ComboBox nie umie w standardzie listować w dwóch kolumnach. Jeśli Ci na tym zależy to albo napisz własne rysowanie kontrolki (żmudne rozwiązanie) albo kup/poszukaj darmowego na torry.net jakiegoś zewnętrznego komponentu (szybkie rozwiązanie).
Jednak chciałbym Cię odwieźć od takiego rozwiązania, po co user ma widzieć jakieś ID? TComboBox
może przechowywać wskaźnik na TObject
i dostęp do niego masz za pomocą cbx1->Items->Objects[i]
Wystarczy korzystać podczas dodawania do komponentu itemów z metody cbx1->AddItem()
. Tylko uwaga wrzucając pozycję musimy rzutować w kierunku int -> TObject*
a pobierając odwrotnie.
A teraz jak to wszystko ogarnąć. Dodawanie wartości:
cbx1->Items->Clear();
cbx1->AddItem("Jeden",(TObject*)12);
cbx1->AddItem("Dwa",(TObject*)1);
cbx1->AddItem("Trzy",(TObject*)100);
cbx1->ItemIndex = 0;
Oraz odczyt ID powiązanego z danym itemem:
int ID;
ID = (int)(cbx1->Items->Objects[cbx1->ItemIndex]);
ShowMessage(ID);
Ewentualnie jeśli nie chcesz szukać nowego komponentu, a chcesz w prosty sposób pokazać ID'ki rekordów w bazie formatuj napis dodawany do ComboBoxa:
cbx1->Items->Clear();
cbx1->Items->Add("12 - Jeden");
cbx1->Items->Add("1 - Dwa");
cbx1->Items->Add("100 - Trzy");
cbx1->ItemIndex = 0;
I potem sobie ręcznie wycinaj, parsuj itp wybrany tekst.
PS. użyłem z lenistwa rzutowania w stylu C. Żeby być bardziej eleganckim warto użyć odpowiedniego rzutowania w stylu C++