![]() |
|
![]() ![]() ![]() |
|
ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 1 Всего: 17 |
Есть большая таблица (несколько тысяч строк на 6 столбцов). Нужно осуществлять поиск по значению в выбранном столбце. Хотелось бы ещё, чтобы поиск был индексный (или как он там называется), т.е. как в стандартном Help'e - по мере ввода строки поиска отсеиваются все неподходщие значения.
Так вот у меня вопрос. Всё это можно сделать и вручную, проверяя значение из каждой строки. Но лень. Нет ли стандартного класса или компонента типа списка, в котором бы была функция поиска? И/или сортировки, что тоже пригодится. Хотел, конечно, использовать StringGrid чтоб таблицу легче было отображать, но там поиск точно вручную придётся делать. ![]() -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
Ctrl_Alt_Del |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 11.3.2006 Где: Ставрополь Репутация: 2 Всего: 2 |
ksili, создай базу данных. В ней таблицу проиндексируешь, загонишь данные, а дальше поиск и все остальное делается элементарно.
Тем более существуют TDBGrid, TDBEdit... ИМХО оптимальный вариант |
|||
|
||||
docwar |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 24.9.2006 Репутация: нет Всего: нет |
А как быть, если до бд мне еще далеко, а поиск данных в StringGrid сделать надо?
Пробовал по-простому: организовывал цикл проверки for, где проверяется текст из эдита с данными первой колонки. Если же совпадений по таблице много, то занесенные действия при успешном поиске программа просто не выполняла. Есть-ли стандартные алгоритмы поиска? |
|||
|
||||
SenkraD |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 3.2.2006 Где: Украина::Киев Репутация: 9 Всего: 23 |
Ну в библиотеке STL есть, только я ими ещё не пользовался так, что более подробно помочь не могу
А так не пробовал:
|
|||
|
||||
docwar |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 24.9.2006 Репутация: нет Всего: нет |
Спасибо за ответ!
Минус такого алгоритма - не выполняет никаких действий, если нашел несколько совпадений!!! Причем, i=0 при успешном поиске... странно... |
|||
|
||||
docwar |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 24.9.2006 Репутация: нет Всего: нет |
Код для поиска написал! =) Осталось только выделить строку StringGrid или ячейку (все равно у меня выделяется целая строка при нажатии на ячейку этой строки)!
Искал на форуме, но ничего не нашел... Заранее спасибо! Добавлено @ 17:06 Нужно выделить строку, зная номер строки и столбца таблицы. |
|||
|
||||
Reptile |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 30.9.2006 Где: Украина, Первомай ск Репутация: 2 Всего: 3 |
Ну Ты ведь знаеш номер строки
![]()
Или я что-то не так понял? |
|||
|
||||
docwar |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 24.9.2006 Репутация: нет Всего: нет |
Именно это мне и нужно было! Спасибо! =) =)
|
|||
|
||||
docwar |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 24.9.2006 Репутация: нет Всего: нет |
Написал вот такой код для поиска в StringGrid:
Но как сделать, чтобы выделялись все строки (результат поиска в которых положителен), а не только последняя??? |
|||
|
||||
Reptile |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 30.9.2006 Где: Украина, Первомай ск Репутация: 2 Всего: 3 |
||||
|
||||
docwar |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 24.9.2006 Репутация: нет Всего: нет |
Можно тогда, правда, делать фон у строк как у выделенных.
только как же вызвать OnDrawCell по нажатию кнопки, если учесть, что у меня в прорисовке есть еще и другой код? |
|||
|
||||
Reptile |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 30.9.2006 Где: Украина, Первомай ск Репутация: 2 Всего: 3 |
Так и вызываеш, но лучше(наверное) всетаки сделать жирным
![]() |
|||
|
||||
docwar |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 24.9.2006 Репутация: нет Всего: нет |
Что придумать - не вопрос! =)
Но как быть с нажатием на кнопку? Не хватает ведь параметров... |
|||
|
||||
Reptile |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 30.9.2006 Где: Украина, Первомай ск Репутация: 2 Всего: 3 |
||||
|
||||
docwar |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 24.9.2006 Репутация: нет Всего: нет |
А как цвет текста одной строки поменять?
Так только всей таблицы: Form1->StringGrid1->Font->Color=StringToColor(0x00D0B2AD); ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |