[Delphi] pytanie problemowe, please HELP

0

mamy record Tsamochody, ma on pola
marka
nr_id
i jeszcze kilka...
dalej jest zmienna samochody: array[1..200] of Tsamochody;
oczywiste jest ze samochody.marka moga sie powtarzac ale samochody.nr_id kazdy ma inny, i teraz wyswietlam w listBox'ie samochody.marka, klikam na ktorys wpis, i tu pojawja sie problem, skad mam wiedziec, jak rozpoznac aby sie nie pomylic, ktory wpis zostal klikniety(zaznaczony) problem polega na tym ze jesli sprawdzam to standardowo czyli:
for a:=1 to 200 do
if samochody[a].marka=LIstBox1.Items.Strings[ListBox1.ItemIndex] then break;
to samochody[a].nr_id wskazuje mi na pierwszy napotkany wpis o danej marce, wiec jezeli pierwszym wpisem bedzie fiat, drugim opel, trzecim ford, czwartym fiat, to gdy klikne na czwarty to zwruci mi pierwszy, czy ma ktos jakies pomysly jak to rozwiazac?--Lardux

0

Jak znajdziesz pozycje nie przerywaj pentli przez Breake tylko szukaj dalej i wyniki za kazdym razem wpisuj do np. jakiegos listboxa albo pakuj do tablicy.
Chociaz to twoje tlumaczenie tez jest troche zakrecone. Uzywasz do tego komponentu listbox zamiast listview. W listview moglbys zrobic sobie druga kolumne z nr. id. samochodu i szukac wg. tego pola.

Pozdrawiam {hello}
Tomasz K.

0

Można też używać tablicy Objects do przechowywania wskaźników do rekordów.--Vogel [Delphi 6 PE]

Life is just a dream, you know...
[Cowboy Bebop]

0

wskazniki do rekordow, hmm ladnie to brzmi, jezeli zle mysle to mnie naprowadz, albo nie kumam o co Ci chodzi albo sam nie wiem, ale po co mi wskazniki do rekordow, przeciez jak klikne na listboxa to i tak mam tylko jeden z jego wpisow a nie rekord, a rekordow z takim wpisem moga byc setki, a wiec to i tak mi nic nie daje, jesli sie myle to prosze o sprostowanie, juz bardziej mi pasuje pierwsza odpowiedz, zeby nie przerywac petli i zapisac dane do jakiejs tablicy i szukac dalej, wtedy po namierzeniu takich rekordow moglbym ewentualnie sprawdzic reszte pozycji w rekordzie (wyswietlany jest np typ tapicerki) a to juz duze posuniecie, a moze ma ktos jeszcze jakies pomysly ?--Lardux

0

Przy każdym wpisie, jaki dodajesz do listboxa daj:

AddObject zamiast Add:
AddObject('tekst', TObject(@NazwaRekordu));

Potem przy kliknięciu:

TTypRekordu(Objects[ItemIndex]^)

otrzymujesz rekord wraz z wpisem id. Jak by coś nie działało to pisz (najlepiej na gg).--Vogel [Delphi 6 PE]

Life is just a dream, you know...
[Cowboy Bebop]

0

Masz w listboxie wpisanie marki samochodow w takiej kolejnosci jak w tablicy.

Wiec jak klikniesz, to

wybranyy_id:=samochody[Succ(ListBox1.ItemIndex)].nr_id;

Czy czegos nie rozumiem?

--Pawel {Delphi 6 Personal}

Po pierwsze: naciśnij F1

0

rozumiesz, tylko to jest dosyc duza tablica i nie chcialbym jej za kazdym usunieciem elementu ustawiac od poczatku, ale pokombinuje, dzieki panowie...--Lardux

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