![]() |
|
|
![]()
|
|
| Гость_Виталий |
|
|||
|
Unregistered |
Привет всем!
Кто-нибудь подскажет, как можно реализовать следующее: в Edit вводтся текст; таблица фильтруется на предмет совпадения с любой частью поля; Пример кода: Query1.Active:=false; Query1.SQL.Clear; Query1.SQL.Add(QSQL); Query1.SQL.Add('WHERE FIO LIKE ''%'+Edit2.Text+'%'''); Query1.Active:=true; Вопрос: как в отфильтрованных данных в DBGrid одновременно подсвечивать символы, по которым фильтруется таблица, другим цветом? Заранее спасибо. |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
используй событие DrawDataCell сетки, но с подкраской именной нужных символов ячейки тяжело, однако, наврятли тебе здесь дадут пример.
Может сам додумаешься - выкладывай на всеобщее обозрение |
|||
|
||||
| kobra |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 730 Регистрация: 15.6.2005 Где: Грузия, Тбилиси Репутация: 1 Всего: 9 |
есть вариант, я его когдато исползовал, но в других целях.
в DrawDataCell определяеш ту ячеику, в которои нужная подстрока имеется, динамически создоещ TRichEdit и отрисовываеш его прямо над нужнои ячеикои, и там текст пишеш как душе угодно. |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 4 Всего: 68 |
Здесь есть все что тебе может понадобиться.
http://www.delphikingdom.ru/asp/viewitem.a...dbgridcolor.htm |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 4 Всего: 68 |
А вот простой примерчик, но он выделяет весь текст в ячейке
|
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
да весь текст - не проблема, а вот нужные симолы...
|
|||
|
||||
| Гость_Виталий |
|
|||
|
Unregistered |
Я вот нарыл кое-что, не знаю, можно ли из этого решить поставленную задачу?
Как изменить цвет ячейки TDBGrid в зависимости от текущего значения -------------------------------------------------------------------------------- Для изменения цвета некоторых ячеек таблицы TDBGrid необходимо определить реакцию на событие DBGrid1DrawDataCell и проверив необходимые условия, перерисовать ячейку вручную (если в этом есть необходимость). Все необходимые данные для отрисовки передаются в параметрах процедуры. Отрисовка белых букв на красном фоне если, перерисовывается поле 'First_I', ячейка не в фокусе и значение поля меньше нуля. procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState); begin with DBGrid1.Canvas do if (Field.FieldName = 'First_I') and (not (gdFocused in State)) and (Field.AsInteger < 0) then begin Brush.Color := clRed; Font.Color := clWhite; end; DBGrid1.DefaultDrawDataCell(Rect, Field, State); end; |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Но ты ведь хотел изменять цвет отдельных символов в ячейке
|
|||
|
||||
| Гость_Виталий |
|
|||
|
Unregistered |
Сами ячейки и не надо красить.
Задача не изменилась. Я имел ввиду этот примерчик не дает ли правильное направление хода мысли? |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
смотри ответа~FoX~`а
а в твоём примере не вижу сравнения с Edit1.Text |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 4 Всего: 68 |
Хочешь онДравКолумнЦиль - держи:
Подсвечивает Красным указанную подстроку. Да чуть не забыл, чтоб в реал тайм изменить усливие подсветки достаточно сделать DBGrid1.Refresh Результат работы: Это сообщение отредактировал(а) ~FoX~ - 7.7.2005, 08:21 Присоединённый файл ( Кол-во скачиваний: 25 )
Grid.jpg 18,33 Kb |
|||
|
||||
| kobra |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 730 Регистрация: 15.6.2005 Где: Грузия, Тбилиси Репутация: 1 Всего: 9 |
|
||||||
|
|||||||
| ~FoX~ |
|
||||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 4 Всего: 68 |
Он не меняет цвет шрифта в ячейке! Он вообще к ячейке иммет косвенное отношение.
Ну и что не так, то? Фильтр он и сам наложить может, условие известно, найти вхождение подстроки в строку в поле не вопрос. А мой код просто пример. |
||||
|
|||||
| kobra |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 730 Регистрация: 15.6.2005 Где: Грузия, Тбилиси Репутация: 1 Всего: 9 |
если данные отфилтровани, зачем так трудится? можно веть изменить цвет шрифта всеи калонке, не ошибешся, все строки удовлетворяют условью. |
|||
|
||||
| ~FoX~ |
|
||||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 4 Всего: 68 |
kobra
Ни о чем не говорит? Like - вывод значений приблизительно соответствующих нужным! Предположим условие = Like='%22%' Возврещаем результат может быть 22, a22, a22a, asdf22222asdfasdf т.д. Ему нужно выделить в возвращаемых строках только условие т.е. только "22" |
||||
|
|||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |