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

Это, конечно, красиво, но не то что нужноИгорь Акопян писал(а):для этого пишем обработчик OnDrawColumnCell
не забываем кроме нашего условия проверять последний параметр State: TGridDrawState

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

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


Значит никак с обычным гридом..... 

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

Было бы очень неплохо!!!Игорь Акопян писал(а):да не так всё плохо. Имхо ни один грид не даст универсальное выделение чего угодна и как угодно.
Чего за проблема-то, с учётом рисования формы работы на полчаса? Код привести?

- Игорь Акопян
- Сообщения: 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]
[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]
