FMX - Pintar totalmente célula TGrid

Pergunte sobre todos os tipos de dúvidas relacionadas ao desenvolvimento de aplicativos Windows, Mac, iOS e Android.

Moderador: hermeson

Avatar do usuário
igorbastosib
Mensagens: 84
Registrado em: 03/Abr/2016, 23:05

FMX - Pintar totalmente célula TGrid

Mensagempor igorbastosib » 02/Ago/2017, 11:52

Estou tentando pintar totalmente as células do TGrid com link em um MemTable, já consigo pintar as células, mas elas não ficam "AllClient", pois fica uma margem no Top e Left. Segue imagem anexo.
Queria que o Rect da célula ocupasse todo o interior, ou seja, sem as margens.

Código para pistar as células específicas:

Código: Selecionar todos

procedure TfrmCRUDOpu.grdProducaoListaDrawColumnCell(Sender: TObject; const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF; const Row: Integer; const Value: TValue; const State: TGridDrawStates);
var
  AbgBrush : TBrush;
  ATextColor: TAlphaColor;
  ADateValue, ADateNow, ADateNowMais1, ADateLastDayOfWeek: TDate;
begin
  try
    { Cor do Texto }
    ATextColor := TAlphaColors.Black;
    { Cor do preenchimento }
    AbgBrush := TBrush.Create(TBrushKind.Solid, TAlphaColors.White);

    if (<TESTE AQUI>)
    then
    begin
      ADateValue := StrToDate(Value.ToString);
      ADateNow := Date;
      ADateLastDayOfWeek :=  ADateNow+(7-DayOfWeek(Date));
      if(ADateValue < ADateNow)then
      begin
        ATextColor := TAlphaColors.Gray;
      end else
      begin
        if(ADateValue = ADateNow)then
        begin
          AbgBrush.Color := TAlphaColors.Lightpink;
        end else
        if(ADateValue = (ADateNow+1))then
        begin
          AbgBrush.Color := TAlphaColors.Yellow;
        end else
        if(ADateValue <= ADateLastDayOfWeek)then
        begin
          AbgBrush.Color := TAlphaColors.MoneyGreen;
        end;
        { Pinta preenchimento }
        if(AbgBrush.Color <> TAlphaColors.White)then
        begin
          Canvas.FillRect(Bounds, 0, 0, [TCorner.TopLeft], 1, AbgBrush);
        end;
      end;
    end;

    { Pinta text }
    Canvas.Fill.Color := ATextColor;
    Canvas.FillText(Bounds, Value.AsString, false, 1, [], TTextAlign.Leading, TTextAlign.Center);
  finally
    AbgBrush.Free;
  end;
end;
Anexos
grid.jpg
grid.jpg (23.67 KiB) Exibido 107 vezes

Voltar para “Dúvidas Gerais”

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes