Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.06.2008, 23:35   #1
Черничный
Форумчанин
 
Регистрация: 27.01.2007
Сообщений: 293
По умолчанию Поиск в listbox, но дургой

Влепил два поиска в программе:
Это в editChange:
ListBox1.Perform(LB_SELECTSTRING, -1, longint(Pchar(Edit1.text)));
Это в listboxkeyup:
ListBox1.Perform(LB_SELECTSTRING, -1, longint(Key));

Отличие: Поиск в listboxkeyup нужно вводить без паузы тогда будет срабатывать так же как и через edit.
Listbox содержить такие данные:
...
Петров Вадим
Комарова Ольга
Валентин "Пирок" Шнурков
и тд

Но вопрос в другом. К примеру, возьмем этот же edit, и начну вбивать. listbox выделит только ту строчку где есть полное совпадение с уже вбитым текстом в edit с началом строки в listbox.

Поехали дальше. Фаимилию я вспоминаю не сразу, в то время когда имя помню всегда. Печатаю имя и listbox должен отобразить строчку где искомое из edit совпадает с какой либо строчкой в нем. Как реализовать?
Черничный вне форума Ответить с цитированием
Старый 30.06.2008, 15:07   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

хорошее задание!
Цитата:
Сообщение от Черничный Посмотреть сообщение
Но вопрос в другом. К примеру, возьмем этот же edit, и начну вбивать. listbox выделит только ту строчку где есть полное совпадение с уже вбитым текстом в edit с началом строки в listbox.
событие onChange
Код:
procedure TForm1.Edit1Change(Sender: TObject);
var
  i:integer;
begin
  for i:=0 to ListBox1.Count-1 do
   if copy(ListBox1.Items[i],1,length(Edit1.Text))=Edit1.Text then
    begin
     ListBox1.Selected[i]:=true;
     exit;
    end;
end;
Цитата:
Сообщение от Черничный Посмотреть сообщение
Поехали дальше. Фаимилию я вспоминаю не сразу, в то время когда имя помню всегда. Печатаю имя и listbox должен отобразить строчку где искомое из edit совпадает с какой либо строчкой в нем. Как реализовать?
событие onChange
Код:
procedure TForm1.Edit1Change(Sender: TObject);
var
  i:integer;
begin
  for i:=0 to ListBox1.Count-1 do
   if pos(Edit1.Text,ListBox1.Items[i])>0 then
    begin
     ListBox1.Selected[i]:=true;
     exit;
    end;
end;
rpy3uH вне форума Ответить с цитированием
Старый 30.06.2008, 20:40   #3
Черничный
Форумчанин
 
Регистрация: 27.01.2007
Сообщений: 293
По умолчанию

ерхнй код вообще как то по левому работает. Сработал один раз с (начала строки в listbox)
А второй ищет то же только по начальным данным в строчке
Черничный вне форума Ответить с цитированием
Старый 30.06.2008, 21:28   #4
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

всё работает нормально! не забывай, что код чувствителен к регистру.

тоже самое только не чувствительное к регистру
Цитата:
Сообщение от Черничный Посмотреть сообщение
Но вопрос в другом. К примеру, возьмем этот же edit, и начну вбивать. listbox выделит только ту строчку где есть полное совпадение с уже вбитым текстом в edit с началом строки в listbox.
событие onChange
Код:
procedure TForm1.Edit1Change(Sender: TObject);
var
  i:integer;
begin
  for i:=0 to ListBox1.Count-1 do
   if AnsiUpperCase(copy(ListBox1.Items[i],1,length(Edit1.Text)))=AnsiUpperCase(Edit1.Text) then
    begin
     ListBox1.Selected[i]:=true;
     exit;
    end;
end;
Цитата:
Сообщение от Черничный Посмотреть сообщение
Поехали дальше. Фаимилию я вспоминаю не сразу, в то время когда имя помню всегда. Печатаю имя и listbox должен отобразить строчку где искомое из edit совпадает с какой либо строчкой в нем. Как реализовать?
событие onChange
Код:
procedure TForm1.Edit1Change(Sender: TObject);
var
  i:integer;
begin
  for i:=0 to ListBox1.Count-1 do
   if pos(AnsiUpperCase(Edit1.Text),AnsiUpperCase(ListBox1.Items[i]))>0 then
    begin
     ListBox1.Selected[i]:=true;
     exit;
    end;
end;

Последний раз редактировалось Stilet; 19.08.2008 в 13:49.
rpy3uH вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в ListBox Spectre Компоненты Delphi 9 14.01.2008 20:04
[ C# ]::[ ListBox ] Fire.id Общие вопросы .NET 1 13.01.2008 21:07
из ListBox в БД Spectre БД в Delphi 5 31.12.2007 13:58
Поиск записей в ListBox Askat БД в Delphi 1 18.06.2007 10:05
Поиск в ListBox kodov Компоненты Delphi 2 19.03.2007 20:58