Показать сообщение отдельно
  #2  
Старый 07.06.2014, 08:17
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от Electronic_Arts
...у компонента нету события DrawColumnCell но есть DrawCell...
Что, реально как у обычной стрингсетки события что-ли? Проприетарной поделки этой не видел, поэтому точно не знаю, извнт, но раз такое дело, может прокатит вариант как для StringGrid, вот пример из drkb:
Код:
procedure TfrmMain.StringGrid1DrawCell(Sender: TObject; ACol, ARow: integer;
 Rect: TRect; State: TGridDrawState);
Const   //здесь определяем цвета.
clPaleGreen = TColor($CCFFCC);
clPaleRed =   TColor($CCCCFF);
begin
//Если ячейка получает фокус, то закрасить её другими цветами
if (gdFocused in State) then begin
  StringGrid1.Canvas.Brush.Color := clBlack;
  StringGrid1.Canvas.Font.Color := clWhite;
end
else //Если же ячейка теряет фокус, то закрашиваем её красным и зелёным
  if StringGrid1.Cells[ACol, ARow] = '2' then
StringGrid1.Canvas.Brush.color := clPalered
else
StringGrid1.canvas.brush.Color := clwhite;

//Теперь закрасим ячейки, но только, если ячейка не Title- Row/Column
//Естевственно это завит от того, есть у Вас title-Row/Columns или нет.
If (ACol > 0) and (ARow>0) then
begin
     //Закрашиваем бэкграунд
   StringGrid1.canvas.fillRect(Rect);
    //Закрашиваем текст (Text). Также здесь можно добавить выравнивание и т.д..
   StringGrid1.canvas.TextOut(Rect.Left,Rect.Top,StringGrid1.Cells[ACol,ARow]);
end;
end;


З.Ы. Тут на одном форуме подсказали что у DBAdvGrid за это отвечает событие OnGetCellColor и в нём должно быть такое
Код:
...
with (Sender as TDBAdvGrid) do
if Cells[ACol,ARow] = '1' then ABrush.Color:= clYellow
else
ABrush.Color:= clGreen;
...
жаль что проверить не могу
Ответить с цитированием