Wyszukiwarka w lisbox

0

Mam problem z wyswietleniem komunikatu gdy wyszukiwarka nie znajdzie elementu lub znajdze ale nie jest on pierwszy na liscie listbox. Dokladniej chodzi o to ze gdy wpisze nazwe np drugiego elementu to znajduje go ale i tak wyswietla komunikat 'brak ksiazki'.
A gdy nie ma elementu na liscie to wyswietla ten komunikat kilka razy pod rzad.
Pomoze ktos?

O to kod:

begin
  if eszukaj.text='' then
    begin
      Application.MessageBox('Musisz podać tytuł książki !', 'Biblioteka', MB_ICONERROR);
    end
  else
  begin
  for i:=0 to lbksiazki.Items.Count-1 do
  begin
  if pos(lowercase(eszukaj.text),lowercase(lbksiazki.Items[i]))>0 then
    begin
      lbksiazki.ItemIndex:=i;
      break;
    end
    else
      Application.MessageBox('Nie ma takiej książki !', 'Biblioteka', MB_ICONERROR);
     end;
  eszukaj.Text :='';
 end;

end;

Z gory dzieki.

0

A co jest nie tak z kodem ?

0

A pomyśl jak komputer...

 for i:=0 to lbksiazki.Items.Count-1 do
  begin
  if pos(lowercase(eszukaj.text),lowercase(lbksiazki.Items[i]))>0 then
    begin
      lbksiazki.ItemIndex:=i;
      break;
    end
    else
      Application.MessageBox('Nie ma takiej książki !', 'Biblioteka', MB_ICONERROR);
     end;

Pętla od 0 do lbKsiazki.Items.Count-1
Początek bloku
Jeżeli ciąg znajdujący się w zmiennej eSzukaj.text jest w lbKsiazki.items[zmienna pętli]
Zaznacz wartość i przerwij szukanie
A jeżeli nie, to wyświetl komunikat i kontynuuj szukanie

Prawidłowo:

(dodaj zmienną odnaleziono typu boolean)
Odnaleziono := False;
for i:=0 to lbksiazki.Items.Count-1 do
  begin
  if pos(lowercase(eszukaj.text),lowercase(lbksiazki.Items[i]))>0 then
    begin
      lbksiazki.ItemIndex:=i;
      Odnaleziono := True;
      break;
    end;
      if (Not Odnaleziono) Then
       MessageBox(...);
     end;
0

Dzieki Patryk27 działa

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