Ĺadny brzuch
Witam! Mam problem. Mianowicie napisałem program, w którym można stworzyć sobie listę dowolnych rzeczy podzielonych na kategorie. Wszystkie kategorie znajdują się w jednym komponencie ListBox. Po kliknięciu na kategorię w drugim ListBox'ie wyświetlają mi się elementy. Wszystko to są elementy typu string. Teraz chcę napisać procedurę, która na podstawie podanego ciągu znaków znajdzie wszystkie stringi ze wszystkich kategorii, które zawierają podany ciąg (coś jak wyszukiwarka) i przypisać te elementy do komponentu ListView według wzoru: KATEGORIA | ELEMENT. Wiem jak znaleźć elementy, które są identyczne z podanym ciągiem, ale nie potrafię znaleźć tych, które go zawierają (np. ciąg znaków to 'cztery' i znajduje mi element 'cztery' w kategorii 'nowa', ale już elementu 'cztery pory roku' w kategorii 'stara' nie znajduje) Pomóżcie proszę
kod na znalezienie tekstuw richedicie... przerob to ;)
var FoundAt: LongInt; StartPos, ToEnd: Integer; begin with RichEdit do begin if SelLength <> 0 then StartPos := SelStart + SelLength else StartPos := 0; ToEnd := Length(Text) - StartPos; FoundAt := FindText( 'Tekst', StartPos, ToEnd, [stMatchCase]); if FoundAt <> -1 then begin SetFocus; SelStart := FoundAt; SelLength := Length('Tekst'); end; end; end;
Użytkownik migajek edytował ten post 02 kwiecień 2006, 21:02
petla od 0 do ListBox1.Items.Count - 1 i sprawdzasz czy pos('slowo', listBox1.Items[i]) > 0 ...
migajek dzięki działa. Tylko teraz mam nowy problem.
1. Chcę, żeby za jednym zamachem znajdował mi podane słowo napisane z małej litery i z dużej (jednocześnie), bo gdy podaję np. słowo "ja" to program znajduje mi tylko elementy które zawierają dokładnie słowo "ja" a już elemetów "Ja" i "JA" nie widać.
2. Wszystkie zna;lezione elementy są wypisywane w ListView. Po kliknięciu na dany element ma się w Listbox'ach zanzaczyć kategoria do jakiej on należy i w drugim znaleziony element. Jak to zrobić żeby nie uzyskać błędu??
1. pos('ja', lowercase(listBox1.Items[i])) > 0 ? :)
1. pos('ja', lowercase(listBox1.Items[i])) > 0 ? :)
Działa!!! Pozostaje jeszcze drugi problem.
Już nieważne. wszystko działa :D
Użytkownik salat25 edytował ten post 06 kwiecień 2006, 14:49
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
kod na znalezienie tekstuw richedicie... przerob to ;)
var FoundAt: LongInt; StartPos, ToEnd: Integer; begin with RichEdit do begin if SelLength <> 0 then StartPos := SelStart + SelLength else StartPos := 0; ToEnd := Length(Text) - StartPos; FoundAt := FindText( 'Tekst', StartPos, ToEnd, [stMatchCase]); if FoundAt <> -1 then begin SetFocus; SelStart := FoundAt; SelLength := Length('Tekst'); end; end; end;
Użytkownik migajek edytował ten post 02 kwiecień 2006, 21:02
petla od 0 do ListBox1.Items.Count - 1 i sprawdzasz czy pos('slowo', listBox1.Items[i]) > 0 ...
migajek dzięki działa. Tylko teraz mam nowy problem.
1. Chcę, żeby za jednym zamachem znajdował mi podane słowo napisane z małej litery i z dużej (jednocześnie), bo gdy podaję np. słowo "ja" to program znajduje mi tylko elementy które zawierają dokładnie słowo "ja" a już elemetów "Ja" i "JA" nie widać.
2. Wszystkie zna;lezione elementy są wypisywane w ListView. Po kliknięciu na dany element ma się w Listbox'ach zanzaczyć kategoria do jakiej on należy i w drugim znaleziony element. Jak to zrobić żeby nie uzyskać błędu??
1. pos('ja', lowercase(listBox1.Items[i])) > 0 ? :)
1. pos('ja', lowercase(listBox1.Items[i])) > 0 ? :)

Działa!!! Pozostaje jeszcze drugi problem.
Już nieważne. wszystko działa :D
Użytkownik salat25 edytował ten post 06 kwiecień 2006, 14:49