| Delphi Tips & Tricks | softsale > Delphi Tips & Tricks |
| następna rada > | < poprzednia rada |
Jak inkrementalnie szukać w listbox ?
Szukamy w listbox elementów które zaczynają się od stringu wpisanego na edicie. procedure TForm1.Edit1Change(Sender: TObject); const indexStart = -1; var szukaj : array[0..128] of Char; begin StrPCopy(szukaj, Edit1.Text) ; ListBox1.ItemIndex := ListBox1.Perform(LB_SELECTSTRING, indexStart, LongInt(@szukaj)) ; end; Funkcja StrCopy kopiuje zawartość edita na zmienna stringową szukaj z zerowym ogranicznikiem ( null-terminated string). Metoda Perform wysyła komunikat LB_SELECTSTRING bezpośrednio do listboxa. LB_SELECTSTRING oczekuje dwóch parametrów:index_start oraz wskaźnika do zmiennej szukaj,która zawiera prefix po którym szukamy . LB_SELECTSTRING przeszukuje listboxa na zawartość zaczynającą się od znaków w podanym łancuchu.Jeżeli element taki zostanie znaleziony, zostaje on wybrany, w przeciwnym wypadku pozycja w listbox pozostaje niezmieniona. Ograniczenia: LENGTH(edit1.text)<=128 oraz własność Multiselect listboxa ustawiona na false. Ilustruje to przykład tip42.zip |
|
SOFTSALE - Oprogramowanie i Szkolenia softsale@softsale.com.pl 03-565 Warszawa , ul. Borzymowska 43 lok. 301C tel/fax:4084840,0607612428 |