![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
||||
|
||||
|
Ребята всем привет
уже который день мучаюсь не могу понять как заставить этот компонент поменять цвет строки в зависимости от значения в ячейке у компонента нету события DrawColumnCell но есть DrawCell весь интернет обошел но не нашел метод как можно поменять цвет строки для события DrawColumnCell код выглядел так Код:
if (Sender as TDBGrid).DataSource.DataSet.FieldByName('fZero').AsInteger=1 then
Canvas.Brush.Color:=clRed;
DefaultDrawColumnCell(Rect, DataCol, Column, State);но как у компонента TDBAdvGrid справится с такой проблемой?? |
|
#2
|
||||
|
||||
|
Цитата:
Проприетарной поделки этой не видел, поэтому точно не знаю, извнт, но раз такое дело, может прокатит вариант как для 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; ... |
| Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Electronic_Arts (07.06.2014)
| ||
|
#3
|
||||
|
||||
|
Спасибо заработал
Код:
with (Sender as TDBAdvGrid) do if Cells[12,ARow] = '0' then If (ARow>0) then ABrush.Color:= clYellow else ABrush.Color:= clwhite; |