Работа с DBGrid

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ntal
Сообщения: 11
Зарегистрирован: 16 авг 2007, 14:31

А если в некоторых строчках (по какому-либо условию) цвет изменить нужно - это как сделать?
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

для этого пишем обработчик OnDrawColumnCell
не забываем кроме нашего условия проверять последний параметр State: TGridDrawState
Изображение
Ntal
Сообщения: 11
Зарегистрирован: 16 авг 2007, 14:31

Игорь Акопян писал(а):для этого пишем обработчик OnDrawColumnCell
не забываем кроме нашего условия проверять последний параметр State: TGridDrawState
Это, конечно, красиво, но не то что нужно ;)
Есть выборка из БД, отражаемая в гриде, ну допустим сотрудники фирмы какого-то отдела, и человек просит выделить цветом всех с именем "Иван"...., т.е. если значение ячейки спрки "Иван" - то выделять... :confused:
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

можно конечно поискать какой-нить супер-грид в инете,либо определить критерии которые могут интересовать ползателя, прикрутить форму задания параметров этого критерия, и таки OnDrawColumnCell ;)
Изображение
Ntal
Сообщения: 11
Зарегистрирован: 16 авг 2007, 14:31

Значит никак с обычным гридом..... :(
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

да не так всё плохо. Имхо ни один грид не даст универсальное выделение чего угодна и как угодно.
Чего за проблема-то, с учётом рисования формы работы на полчаса? Код привести?
Изображение
Ntal
Сообщения: 11
Зарегистрирован: 16 авг 2007, 14:31

Игорь Акопян писал(а):да не так всё плохо. Имхо ни один грид не даст универсальное выделение чего угодна и как угодно.
Чего за проблема-то, с учётом рисования формы работы на полчаса? Код привести?
Было бы очень неплохо!!! :)
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

ну вот как-то так:
[syntax='delphi']
procedure TForm1.GridDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
// в Edit'е имя которое надо подкрасить
// проверяем поле на наличие в нём указанного текста
if pos(AnsiUpperCase(Edit.Text), AnsiUpperCase(taZakazCustomer.AsString))>0 then
begin
Grid.Canvas.Brush.Color := clGreen; //собсно цвет
Grid.Canvas.FillRect(Rect); // закрасить!
Grid.DefaultDrawColumnCell(Rect, DataCol, Column, State); // вывести данные и всё прочее
end;
// поскольку не проверяется номер колонки - закрашивается вся строка, так же не проверяю State
// поэтому при выделении подсвеченная ячейка остаётся закрашенной нашим цветом
end;


[/syntax]
Изображение
Ответить