Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 12.11.2016
Сообщений: 22
1

Поиск и отображения нескольких совпадений ListBox

11.10.2017, 09:01. Показов 848. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток! Помогите с кодом поиска текста в ListBox, так, чтобы отображало все совпадения в этом же ListBox, а не только одно.

Для одного такой код:
Delphi
1
sListBox1.Perform(LB_SELECTSTRING,-1,longint(Pchar(sEdit1.text)));
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.10.2017, 09:01
Ответы с готовыми решениями:

Поиск совпадений и действия в зависимости от наличия совпадений
Попытаюсь вкратце описать суть. Приходит список позиций с ценами. Необходимо проверить артикул на...

Посчитать количество совпадений в listbox
Есть listbox1 с семью Items: три строки "apple" и четыре строки "orange". Если ввести в textBox1...

Счетчики совпадений значений строк в ListBox
Скажу сразу, что я в программировании почти "0", поэтому и пишу здесь в надежде, что какой-то...

Поиск в нескольких Listbox с функцией "Найти далее"
Здравствуйте! Задаю вопрос первый раз, так что сильно по голове не бейте. Имеется форма с ~20...

4
Эксперт Pascal/Delphi
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
11.10.2017, 09:14 2
Цитата Сообщение от TitanReks Посмотреть сообщение
чтобы отображало все совпадения в этом же ListBox, а не только одно
может Вам стоит посмотреть в сторону TComboBoxEx? С ним уже все есть.
0
15 / 15 / 14
Регистрация: 19.08.2012
Сообщений: 105
11.10.2017, 09:15 3
TitanReks, Я бы через onDrawItem реализовал. Например вводим текст в Edit1, а в ListBox1 подсвечиваются все совпадения. Ставим ListBox1.Style:=lbOwnerDrawFixed и:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TForm1.Edit1Change(Sender: TObject);
begin
  ListBox1.Refresh;
end;
 
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  with ListBox1.Canvas do
  begin
    if ListBox1.Items[Index]=Edit1.Text then
    Brush.Color:= clRed
    else
    Brush.Color:=ListBox1.Color;
    FillRect(Rect);
    TextOut(Rect.Left, Rect.Top, ListBox1.Items[Index]);
  end;
end;
0
0 / 0 / 0
Регистрация: 12.11.2016
Сообщений: 22
11.10.2017, 09:31  [ТС] 4
Я хочу реализовать главным образом отображение не в виде выделения, а сортировки и отображения ТОЛЬКО совпадений.

Добавлено через 8 минут
Простое выделение при большом количестве строк в ListBox ни есть лучший вариант)
0
15 / 15 / 14
Регистрация: 19.08.2012
Сообщений: 105
11.10.2017, 11:27 5
TitanReks, На коленке сделал такой вариант:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm1.Edit1Change(Sender: TObject);
var
  I: Integer;
begin
  if Edit1.Text='' then  ListBox2.Items:=ListBox1.Items else
  begin
    ListBox2.Clear;
    for I := 0 to ListBox1.Count - 1 do
    begin
      if Pos(Edit1.Text,ListBox1.Items[i])>0 then
      ListBox2.Items.Add(ListBox1.Items[i]);
    end;
  end;
end;
Также можно записывать данные в TStringList и уже из него делать выборку и добавлять в ListBox1

Добавлено через 5 минут
Типа так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
var
  Form1: TForm1;
  SL:TStringList;
 
implementation
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  SL:=TStringList.Create;
  SL.Text:=ListBox1.Items.Text;
end;
 
procedure TForm1.Edit1Change(Sender: TObject);
var
  I: Integer;
begin
  if Edit1.Text='' then  ListBox1.Items:=SL else
  begin
    ListBox1.Clear;
    for I := 0 to SL.Count - 1 do
    begin
      if Pos(Edit1.Text,SL[i])>0 then
      ListBox1.Items.Add(SL[i]);
    end;
  end;
end;
0
11.10.2017, 11:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.10.2017, 11:27
Помогаю со студенческими работами здесь

Поиск совпадений
Перевожу рандомные числа в двоичную систему. Помогите определить в каких элементах находится более...

Поиск совпадений
Помогите пожалуйста, задали начинающему такую задачку хоть вешайся... На входе: каталог. На...

Поиск совпадений
Всем привет!) Меня интересует вот какой вопрос)) Существует два сайта источника, и 1 сайт поиска...

Поиск совпадений
Привет, помогите пожалуйста, как организовать поиск по бд(Acces), чтобы было сообщение, что такой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru