Перейти к содержанию
Fire Monkey от А до Я

tupak

Пользователи
  • Постов

    1
  • Зарегистрирован

  • Посещение

Активность репутации

  1. Like
    tupak получил реакцию от #WAMACO в Изменение свойства шрифта одной ячейки в FireMonkey TStringGrid DELPHI XE6   
    Всем доброго времени суток, очень помогла тема и ответы выше. Решил добавить небольшой пример касательно  "Tgriddrawstates" ( Указание выделена ли строка, выделена ячейка и в фокусе ли ячейка или нет ) Может быть полезно новичкам.
    procedure TForm4.StringGrid1DrawColumnCell(Sender: TObject; const Canvas: TCanvas; const Column: TColumn; const [Ref] Bounds: TRectF; const Row: Integer; const [Ref] Value: TValue; const State: TGridDrawStates); var TextLayout : TTextLayout; TextRect: TRectF; begin if TGridDrawState.RowSelected in State then Canvas.Fill.Color := TAlphaColors.Blue; else Canvas.Fill.Color := TAlphaColors.white; end; вместе с кодом отрисовки ячейки грида выше можно управлять цветом фона да и чем угодно при например выделении строки.
  2. Like
    tupak отреагировална Brovin Yaroslav в Изменение свойства шрифта одной ячейки в FireMonkey TStringGrid DELPHI XE6   
    Поменялась логика работы грида. Теперь он самостоятельно отрисовывает ячейки и не создает для каждой ячейки отдельный контрол. Поэтому старый способ работать не будет.
     
    Новый вариант решения - это самостоятельно нарисовать ячейку грида:
    uses FMX.TextLayout, System.UIConsts; procedure TForm2.Grid1DrawColumnCell(Sender: TObject; const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF; const Row: Integer; const Value: TValue; const State: TGridDrawStates); const HorzTextMargin = 2; VertTextMargin = 1; var TextLayout : TTextLayout; TextRect: TRectF; begin // Здесь определяем какую ячейку будем перерисовывать if (Column = StringColumn1) and (Row = 1) then begin TextRect := Bounds; TextRect.Left := TextRect.Left + 1; TextRect.Bottom := TextRect.Bottom -1; TextRect.Inflate(-HorzTextMargin, -VertTextMargin); Canvas.FillRect(TextRect, 0, 0, AllCorners, 1); TextLayout := TTextLayoutManager.DefaultTextLayout.Create; try TextLayout.BeginUpdate; try TextLayout.WordWrap := False; TextLayout.Opacity := Column.AbsoluteOpacity; TextLayout.HorizontalAlign := StringGrid1.TextSettings.HorzAlign; TextLayout.VerticalAlign := StringGrid1.TextSettings.VertAlign; TextLayout.Trimming := TTextTrimming.Character; TextLayout.TopLeft := TextRect.TopLeft; TextLayout.Text := Value.ToString; TextLayout.MaxSize := PointF(TextRect.Width, TextRect.Height); { Пользовательские настройки отрисовки } TextLayout.Font.Family := 'Times New Roman'; TextLayout.Font.Style := [ TFontStyle.fsBold ]; TextLayout.Font.Size := 14; TextLayout.Color := claBlueViolet; finally TextLayout.EndUpdate; end; TextLayout.RenderLayout(Canvas); finally TextLayout.Free; end; end; end;
  3. Like
    tupak получил реакцию от Brovin Yaroslav в Изменение свойства шрифта одной ячейки в FireMonkey TStringGrid DELPHI XE6   
    Всем доброго времени суток, очень помогла тема и ответы выше. Решил добавить небольшой пример касательно  "Tgriddrawstates" ( Указание выделена ли строка, выделена ячейка и в фокусе ли ячейка или нет ) Может быть полезно новичкам.
    procedure TForm4.StringGrid1DrawColumnCell(Sender: TObject; const Canvas: TCanvas; const Column: TColumn; const [Ref] Bounds: TRectF; const Row: Integer; const [Ref] Value: TValue; const State: TGridDrawStates); var TextLayout : TTextLayout; TextRect: TRectF; begin if TGridDrawState.RowSelected in State then Canvas.Fill.Color := TAlphaColors.Blue; else Canvas.Fill.Color := TAlphaColors.white; end; вместе с кодом отрисовки ячейки грида выше можно управлять цветом фона да и чем угодно при например выделении строки.
×
×
  • Создать...