![]() |
|
|
Регистрация | << Правила форума >> | 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
|
||||
|
||||
![]() Цитата:
![]() Код:
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; Нет ничего не возможного. Вопрос только во времени... |