Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1077 / 488 / 316
Регистрация: 05.04.2013
Сообщений: 2,140
1

Придумать "умный" фильтр

25.02.2016, 11:59. Показов 630. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
у кого есть соображения как придумать умный фильтр
имеется TCheckListBox, там пользователь отмечает нужные айтемы, но так как айтемов очень много, пользователь может какие-то случайно пропустить. чтобы помочь ему, хотелось бы сделать следующее:
кладу на форму TEdit, в нем пользователь вводит поисковое слово (срабатывает процедура ОнЧендж), нужно чтобы после каждой вводимой буквы в CheckListBox'e оставались айтемы которые содержат поисковое слово внутри себя
пользователь чекает необходимое, стирает поисковое слово (если надо - пишет новое).

вроде сделал по задумке - но проблема в том что галочки не сохраняются на ранее чекнутых айтемах
что посоветуете?

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
procedure TForm2.FormShow(Sender: TObject);
begin
list.Clear;
list.Text := CheckListBox1.Items.Text;
end;
 
procedure TForm2.Edit1Change(Sender: TObject);
var
i:Integer;
s:TStringList; // list TStringList глобальная
begin
 
if Edit1.Text = '' then begin
    CheckListBox1.Items.Text := list.Text;
    exit;
    end;
 
s := TstringList.Create;
CheckListBox1.Items.Clear;
 
for i := 0 to list.Count-1 do begin
    if Pos(AnsiLowerCase(Edit1.Text),AnsiLowerCase(list[i])) > 0
    then s.Add(list[i]);
    end;
CheckListBox1.Items.Text := s.Text;
s.Free;
 
end;
Миниатюры
Придумать "умный" фильтр  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.02.2016, 11:59
Ответы с готовыми решениями:

Умный фильтр
Все привет. На сайте фильтр по параматрам стоит вверху в списке товаров пыталься его ставить слева...

Умный фильтр
Добрый день. На сайте размещён каталог продукции, разбитый на категории. При открытии полного...

Умный фильтр
Доброго времени суток! Необходимо вывести/настроить умный фильтр. Данный фильтр выведен/настроен,...

Умный фильтр
как реализовать умный фильтр по таблице в базе данных? Есть база данных. Там 10000 товаров. Нужно...

Умный фильтр
Добрый вечер, вопрос такой, есть магазин в котором 2 вида цен: Розничная цена и Цена в магазине,...

8
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,130
Записей в блоге: 3
25.02.2016, 12:03 2
Цитата Сообщение от AHBAR Посмотреть сообщение
но проблема в том что галочки не сохраняются на ранее чекнутых айтемах
Цитата Сообщение от AHBAR Посмотреть сообщение
Edit1Change(Sender: TObject);
Цитата Сообщение от AHBAR Посмотреть сообщение
CheckListBox1.Items.Clear;
вопросы?
0
1077 / 488 / 316
Регистрация: 05.04.2013
Сообщений: 2,140
25.02.2016, 12:07  [ТС] 3
Цитата Сообщение от qwertehok Посмотреть сообщение
вопросы?
я знаю почему они не сохраняются, вопрос как сделать чтобы они оставались
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,130
Записей в блоге: 3
25.02.2016, 12:20 4
Цитата Сообщение от AHBAR Посмотреть сообщение
вопрос как сделать чтобы они оставались
убрать строку по которой они удаляются
0
1077 / 488 / 316
Регистрация: 05.04.2013
Сообщений: 2,140
25.02.2016, 12:40  [ТС] 5
Цитата Сообщение от AHBAR Посмотреть сообщение
вопрос как сделать чтобы они оставались
Цитата Сообщение от qwertehok Посмотреть сообщение
убрать строку по которой они удаляются
сарказм? думаете я каждую строчку своего кода рандомом сгенерировал?
тогда отфильтровываться не будет...
если не сарказм значит вы не поняли суть задания

вообще, примерно знаю куда копнуть - можно вместо глобальной переменной TStringList использовать еще один TCheckListBox только невидимый, и переносить туда айтемы чекнутыми, но хотелось бы как нибудь попроще
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,130
Записей в блоге: 3
25.02.2016, 12:45 6
да, наверное задания не понял

вы на каждое нажатие
удаляете ранее выбранные флажки и генерируете новые
при это пишите - как сделаете что бы не удалялось?

может стоит сохранять предыдущее значение эдита, и отбирать не только по текущему, но и предпоследнему?
0
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
25.02.2016, 12:52 7
давайте формально подойдем к вопросу-то

если хотите чтобы что-то после удаления восстанавливалось, надо это что-то где-то сохранять и потом применять заново
вот и ответ

второй ответ - для интеллектуалов - если не удалять все подряд, а только вдумчиво и только то, что более не нужно, то и сохранять не придется
0
1077 / 488 / 316
Регистрация: 05.04.2013
Сообщений: 2,140
25.02.2016, 13:33  [ТС] 8
qwertehok, krapotkin, попробую сделать так:
айтемы сохранять в переменную TStringList как и делал
а чекнутость айтемов - в буленовский массив
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm2.FormShow(Sender: TObject);
var
i : Integer;
begin
list.Clear;
list.Text := CheckListBox1.Items.Text;
for i := 0 to CheckListBox1.Items.Count-1 do
a[i] := CheckListBox1.Checked[i];
end;
0
3586 / 2195 / 693
Регистрация: 29.05.2013
Сообщений: 9,375
25.02.2016, 14:03 9
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
procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
Var i: Integer;
begin
 i := SourceCheckListBox.Items.IndexOf(CheckListBox1.Items.Strings[CheckListBox1.ItemIndex]);
 SourceCheckListBox.Checked[i] := CheckListBox1.Checked[CheckListBox1.ItemIndex];
end;
 
procedure TForm1.Edit1Change(Sender: TObject);
var i,j: Integer;
begin
 if Edit1.Text = '' then Exit;
 CheckListBox1.Clear;
 for i := 0 to SourceCheckListBox.Items.Count - 1
 do begin
    if ContainsText(SourceCheckListBox.Items.Strings[i], Edit1.Text)
    then begin
         j := CheckListBox1.Items.Add(SourceCheckListBox.Items.Strings[i]);
         CheckListBox1.Checked[j] := SourceCheckListBox.Checked[i];
         end;
    end;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
 SourceCheckListBox := TCheckListBox.Create(Form1);
 SourceCheckListBox.Parent := Form1;
 SourceCheckListBox.Hide;
 SourceCheckListBox.Items.Assign(CheckListBox1.Items);
end;
0
25.02.2016, 14:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.02.2016, 14:03
Помогаю со студенческими работами здесь

Умный фильтр
Наблюдаю проблему в работе умного фильтра. пример 1: установили 1 и 2 фильтр, применяем ...

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

Умный фильтр
Здравствуйте! Подскажите идею насчет Умного фильтра. Она заключается в следующем чтоб автозапчасти...

Умный фильтр
Ситуация, отфильтровал категорию товаров по производителю, получил результат...

Умный фильтр на JavaScript
Здравствуйте, возникла проблема, прошу помощи. Ситуация такая: надо сделать умный фильтр на JS,...


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

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