2016-10-10 4 views
2

НУЖНА ПОМОЩЬ .. Я использую delphi 10.1 berlin. Есть некоторые отличия от другой версии предиума Embarcadero Delphy Code Gear. Мне нужно изменить цвет шрифта в строках TGrid. Whith следующего кода я изменится backgrond цвета, но мне нужно изменить только цвет шрифта:fmx delphi berlin Как изменить цвет шрифта в строках Tgrid

aRowColor.Color := arSTATUS_GRID_COLOR[0]; 
    Canvas.FillRect(Bounds, 0, 0, [], 1, aRowColor); 
    Column.DefaultDrawCell(Canvas, Bounds, Row, Value, State); 
+0

См. Этот документ: http://stackoverflow.com/questions/32887019/font-color-on-a-st ringgrid-with-firemonkey или это: http://stackoverflow.com/questions/22095414/how-to-change-background-color-of-fmx-tgrid-row-depend-on-value-in-xe4 –

ответ

3

Вместо вызова Column.DefaultDrawCell(), вы можете использовать FMX.Graphics.TCanvas.FillText() в сетках OnDrawColumnCell() события.

documentation объясняет подробности, но главное заключается в том, чтобы установить Canvas.Fill.Color до нужного цвета перед вызовом Canvas.FillText()

Пример кода:

procedure TForm28.Grid1DrawColumnCell(Sender: TObject; const Canvas: TCanvas; 
    const Column: TColumn; const Bounds: TRectF; const Row: Integer; 
    const Value: TValue; const State: TGridDrawStates); 
begin 
    case Row of 
    0: Canvas.Fill.Color := TAlphaColors.Red; 
    1: Canvas.Fill.Color := TAlphaColors.Blue; 
    2: Canvas.Fill.Color := TAlphaColors.Green; 
    3: Canvas.Fill.Color := TAlphaColors.Blueviolet; 
    end; 
    Canvas.FillText(Bounds, Value.AsString, false, 1, [], TTextAlign.Leading, TTextAlign.Center); 
end; 

И как это выглядит:

enter image description here

+0

Спасибо за объяснение. BTW, по крайней мере, Delphi v10.2 TTextAlign.taLeading устарел, используйте TTextAlign.Leading. То же самое касается taCenter, как сейчас только Center и т. Д. Для других, – Ashlar

+0

Спасибо @Ashlar за хедз-ап, исправлено –

Смежные вопросы