Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как реализовать поиск???

496
06 декабря 2003 года
Jes
81 / / 28.03.2003
Приветсвую всех...Народ может кто сталкивался с проблемой реализации поиска в билдере.
Допустим нужно найти имя человека (имена все в treeview'e) или в listbox'e неважно, пишем в edit'e первую,вторую и т.д буквы а он на ходу уже становится на это имя...
Может кто знает..???
За ранее спасибо...
305
06 декабря 2003 года
Kashuk
385 / / 21.02.2003
Цитата:
Originally posted by Jes
Приветсвую всех...Народ может кто сталкивался с проблемой реализации поиска в билдере.
Допустим нужно найти имя человека (имена все в treeview'e) или в listbox'e неважно, пишем в edit'e первую,вторую и т.д буквы а он на ходу уже становится на это имя...
Может кто знает..???
За ранее спасибо...


Ну если я правильно понял что тебе надо, то вот код:

for (int i = 0; i < ListBox1->Count; i++){
if (ListBox1 == Edit1->Text){
//Совпадение
}
}

487
07 декабря 2003 года
ddnh_bc
301 / / 16.09.2003
Цитата:
Originally posted by Kashuk

Приветсвую всех...Народ может кто сталкивался с проблемой реализации поиска в билдере.
Допустим нужно найти имя человека (имена все в treeview'e) или в listbox'e неважно, пишем в edit'e первую,вторую и т.д буквы а он на ходу уже становится на это имя...
Может кто знает..???
За ранее спасибо... }



Можешь попробовать следующий метод:

int len;
char *entry,*_end,buf[0x100];
AnsiString what=Edit1->Text;
char *ptr=ListBox1->Items->Text;

if (!memcmp(ptr,what.c_str()))
ListBox1->ItemIndex=0;
else
{
what="\r\n"+what;
entry=strstr(ptr,what);
if (entry)
{
entry+=2;
_end=strstr(entry,"\r\n");
if (!_end) _end=entry+strlen(entry);
len=_end-entry;
memcpy(buf,entry,len);
buf[len]=0;
ListBox1->ItemIndex=ListBox1->Items->IndexOf(buf);
}
}

Ну что-то в этом духе. Можешь попробовать.

496
07 декабря 2003 года
Jes
81 / / 28.03.2003
Цитата:
Originally posted by Kashuk

Ну если я правильно понял что тебе надо, то вот код:

for (int i = 0; i < ListBox1->Count; i++){
if (ListBox1 == Edit1->Text){
//Совпадение
}
}


Спасобо .....направление понятно......:)

305
08 декабря 2003 года
Kashuk
385 / / 21.02.2003
Цитата:
Originally posted by ddnh_bc


Можешь попробовать следующий метод:

int len;
char *entry,*_end,buf[0x100];
AnsiString what=Edit1->Text;
char *ptr=ListBox1->Items->Text;

if (!memcmp(ptr,what.c_str()))
ListBox1->ItemIndex=0;
else
{
what="\r\n"+what;
entry=strstr(ptr,what);
if (entry)
{
entry+=2;
_end=strstr(entry,"\r\n");
if (!_end) _end=entry+strlen(entry);
len=_end-entry;
memcpy(buf,entry,len);
buf[len]=0;
ListBox1->ItemIndex=ListBox1->Items->IndexOf(buf);
}
}

Ну что-то в этом духе. Можешь попробовать.



Ну ты блин и написал.....
Так ты человеку вообще охоту програмить отобьешь.

487
08 декабря 2003 года
ddnh_bc
301 / / 16.09.2003
Цитата:
Originally posted by Kashuk


Ну ты блин и написал.....
Так ты человеку вообще охоту програмить отобьешь.



А чего такого? Нормальный экзампл.
Кстати:
if (ListBox1 == Edit1->Text) - неправильная запись - во первых так не обращаются к элементам TStringList - во вторых - происходит сравнение строк ЦЕЛИКОМ а не начальных символов строк. К тому - же, не проще ли вместо
for (int i = 0; i < ListBox1->Count; i++){
if (ListBox1 == Edit1->Text){
//Совпадение
}
}
написать ListBox1->IndexOf(Edit1->Text); - делает тоже самое.

305
08 декабря 2003 года
Kashuk
385 / / 21.02.2003
Цитата:
Originally posted by ddnh_bc


А чего такого? Нормальный экзампл.
Кстати:
if (ListBox1 == Edit1->Text) - неправильная запись - во первых так не обращаются к элементам TStringList - во вторых - происходит сравнение строк ЦЕЛИКОМ а не начальных символов строк. К тому - же, не проще ли вместо
for (int i = 0; i < ListBox1->Count; i++){
if (ListBox1 == Edit1->Text){
//Совпадение
}
}
написать ListBox1->IndexOf(Edit1->Text); - делает тоже самое.



Спасибо, буду знать, это реально круче пример.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог