Поиск в ListBox
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Поиск в ListBox Expand / Collapse
Автор
Сообщение
19.02.2006 20:05
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 19.02.2006 20:02
Сообщ.: 1, Visits: 12
Такой вопрос: как организовать поиск в ListBox? Нужно также, как и в Блокноте - Найти и Найти далее. На форме кнопка Найти, Edit1, в котором я ввожу, то что надо найти, и сам ListBox1. И когда я жму Найти, должна выделиться строка, в которой присутствуют слова, введенные Edit1. Мне нужно частичное совпадение.
Мне подсказали вот что:
var
Form1: TForm1;
n : byte;
...............
procedure TForm1.BtnFindClick(Sender: TObject);
var
i: byte;
flag: boolean;
begin
i:=0;
flag:=false;
repeat
if Pos(LowerCase(Edit1.Text),LowerCase(ListBox1.Items.Strings[i]))<>0 then
begin
Listbox1.Selected[i]:=true;
n:=i;
flag:=true;
end;
inc(i);
until (i=ListBox1.Count-1) or (flag=true);
end;

procedure TForm1.BtnFindNextClick(Sender: TObject);
var
i : byte;
begin
for i:=n+1 to ListBox1.Count-1 do
begin
if Pos(LowerCase(Edit1.Text),LowerCase(ListBox1.Items.Strings[i]))<>0 then
begin
Listbox1.Selected[i]:=true;
n:=i;
break;
end;
end;
end;

Но если в ListBox более 300 элементов, программа просто зависает, при попытке найти, к примеру - последний элемент.
Как с этим бороться?
И какие еще у вас есть идеи по поводу поиска в ListBox?
Заранее спасибо.
Сообщ. #891198
01.04.2006 1:17
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 18.12.2006 2:13
Сообщ.: 4, Visits: 49
ну, почти то, что надо, дальше сам

procedure TForm1.Edit1Change(Sender: TObject);
var
Ndx: Word;
begin
with (Sender as TEdit) do
begin
Ndx := ListBox1.Items.Add(Text);
ListBox1.Items.Delete(Ndx);
if CompareText(Text, Copy(ListBox1.Items[Ndx], 1, Length(Text))) = 0 then
ListBox1.ItemIndex := Ndx
else
ListBox1.ItemIndex := -1;
end;
end;

Сообщ. #894307
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 3:43