Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2007, 17:40   #1
All517
Пользователь
 
Регистрация: 18.10.2007
Сообщений: 12
По умолчанию выделить строку в DBGrid

всем привет!
в edit записываю слово и хочу выделить соответствующую строку в dbgrid. Нашла только DBGrid1.SelectedRows.CurrentRowSele cted:=True; но он помечает нашедшие строки а надо простое выделение на подобии dgRowSelect.
заранее благодарю)
All517 вне форума Ответить с цитированием
Старый 15.11.2007, 17:45   #2
dron-s
Форумчанин
 
Регистрация: 04.03.2007
Сообщений: 615
По умолчанию

на событии OnDrawColumnCell напиши следующее
Код:
var
  holdColor: TColor;
begin
  holdColor := dbgrideh1.Canvas.Brush.Color; {сохраняем оригинальный цвет}
  if dm.ISelContr.FieldByName('PER_NOMER_SVID').AsString = Edit1.text then
    begin
      dbgrideh1.Canvas.Font.Color := clBlack;
      dbgrideh1.Canvas.Brush.Color := clYellow;
      dbgrideh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
      dbgrideh1.Canvas.Brush.Color := holdColor;
    end;
dron-s вне форума Ответить с цитированием
Старый 15.11.2007, 18:39   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Если я вас правильно понял (а я понял правильно ), то вам нужно всего лишь:
Код:
procedure TMyForm.Edit1Change(Sender: TObject);
begin
Table1.Locate('Name',Edit1.Text,[loCaseInsensitive,loPartialKey]);
end;
где Name - имя поля, по которому вы хотите найти введенное в Edit1 слово.
Поиск начинается сразу, еще до ввода всех букв.
Успехов!
mihali4 вне форума Ответить с цитированием
Старый 16.11.2007, 06:23   #4
All517
Пользователь
 
Регистрация: 18.10.2007
Сообщений: 12
По умолчанию

[QUOTE=mihali4;48431]
Код:
procedure TMyForm.Edit1Change(Sender: TObject);
begin
Table1.Locate('Name',Edit1.Text,[loCaseInsensitive,loPartialKey]);
end;
QUOTE]


находит, правильно, но мне б еще чтоб он выделил найденное поле
All517 вне форума Ответить с цитированием
Старый 16.11.2007, 13:23   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
находит, правильно, но мне б еще чтоб он выделил найденное поле
Нет ничего проще.
Включите в DBGrid опцию AlwaysShowSelection...
А вообще - поизучайте устройство компонентов на досуге. И не забывайте про хэлп. Его ведь не просто так писали...
mihali4 вне форума Ответить с цитированием
Старый 24.08.2012, 12:43   #6
Joki
Пользователь
 
Регистрация: 28.04.2009
Сообщений: 10
По умолчанию

Цитата:
Сообщение от dron-s Посмотреть сообщение
на событии OnDrawColumnCell напиши следующее
Код:
var
  holdColor: TColor;
begin
  holdColor := dbgrideh1.Canvas.Brush.Color; {сохраняем оригинальный цвет}
  if dm.ISelContr.FieldByName('PER_NOMER_SVID').AsString = Edit1.text then
    begin
      dbgrideh1.Canvas.Font.Color := clBlack;
      dbgrideh1.Canvas.Brush.Color := clYellow;
      dbgrideh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
      dbgrideh1.Canvas.Brush.Color := holdColor;
    end;
Спасибо за код, мне он очень помог...
Joki вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выделить Диапозон Rom1k06 Microsoft Office Excel 4 01.09.2008 22:18
Как в DBgrid выделить определенную ячейку жирным? Dux БД в Delphi 6 10.08.2008 03:42
Как выделить всю строку в ListView MasterofCDM БД в Delphi 2 03.07.2008 16:13
выделить в одномерный массив строку матрицы с максимальном элементом 7karandashik7 Паскаль, Turbo Pascal, PascalABC.NET 9 03.07.2008 14:43
Выделить все Михаил Юрьевич Общие вопросы Delphi 1 21.02.2008 23:12