Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/120: Рейтинг темы: голосов - 120, средняя оценка - 4.86
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522

Поиск по ListBox

11.08.2010, 09:51. Показов 24205. Ответов 56
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
здарова!
мне нужно произвести поиск по списку
следущий код это делает, но если ввести слово целиком. а мне нужно, чтобы темы в ListBox выделялись сразу при введениии уже первой буквы в Edit.
например если я ввел в Edit букву "а", то в ListBox выделялась тема которая начинается на букву "а" (и дальше по алфавиту (без учета регистра). алфавиты - рус и англ)

теперь код:

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
procedure TForm1.Edit1Change(Sender: TObject);
var i: integer;
begin
Memo1.Clear;
if Length(Edit1.Text) <> 0 then
   for i:= 0 to ListBox1.Items.Count - 1 do
   if ListBox1.Items.Strings[i] = Edit1.Text then
   try
   AssignFile(f, ExtractFilePath(Application.ExeName) + 'а3\' + ListBox1.Items.Strings[i] + '.txt');
    {$I-}
    Reset(f);
    {$I+}
   if IOResult = 0 then  begin
     while not EOF(f) do
          begin
               readln(f, st);
               form1.memo1.Lines.Add(st);
           end;
         closefile(f);
    end;
  except
  exit;
 end;
end;
2
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.08.2010, 09:51
Ответы с готовыми решениями:

Удаление не выделенных строк в ListBox (Поиск в ListBox)
Добрый день! Друзья, подскажите, пожалуйста, как внутри ListBox организовать поиск по записям (фильтр), чтобы остались только валидные...

поиск+listbox
имеется массив слов. выполняю поиск в массиве по букве через Contains. результат (если имеется слово с такой буквой) выводиться в...

Поиск в ListBox
Добрый день. Необходимо сделать поиск в listbox при указании текста в edit. Необходимо чтобы, было следующего плана: начинаешь вписывать...

56
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
11.08.2010, 22:57  [ТС]
Студворк — интернет-сервис помощи студентам
John_Pa9JIbHuK, здесь ошибка

Цитата Сообщение от John_Pa9JIbHuK Посмотреть сообщение
G.LoadFromFile(ExtractFilePath(Applicati on.ExeName) +
'a3\' + ListBox1.Items[listbox1.itemindex] + '.txt');
сначала надо сохранить туда, потом загружать... а у меня сохранение происходит так

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure TForm1.SpeedButton5Click(Sender: TObject);
var q: integer;
begin
 
 if treeview1.Selected = nil then
   showmessage('в TreeView занеси че нить, потом сохраню и в ListBox')
 else if ListBox1.Items.IndexOf(TreeView1.Selected.Text)=-1 then  
      begin
           ListBox1.Items.Add(TreeView1.Selected.Text);
      end;
  if FileExists('f') then
     AssignFile(f, ExtractFilePath(Application.ExeName) + 'а3\' + TreeView1.Selected.Text + '.txt');
    {$I-}
    Rewrite(f);
    {$I+}
   if IOResult = 0 then  begin
for q:= 0 to Memo1.Lines.Count-1 do
  WriteLn(F,Memo1.Lines[q]);
    closefile(f);
 
end;
end;
0
Добрый самаритянин
 Аватар для John_Pa9JIbHuK
1107 / 622 / 139
Регистрация: 31.03.2009
Сообщений: 2,567
11.08.2010, 23:10
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
procedure TForm1.Edit1Change(Sender: TObject);
var i: integer;
begin
Memo1.Clear;
if Length(Edit1.Text) <> 0 then
* *for i:= 0 to ListBox1.Items.Count - 1 do
* *if ListBox1.Items.Strings[i] = Edit1.Text then
* *try
* *AssignFile(f, ExtractFilePath(Application.ExeName) + 'а3\' + ListBox1.Items.Strings[i] + '.txt');
* * {$I-}
* * Reset(f);
* * {$I+}
* *if IOResult = 0 then *begin
* * *while not EOF(f) do
* * * * * begin
* * * * * * * *readln(f, st);
* * * * * * * *form1.memo1.Lines.Add(st);
* * * * * *end;
* * * * *closefile(f);
* * end;
* except
* exit;
*end;
end;
Ну я лично отталкивался от этого кода.

Короче я уже совсем запутался )))) Ты в лист боксе ищешь строку из эдита и если нашел, то открываешь файл с этим именем и заносишь его строки в мемо, я правильно понял?
1
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
11.08.2010, 23:26  [ТС]
John_Pa9JIbHuK, ты правильно понял

Добавлено через 11 минут
мой код так и делает. т.е. в Мемо ничего не появляется пока я не ввел слово в Эдит целиком.
а надо чтобы LB вместе с Мемо реагировали на изменения в Эдите посимвольно.
т.е. ввожу букву "а" - первое слово (из всех слов начинающихся на букву "а") выделяется и в Мемо появляется соответствующая инфа
0
Добрый самаритянин
 Аватар для John_Pa9JIbHuK
1107 / 622 / 139
Регистрация: 31.03.2009
Сообщений: 2,567
11.08.2010, 23:40
Вот проверил и написал код у меня все работает
Проверяй
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Edit1: TEdit;
    Memo1: TMemo;
    procedure Edit1Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  List: TStringList;
implementation
 
{$R *.dfm}
 
procedure TForm1.Edit1Change(Sender: TObject);
begin
//Èùåì ñòðîêó, åñëè íàøëè âûäåëÿåì
ListBox1.Perform(LB_SELECTSTRING, -1, longint(Pchar(Edit1.text)));
//Åñëè òàêàÿ ñòðîêà íàäåíà è ñòðîêà ñ ListBox1 âûäåëåíà
if ListBox1.ItemIndex <> -1 then
  begin
  //Çàãðóæàåì ýòè ñòðîêè â List
    try
      List.LoadFromFile(ExtractFilePath(Application.ExeName) +
      'a3\' +
      ListBox1.Items[ListBox1.itemindex] +
      '.txt'
      );
      Memo1.Text := Memo1.Text + List.Text;
    except
      Showmessage('error');
    end;
  end;
//ñíèìàåì âûäåëåíèå
ListBox1.ItemIndex := -1;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
List := TStringList.Create;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
List.Free;
end;
end.
Добавлено через 6 минут
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
а надо чтобы LB вместе с Мемо реагировали на изменения в Эдите посимвольно.
т.е. ввожу букву "а" - первое слово (из всех слов начинающихся на букву "а") выделяется и в Мемо появляется соответствующая инфа
У меня так и происходит
1
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
11.08.2010, 23:49  [ТС]
Цитата Сообщение от John_Pa9JIbHuK Посмотреть сообщение
Memo1.Text := Memo1.Text + List.Text;
- вот здесь ошибка

это место
Цитата Сообщение от John_Pa9JIbHuK Посмотреть сообщение
try
List.LoadFromFile(ExtractFilePath(Applic ation.ExeName) +
'a3\' +
ListBox1.Items[ListBox1.itemindex] +
'.txt'
);
Memo1.Text := Memo1.Text + List.Text;
я заменил на это

Delphi
1
2
3
4
5
6
7
8
9
10
11
if FileExists('f') then
     AssignFile(f, ExtractFilePath(Application.ExeName) + 'а3\' + TreeView1.Selected.Text + '.txt');
    {$I-}
    Rewrite(f);
    {$I+}
   if IOResult = 0 then  begin
for q:= 0 to Memo1.Lines.Count-1 do
  WriteLn(F,Memo1.Lines[q]);
    closefile(f);
 
end;
ошибка исчезает, на букву реагирует, но только один раз . и еще на последущие буквы также не реагирует. т.е. если есть "собака" и "сыр" при вводе "с" появляется инфа о собаке, а если дальше добавить "о", то все исчезает

Добавлено через 2 минуты
Цитата Сообщение от John_Pa9JIbHuK Посмотреть сообщение

У меня так и происходит
у тя какая версия????????????? что за пи.......
0
Добрый самаритянин
 Аватар для John_Pa9JIbHuK
1107 / 622 / 139
Регистрация: 31.03.2009
Сообщений: 2,567
11.08.2010, 23:51
у меня Delphi 7
1
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
11.08.2010, 23:56  [ТС]
Цитата Сообщение от John_Pa9JIbHuK Посмотреть сообщение
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
List.Free;
end;
у меня на закрытие формы уже имеется код
Delphi
1
2
3
4
5
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
TreeView1.SaveToFile(ExtractFilePath(Application.ExeName)+'tree.dat');
ListBox1.Items.SaveToFile(ExtractFilePath(Application.ExeName)+'tree1.dat');
end;
может он как то мешает??
0
Добрый самаритянин
 Аватар для John_Pa9JIbHuK
1107 / 622 / 139
Регистрация: 31.03.2009
Сообщений: 2,567
11.08.2010, 23:56
Дык получается у тебя не листбокс а тривиев?
Что-то ты все совсем запутал сначала выкладывал один код теперь другой )))
1
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
11.08.2010, 23:57  [ТС]
у меня тоже Д7
0
Добрый самаритянин
 Аватар для John_Pa9JIbHuK
1107 / 622 / 139
Регистрация: 31.03.2009
Сообщений: 2,567
11.08.2010, 23:59
А что ваще твоя прога делает? какая у нее функция? или это чтото типа курсача?))))
1
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
12.08.2010, 00:00  [ТС]
я же сказал что на форме имеются TV и LB. инфу о них я сохраняю в разных файлах.
но в этом вопросе TV не играет роли. надо просто произвести поиск по списку
0
Добрый самаритянин
 Аватар для John_Pa9JIbHuK
1107 / 622 / 139
Регистрация: 31.03.2009
Сообщений: 2,567
12.08.2010, 00:02
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
procedure TForm1.Edit1Change(Sender: TObject);
var i: integer;
begin
Memo1.Clear;
if Length(Edit1.Text) <> 0 then
* *for i:= 0 to ListBox1.Items.Count - 1 do
* *if ListBox1.Items.Strings[i] = Edit1.Text then
* *try
* *AssignFile(f, ExtractFilePath(Application.ExeName) + 'а3\' + ListBox1.Items.Strings[i] + '.txt');
* * {$I-}
* * Reset(f);
* * {$I+}
* *if IOResult = 0 then *begin
* * *while not EOF(f) do
* * * * * begin
* * * * * * * *readln(f, st);
* * * * * * * *form1.memo1.Lines.Add(st);
* * * * * *end;
* * * * *closefile(f);
* * end;
* except
* exit;
*end;
end;
Ты же вроде писал вопрос по этому коду. А теперь уже обрисовался treeviev.

Добавлено через 1 минуту
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Edit1: TEdit;
    Memo1: TMemo;
    procedure Edit1Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  List: TStringList;
implementation
 
{$R *.dfm}
 
procedure TForm1.Edit1Change(Sender: TObject);
begin
//Ищем строку, если нашли выделяем
ListBox1.Perform(LB_SELECTSTRING, -1, longint(Pchar(Edit1.text)));
//Если такая строка надена и строка с ListBox1 выделена
if ListBox1.ItemIndex <> -1 then
  begin
  //Загружаем эти строки в List
    try
      List.LoadFromFile(ExtractFilePath(Application.ExeName) +
      'a3\' +
      ListBox1.Items[ListBox1.itemindex] +
      '.txt'
      );
      Memo1.Text := Memo1.Text + List.Text;
    except
      Showmessage('error');
    end;
  end;
//снимаем выделение
ListBox1.ItemIndex := -1;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
List := TStringList.Create;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
List.Free;
end;
end.
А чем этот код не устроил?
1
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
12.08.2010, 00:05  [ТС]
John_Pa9JIbHuK, нет не курсач (свое я отучил уже ) это помошник. в TV можно добавлять элементы (темы), при нажатии кнопки сохранить эти темы появляются и в LB.
теперь представь, если тем будет сотни, для этого и нужен поисковик

Добавлено через 2 минуты
John_Pa9JIbHuK, -> А чем этот код не устроил?
вот здесь
-> Memo1.Text := Memo1.Text + List.Text;

компилятор посылает...
0
Добрый самаритянин
 Аватар для John_Pa9JIbHuK
1107 / 622 / 139
Регистрация: 31.03.2009
Сообщений: 2,567
12.08.2010, 00:11
Вообщем выкладывай свой проект вместе с файлами тем и папок завтра постараюсь разобраться.

Добавлено через 57 секунд
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
John_Pa9JIbHuK, -> А чем этот код не устроил?
вот здесь
-> Memo1.Text := Memo1.Text + List.Text;
компилятор посылает...
и что пишет?

Добавлено через 44 секунды
Попробуй написать так
Memo1.Lines.Add(List.Text);
1
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
12.08.2010, 00:59  [ТС]
John_Pa9JIbHuK, -> и что пишет?
пишет что путь к файлу не найден

Добавлено через 15 секунд
щас попробую

Добавлено через 11 минут
чо то не получается, та жа ошибка.
если добавить if FileExists('f') then, то ошибки нет, но и не реагирует ничто ни на что
наверное запарился, дело шло ко сну
спасибо тебе John_Pa9JIbHuK!
и всем кто помогал

Добавлено через 32 минуты
добейте плиз кто нибудь этот вопрос.
может мне прогу предоставить , только незнаю как ссылку оставить на файл
0
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
12.08.2010, 01:01
расширенный режим тебе в помощь
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
12.08.2010, 01:05  [ТС]
REALIST07, тебе смешно, в 2-х шагах от завершения застрял
0
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
12.08.2010, 01:09
А если серьезно->расширенный режим->управление вложениями(оно внизу)окроется окошечко и там загрузи с компа твои файлы(предварительно запаковав) и загрузи на сайт,единственное там на резмер ограничения стоят но с этим я думаю проблем не будеттак понятнее?
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
12.08.2010, 01:22  [ТС]
вот и прога.
все хорошо кроме:
1) поиск по списку;
2) имена элементов дерева не должны повторяться

и будет мне счастье
Вложения
Тип файла: rar Delphi.Helper.rar (311.5 Кб, 47 просмотров)
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
12.08.2010, 12:47  [ТС]
блин братья по полу, мужуки Хелпните пожалста. на новую тему хочу перейти!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.08.2010, 12:47

Поиск в ListBox
Здравствуйте! Нужна помощь. Мне нужно реализовать поиск в listbox: Даже не знаю как написать в общем: У меня есть TextBox и...

Поиск в listbox
У меня есть listbox и там написаны имена. На какое-то событие нужно найти в listbox строку с именем и добавить к этой строке...

Поиск в ListBox
Всем привет! Я делаю поиск в LISTBOX по совпадению и вывожу совпадения в другой LISTBOX: string poisk1 = new string; ...

Поиск в Listbox
Здравствуйте! Как организовать поиск в listbox ? Например ввожу текст в textbox что бы искал-фильтровал в listbox'е?

Поиск в ListBox
Собственно такой вопрос... У мен я в ListBox ооооочень много значений. Поэтому нужен поиск по этим элементам. Сделать поиск по полному...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru