Jess |
Отправлено: 11.02.2005, 22:04 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 70
|
Приветствую всех....... народ подскажите как сделать поиск в StringGrid.
Тоесть в Edit вводим строку и эта строка сравнивается с каждым значением стринггрида...
Если можно с кодом........
За ранее благодарствую.....
|
|
Aptem |
Отправлено: 13.02.2005, 11:06 |
|
Мастер участка
Группа: Участник
Сообщений: 349
|
Если речь идет об обычном поиске ячейки грида, то можно так:
CODE | AnsiString pattern;
pattern = Edit1 -> Text;
for ( int i = 0; i < Grid -> RowCount; i++ )
{
for ( int j = 0; j < Grid -> ColCount; j++ )
{
if ( StringGrid1 -> Cells[j][i] == pattern )
{
//какие-либо действия при нахождении шаблона
}
}
} |
...если речь идет о поиске вхождения (не строгий поиск), то условия поиска можно написать так:
CODE | if ( StringGrid1 -> Cells[j][i].Pos ( pattern ) ) |
|
|
Jess |
Отправлено: 13.02.2005, 15:33 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 70
|
Тём спасибо...всё ищется, только проблема в следующем...
Этот код читает из файла данные и вбивает их в стринггрид..
CODE |
char string[256];
int i=0,k=0;
StringGrid1->RowCount=4;
StringGrid1->ColCount=4;
FILE *f=fopen("file.txt","rt");
while (!feof(f)) {
fgets(string,255,f);
StringGrid1->Cells[i][k]=AnsiString(string);
i++;
if(i>=4){
i=0;
k++;}
}
fclose(f);
|
потом функция поиска ищет в ячейках строку.
Проблема в том, что значения в стриггриде видятся с пайпом в конце....
1. Как убрать эти пайпы(в пхп есть функция trim, как на счет билдера)?
2. Из-за этих пайпов, поиск на прямое совпадание (if ( StringGrid1 -> Cells[j][b] == pattern)) НЕ работает...
Последний стринг без пайпа видится в стринггриде, и всё ищется путём...
Если сможешь опиши как бороться с этими проблемами...
За ранее сенкс.....
Отредактировано Jess — 13/02/2005, 16:36
|
|
Aptem |
Отправлено: 14.02.2005, 05:52 |
|
Мастер участка
Группа: Участник
Сообщений: 349
|
Также как и в PHP, в C++ Builder у класса AnsiString есть методы: Trim, TrimLeft, TrimRight.
Соответственно, перед вводом данных в грид делаешь такое:
CODE | StringGrid1->Cells[i][k]=AnsiString(string).Trim (); |
А вообще, если дальше собираешься плотно работать с гридами, то советую использовать TAdvStringGrid от TMSSoftware. Там уйма всяких наворотов, которые отсутствуют у обычного TStringGrid.
Если не найдешь в инете могу послать на почту.
|
|
Stan |
Отправлено: 14.02.2005, 11:24 |
|
Не зарегистрирован
|
QUOTE (Aptem @ 14/02/2005, 06:54) | А вообще, если дальше собираешься плотно работать с гридами, то советую использовать TAdvStringGrid от TMSSoftware. Там уйма всяких наворотов, которые отсутствуют у обычного TStringGrid.
Если не найдешь в инете могу послать на почту. |
Aptem, а какая у тебя версия TAdvStringGrid'a и есть ли у Тебя на него кряк? |
|
Aptem |
Отправлено: 14.02.2005, 12:16 |
|
Мастер участка
Группа: Участник
Сообщений: 349
|
QUOTE (Stan @ 14/02/2005, 12:26) | Aptem, а какая у тебя версия TAdvStringGrid'a и есть ли у Тебя на него кряк? |
Версия грида 2.02 (она еще freeware), но есть и самая последняя, но без кряка
|
|
Jess |
Отправлено: 14.02.2005, 22:14 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 70
|
Спасибо...разчехлился...
cybavat@list.ru сюда можно прислать стринггрид(advanced)...
Слушай, был у них на сайте так там всё за баксюки...Хочу сделать красивое MainMenu, стандартный не устраивает...
Может посоветуешь портальчики где можно найти как на www.tmssoftware.com компоненты для так сказать разширения билдера...
Ещё раз сенкс..........................
|
|
Aptem |
Отправлено: 15.02.2005, 06:37 |
|
Мастер участка
Группа: Участник
Сообщений: 349
|
Вплотную меню не занимался, но посмотри вот здесь:
http://www.torry.net/pages.php?s=78&SID=8c...3e391951fb80f00
|
|
MrSpawn |
Отправлено: 16.02.2005, 15:59 |
|
Не зарегистрирован
|
Артем а мне не кинеш TAdvStringGrid rjnjhsq фрееваре жумаю и его функций и возможностей за глаза хватает... -
на почту если не трудно то spawnns@yandex.ru
|
|
L.u.M. |
Отправлено: 20.11.2006, 14:25 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 28
|
Aptem, написал код очень похожий на ваш и заметил, что и у вас показывается только последний результат!
Как же сделать, чтобы и остальные строки выделялись в таблице(StringGrid1->Row = n; //где n — номер строки)? |
|