Pokazywanie nazw itemów w comboboxie.

0

Witajcie.
Mam problem z comboboxem. Podczas wczytywania bazy danych do tabelki wczytuję od razu te dane do comboboxa (nazwę produktu i jego cenę). Chciałbym, aby wyświetlone były tylko nazwy tych produktów, a nie ich wartości (gdy rozwinę listę to pokazują mi się ceny).

Tutaj jest kawałek kodu odpowiedzialny za przypisywanie produktów do kolejnych itemów w comboboxie.

for k := 1 to XmlDoc.DocumentElement.ChildNodes.Count do
    begin
    combobox[k].nazwa:= ANode.ChildNodes['nazwa'].Text;
    combobox[k].cena:= StrToFloat(ANode.ChildNodes['cena'].Text);   //OK [x]
    ComboBox1.Items.Add(combobox[k].nazwa);
    ComboBox1.Items.ValueFromIndex[k-1]:= FloatToStr(combobox[k].cena);
    ANode := ANode.NextSibling;
    end; 

Zapewne odpowiedź na moje pytanie jest banalna, ale sporo googlowałem i nic nie znalazłem.

0

Dobra, a nie lepiej całą tabelę z bazy wczytać do Tablicy, a potem do TComboBox?

0

Nie wpadłem na to. ;D
Dzięki za pomysł.

0

Kiedy tablica to tablica, ale przecież sam ComboBox jak i inny obiekt pochodny przechowujący TStrings może być jakby Tabicą, a raczej Listą, na której można przechowywać rownież obiekty czyli nie tylko sam jeden string, ale wiele typów jako kolejny element. Ale swój problem pytający rozwiązał by tak jak opisano na: http://www.delphibasics.co.uk/RTL.asp?Name=TStringList (swoją droga nie jest chyba tak cięzko wpisać w google: delphi ValueFromIndex?). Czyli coś w stylu:

var
  I : integer;
begin
  with ComboBox1 do
  begin
    Items.NameValueSeparator := '=';
    ComboBox1.Items.CommaText := 'cosik=58, inny=74';
    for I := 0 to ComboBox1.Items.Count - 1 do
    begin
      ShowMessage('Tekst: ' + ComboBox1.Items.Names[I] + ' = ' +
        ComboBox1.Items.ValueFromIndex[I]);
    end;
  end;
end;

Nie znam XML'a w Delphi z TXmlDocument, ale powinno być chyba pętla od 0 do Count - 1. Tylko na końcu CommaText nie może być przecinka, jeżeli element jest pusty dlatego w pętli musiał byś sprawdzić czy I < od końcowego warunku pętli i jeżeli nie to dodawać przecinek po każdym elemencie, a jeżeki tak to już nie dodawać go po pobranych z XML'ach wartościach.

0

Dziękuję i Tobie za odpowiedź. Zrobiłem to "trochę po swojemu", ale Twój miniwykład był niewątpliwie kształcący.

1 użytkowników online, w tym zalogowanych: 0, gości: 1