![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск в TList [D6, WinXP]
Чипырик © (2006-10-23 16:44:00)Доброго времени суток....
Как осуществить поиск Записи в компоненте TList.
например: в TEdit пишем слово, в TList курсор автоматически перебрасывается на нужную запись (что-то типа FindNearest)
Ketmar (2006-10-23 19:30:00) [1]>[22] Anatoly Podgoretsky(c) 23-Oct-2006, 19:22
>другой конференции у нас нет.
есть "Журнал" aka "бредосборник". %-))
Anatoly Podgoretsky (2006-10-23 19:22:00) [2]Надеялся, что раз изначально вопрос был задан не в "Начинающим" (где ему самое место),
Вообще то ему здесь не место, но другой конференции у нас нет. Это самый нижний уровень к сожалению.
Ketmar (2006-10-23 18:44:00) [3]телепатор подсказывает, что там просто нет буквального совпадения. например, пробел где-то в конце затесался. или регистр букв не одинаковый.
MetalFan (2006-10-23 18:35:00) [4]выкладывай код, так бесполезно разговаривать...
Чипырик (2006-10-23 18:14:00) [5]
> MetalFan
ListBox1.ItemIndex := ListBox1.Items.IndexOf( Edit4.Text );
Так по прежнему не пашет...
строку ввожу ОнЧанж на Едите4 (в котором ввожу поисковую строку)... Лист бокс у меня всего один на форме.... не пашет
Чипырик (2006-10-23 18:12:00) [6]
> Джо
Заработало
Пасиба большое
Джо (2006-10-23 18:10:00) [7]> [16] Чипырик © (23.10.06 18:09)
> ща попробую 2-ой вариант
Второй вариант это — поиск по вхождению в строку. Ты с этим бы разобрался :)
Чипырик (2006-10-23 18:09:00) [8]описался вписывал я естественно в Едит4... я не хамлю... , но все равно прошу прощения если что не так....
ща попробую 2-ой вариант
MetalFan (2006-10-23 18:06:00) [9]на форме ListBox: TListBox; Edit: TEdit;
в OnChange
ListBox.ItemIndex := ListBox.Items.IndexOf( Edit.Text );
все работает с твоей какой...
Джо (2006-10-23 18:01:00) [10]> [12] Чипырик © (23.10.06 17:51)
> > Джо
> Тебе 4-ка не понятна или что?
Мне 4-ка понятна. Мне непонятно, почему OnChage у тебя для Edit 1, а поиск строки из Edit 4. И хамить не стоит.
К слову, мой код буквально воспринимать не следовало. Надеялся, что раз изначально вопрос был задан не в "Начинающим" (где ему самое место), то приложить мозговые усилия для подгона кода к своим нуждам не составит труда. Составило. Разжевываю, тем более, уже в "Начинающим".
function FindPartial (const S: string; Items: TStrings): Integer;
var
I: Integer;
begin
Result := -1;
for I := 0 to Items.Count-1 do
if Pos (S,Items[I]) <> 0 then
begin
Result := I;
Break
end
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
ListBox1.ItemIndex := FindPartial(Edit1.Text,ListBox1.Items)
end;
Просьба опять не перепутать Edit1 и Edit4...
Чипырик (2006-10-23 17:56:00) [11]От того что Ветку перенесли в раздел для начинающих, проблема так и не решилась
Чипырик (2006-10-23 17:51:00) [12]> SpellCaster
Конечно есть.
В списке
Бука
Бяка
Кака
Мака
В Edit4 набираю Кака, выделение остается на Бука (точнее ничего не выбирается)
> Джо
Тебе 4-кане понятна или что?
MetalFan (2006-10-23 17:49:00) [13]что курил автор? ужасно вопрос поставлен %)
SpellCaster (2006-10-23 17:46:00) [14]А нужная строка-то в списке есть? ;)
Джо (2006-10-23 17:46:00) [15]> [8] Чипырик © (23.10.06 17:43)
> Вписал в Edit 1.OnChange
> .IndexOf(Edit 4.Text)
Как понимать тебя?
Чипырик (2006-10-23 17:43:00) [16]Вписал в Edit1.OnChange
ListBox1.ItemIndex := ListBox1.Items.IndexOf(Edit4.Text)
Результат нулевой. На нужную строку выделение не скачет, как было на 1 строке, так там и осталось
Чипырик (2006-10-23 17:40:00) [17]ща попробую
Джо (2006-10-23 17:13:00) [18]В общем, сошлись, вроде, что имеется в виду TListBox. :) Автору: в событии OnChage для TEdit напиши что-то в духе:
ListBox1.ItemIndex := ListBox1.Items.IndexOf(Edit1.Text)
Дополнить в соответствии с логикой поиска.
default (2006-10-23 17:09:00) [19]
> в компоненте TList.
а ещё TList это компонент
Джо (2006-10-23 17:07:00) [20]> [3] Сергей М. © (23.10.06 17:04)
>
> > Выделенный элемент (строка)
>
>
> Какие м.б. строки в TList ?
К тому же, еще и "выделенные". :)