2016-10-10 8 views
2

도움이 필요합니다. 델파이 10.1 베를린을 사용하고 있습니다. 다른 Previus 버전의 Embarcadero Delphy Code Gear와는 몇 가지 다른 점이 있습니다. TGrid의 행에서 글꼴 색을 변경해야합니다. 이 다음 코드 파크 나는 색상을 backgrond에 변경하지만 난 단지 글꼴 색을 변경해야fmx 델피 베를린 Tgrid의 행에서 글꼴 색상을 변경하는 방법

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

이 cuaps 참조 : http://stackoverflow.com/questions/32887019/font-color-on-a-st ringgrid-with-firemonkey 또는 this : http://stackoverflow.com/questions/22095414/how-to-change-background-color-of-fmx-tgrid-row-depend-on-value-in-xe4 –

답변

3

대신 Column.DefaultDrawCell()를 호출, 당신은 그리드 OnDrawColumnCell() 이벤트에 FMX.Graphics.TCanvas.FillText()를 사용할 수 있습니다.

documentation

은 세부 사항을 설명하지만, 요점은 Canvas.FillText()

샘플 코드를 호출하기 전에 원하는 색상 Canvas.Fill.Color을 설정하는 것입니다 :

enter image description here :

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; 

을 그리고 그것은 보이는 방법

+0

고마워요. 설명. BTW, 적어도 Delphi v10.2부터 TTextAlign.taLeading은 더 이상 사용되지 않으므로 TTextAlign.Leading을 사용하십시오. taCenter는 이제 센터와 다른 사람들을 위해 동일하게 적용됩니다. – Ashlar

+0

고맙다 @Ashlar가 머리를 고쳐줍니다. –