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