Страница 2 из 2
Re: Работа с DBGrid
Добавлено: 01 окт 2007, 09:19
Ntal
А если в некоторых строчках (по какому-либо условию) цвет изменить нужно - это как сделать?
Re: Работа с DBGrid
Добавлено: 01 окт 2007, 10:15
Игорь Акопян
для этого пишем обработчик OnDrawColumnCell
не забываем кроме нашего условия проверять последний параметр State: TGridDrawState
Re: Работа с DBGrid
Добавлено: 01 окт 2007, 10:40
Ntal
Игорь Акопян писал(а):для этого пишем обработчик OnDrawColumnCell
не забываем кроме нашего условия проверять последний параметр State: TGridDrawState
Это, конечно, красиво, но не то что нужно

Есть выборка из БД, отражаемая в гриде, ну допустим сотрудники фирмы какого-то отдела, и человек просит выделить цветом всех с именем "Иван"...., т.е. если значение ячейки спрки "Иван" - то выделять...

Re: Работа с DBGrid
Добавлено: 02 окт 2007, 17:46
Игорь Акопян
можно конечно поискать какой-нить супер-грид в инете,либо определить критерии которые могут интересовать ползателя, прикрутить форму задания параметров этого критерия, и таки OnDrawColumnCell

Re: Работа с DBGrid
Добавлено: 03 окт 2007, 08:01
Ntal
Значит никак с обычным гридом.....

Re: Работа с DBGrid
Добавлено: 03 окт 2007, 10:30
Игорь Акопян
да не так всё плохо. Имхо ни один грид не даст универсальное выделение чего угодна и как угодно.
Чего за проблема-то, с учётом рисования формы работы на полчаса? Код привести?
Re: Работа с DBGrid
Добавлено: 03 окт 2007, 14:45
Ntal
Игорь Акопян писал(а):да не так всё плохо. Имхо ни один грид не даст универсальное выделение чего угодна и как угодно.
Чего за проблема-то, с учётом рисования формы работы на полчаса? Код привести?
Было бы очень неплохо!!!

Re: Работа с DBGrid
Добавлено: 04 окт 2007, 15:08
Игорь Акопян
ну вот как-то так:
[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]