Problem z ListBox' em

0

Witam.
Mam pewien problem z ListBox'em. Otóż zabrałem się za stworzenie programu do szkoły "Sklep" i zrobiłem Koszyk(paragon) za pomocą 2 ListBoxów. 1 - Aby zapisać nazwę produktu, 2- Aby zapisać w nim cenę produktu, aby później można było łatwo policzyć ile trzeba zapłacić w całości. Stworzyłem do tego button "Usuń z paragonu", którego kod wygląda następująco:

procedure TForm2.Button3Click(Sender: TObject);
begin
if ListBox1.ItemIndex > -1 then
begin
ListBox1.Items.Delete(ListBox1.ItemIndex);
end;

Kod ten usuwa z paragonu nazwę produktu wybranego na 1 ListBoxie, lecz w 2 ListBoxie nadal zostaje cena.. Czy ma ktoś jakiś pomysł, żeby znikła także i cena po zaznaczeniu nazwy produktu i usunięciu jej ?

0

Czy ma ktoś jakiś pomysł, żeby znikła także i cena po zaznaczeniu nazwy produktu i usunięciu jej ?

poproś kompilator, może wysłucha.

Albo... Dopisz kod na eventach albo zrób procedurę która usuwa z obu list. A najlepiej to to zrobić na tablicy dynamicznej z rekordami..

0

No a co za problem usunąc odpowiedni item w ListBox2? O ile dobrze zrozumiałem to chcesz usunać zarówno element o indeksie na przykład 3 w ListBox1 oraz ListBox2. Jeżeli tak, to zrobisz to tak samo jak z ListBox1, podstawiając wcześniej zaznaczony item w ListBox1 pod jakąś zmienną typu integer. Poza tym sensownie nazywaj komponenty, bo takie listboxowanie od 1 do X spowoduje że się później pogubisz, a poza tym do pokazywania kilku danych w jednej linijce lepiej użyć TListView, który posiada kolumny. A i pytania o banalne podstawy zadajemy w dziale Newbie! Tam też cały wątek przenoszę.

0
Averek napisał(a)

Czy ma ktoś jakiś pomysł, żeby znikła także i cena po zaznaczeniu nazwy produktu i usunięciu jej ?

Poza oprogramowaniem tego nic mi innego do głowy nie przychodzi...

Jeżeli napisałeś w zdarzeniu usunięcie item'a z pierwszej listy to co za problem napisać to dla drugiej?

procedure TForm2.Button3Click(Sender: TObject);
var
  iIndex: Integer;
begin
  iIndex := ListBox1.ItemIndex;

  if iIndex > -1 then
    begin
      ListBox1.Items.Delete(iIndex);
      ListBox2.Items.Delete(iIndex);
    end;
end;

Poza tym taki kod na wiele się nie zda, bo możesz mieć w pierwszej liście nie zaznaczony item, a w drugiej tak i już nic nie usuniesz;

Dobrze napisał @olesio, skorzystaj z kontrolki z klasy TListView - ustaw styl na vsReport i naucz się ją obsługiwać; Nic trudnego - w kompendium programisty delphi na tej stronie jest przykład książki adresowej; Innym rozwiązaniem jest utworzenie jednej kontrolki z klasy TListBox i ręczne rysowanie itemów tak, by nazwa produktu była z jednej strony, cena z drugiej, a jeszcze inne dane w jeszcze innym miejscu; Trochę zabawy jest, ale można uzyskać bardzo ładny efekt;

Inna sprawa - nie zmieniasz nazw formularzy ani kontrolek, nie umiesz rozwiązać tak prostych problemów, to jak Ty chcesz napisać ten program...?

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