Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 50

ListBox, ограничение списка элементов с помощью шаблона

08.06.2012, 01:48. Показов 1577. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
ListBox , который с помощью шаблона может ограничивать список элементов. Например,если задать шаблон
"a?bc*", в списке останутся только те строки, в которых на первой, третьей и четвёртой позициях
находятся соответственно 'a','b' и 'c'
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.06.2012, 01:48
Ответы с готовыми решениями:

Загрузка элементов списка из шаблона
Всем доброго времени суток. Прошу помощи. Начал изучать фреймворк AngularJS и столкнулся с проблемой. Казалось бы все просто. У меня есть...

Добавление элементов списка в начало в компонент ListBox
Есть ли в компоненте Listbox возможность добавления элементов в начало списка (свойство например), не используя динамические структуры...

Перенос первых элементов списка ListBox в конец
ниже приведена программа переноса в начало списка последних элементов списка, во второй вкладке под названием ЛР4, надо исправить чтобы...

5
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.06.2012, 02:01
Непонятно чтон нужно?
1. Создать такой компонент?
2. Или реализовать просто отсев в ListBox ?
0
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 50
08.06.2012, 02:27  [ТС]
Создать такой компонент.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.06.2012, 03:04
Ну что бы шаблон задать легче всего использовать регулярные выражения например boost/regex или TRegExpr но в таком случае форма задание шаблона будет выглядеть немного иначе это критично?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
08.06.2012, 03:23
все гораздо будничнее, имхо...
C++
1
2
3
4
5
6
7
8
9
10
// Заносим фильтр в эдит
// Парси строчку в массив чаров
for(...) {
 if (ListBox->Items->Strings[i][1] != [маccив_чаров[0] ||
     ListBox->Items->Strings[i][1] != [маccив_чаров[1] ||
     ListBox->Items->Strings[i][1] != [маccив_чаров[2]
     // и т.д., тут хорошо бы учитывать количество алиментов массива
     ) {
  ListBox->Items.Delete[i]; // или как там удаляется, не помню
}
и скрестить ЛистБокс с Эдитом, хотя зачем, если уже есть КомбоБокс, достаточно добавить фильтр.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.06.2012, 04:12
h
C++
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
//---------------------------------------------------------------------------
#ifndef TMyListBoxH
#define TMyListBoxH
//---------------------------------------------------------------------------
#include <SysUtils.hpp>
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
//---------------------------------------------------------------------------
class PACKAGE TMyListBox : public TListBox
{
private:
protected:
    String FTemplate;
    void _fastcall SetTemplate(String Template) { FTemplate= Template;}
    String _fastcall GetTemplate(String Template) { return FTemplate;}
 
public:
    __fastcall TMyListBox(TComponent* Owner);
 
    void _fastcall Apply();
 
__published:
 
  __property String Template={read=GetTemplate,write=SetTemplate};
 
};
//---------------------------------------------------------------------------
#endif
cpp
C++
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
 
#include <boost/regex.hpp>
#include <string>
 
using namespace std;
using namespace boost;
 
#pragma hdrstop
 
#include "TMyListBox.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
// ValidCtrCheck is used to assure that the components created do not have
// any pure virtual functions.
//
 
static inline void ValidCtrCheck(TMyListBox *)
{
    new TMyListBox(NULL);
}
//---------------------------------------------------------------------------
__fastcall TMyListBox::TMyListBox(TComponent* Owner)
    : TListBox(Owner)
{
FTemplate = L".*";
}
//---------------------------------------------------------------------------
void _fastcall TMyListBox::Apply()
{
wregex re(FTemplate.w_str());
 
Items->BeginUpdate();
 
for(int i=0;i<Items->Count;)
 {
 if(!regex_match(Items->Strings[i].w_str(),re)){ Items->Delete(i); continue;}
 else i++;
 }
 
Items->EndUpdate();
}
//---------------------------------------------------------------------------
namespace Tmylistbox
{
    void __fastcall PACKAGE Register()
    {
        TComponentClass classes[1] = {__classid(TMyListBox)};
        RegisterComponents(L"Samples", classes, 0);
    }
}
//---------------------------------------------------------------------------
cpp
C++
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
TMyListBox *LB;
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
LB = new TMyListBox(this);
LB->Parent = this;
LB->Top=Edit2->Top+30;
LB->Left=Edit2->Left;
 
LB->Items->Add("a1bcd");
LB->Items->Add("a2bce");
LB->Items->Add("abcd");
LB->Items->Add("arcbd");
LB->Items->Add("abcde");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
delete LB;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BApplyClick(TObject *Sender)
{
LB->Template=Edit1->Text;
LB->Apply();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BAddStringClick(TObject *Sender)
{
LB->Items->Add(Edit2->Text);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
LB->Template=Edit1->Text;
}
//---------------------------------------------------------------------------
Вложения
Тип файла: rar TMyListBox.rar (329.5 Кб, 7 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.06.2012, 04:12
Помогаю со студенческими работами здесь

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

Как задать события для элементов списка listBox
Есть listBox, который заполняется программно: string files =Directory.GetFiles(@&quot;.&quot;, &quot;*.xml&quot;); ...

Выяснить, сколько элементов списка ListBox содержат символ V
Составьте программу, выясняющую, сколько элементов списка ListBox содержат символ V.

Составьте программу, организующую добавление и удаление элементов списка ListBox
Составьте программу, организующую добавление и удаление элементов списка ListBox.

Ограничение конкретизации шаблона
Есть виртуальный класс drawerShape и шаблонный класс Table. Необходимо реализовать шаблон так, чтобы Table можно было конкретизировать...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru