![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
Kodov |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 4 Пол: Мужской Репутация: ![]() ![]() ![]() |
Такой вопрос: как организовать поиск в 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? Заранее спасибо. Теги используй... Сообщение отредактировано: volvo - 18.02.2006 13:41 |
![]() ![]() |
![]() |
Текстовая версия | 25.07.2025 11:30 |