Как я могу изменить размер шрифта заголовка Stringgrid в Delphi Firemonkey XE7?

Я создал Stringgrid в Delphi Firemonkey XE7 для приложения и заполнил его данными из моей базы данных MySQL. Чтобы увеличить размер шрифта, я использовал этот код:

procedure TFormSearchRecipient.sgRecipientDrawColumnCell(Sender: TObject;
  const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF;
  const Row: Integer; const Value: TValue; const State: TGridDrawStates);
var b : TRectF; border: integer;
begin
  //following leaves in the end a border so that the marked item can be seen
  b := bounds;
  border:= 2;
  b.Top := b.Top + border;
  b.Left := b.Left - border;
  b.Height := b.Height - 2 * border;
  b.Width := b.Width - 2 * border;

  //colors the background white so that the data cannot be seen anymore
  Canvas.Fill.Color := TAlphaColorRec.White;
  Canvas.FillRect(b, 0, 0, [], 1);
  //change the canvas text options
  Canvas.Fill.Color := TAlphaColorRec.Black;
  Canvas.Font.Size := 25;
  //write the content
  Canvas.FillText(Bounds, Value.AsString , False, 1, [] , TTextAlign.Leading);
end;

Я надеюсь, что некоторые из вас могут понять, что делает этот код... Эта картина может помочь.

Мой вопрос сейчас: как я могу установить заголовок и как я могу увеличить размер шрифта заголовка или - если это невозможно - как я могу отключить, удалить или скрыть заголовок?

Заранее спасибо!

Привет Леа

2 ответа

Решение

Простой способ: вы можете скрыть заголовок, сняв флажок с опции Header в StringGrid.Options во время разработки.

Или во время выполнения: StringGrid.Options:=StringGrid.Options - [TGridOption.Header]

Для рисования текста заголовка вы можете использовать событие OnDrawColumnHeader. Например:

procedure THeaderFooterForm.sg1DrawColumnHeader(Sender: TObject;
  const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF);
begin
  Canvas.Fill.Color := TAlphaColorRec.White;
  Canvas.FillRect(Bounds, 0, 0, [], 1);
  Canvas.Font.Size := 25;
  Canvas.Fill.Color := TAlphaColorRec.Black;
  Canvas.FillText(Bounds, Column.Header , False, 1, [] , TTextAlign.Leading);
end;

Отредактируйте текст заголовка столбца во время разработки, щелкните правой кнопкой мыши StringGrid и выберите "Редактор элементов". Выберите любой столбец и установите свойство заголовка в инспекторе объектов.

Или во время выполнения: sg1.Columns[zero_based_column_index].Header:='some text';

Последний вопрос - как установить высоту заголовка... Я не знаю, как это сделать во время выполнения. TStringGrid и TCustomGrid используют приватное поле FHeader, которое обновляется в TCustomGrid.UpdateHeader метод путем копирования значений из столбцов. Нет свойства, события или метода для доступа к FHeader снаружи из модуля FMX.Grid... Но вы все равно можете настроить стиль. Просто выберите stringgridstyle.background.header в редакторе стилей и отредактируйте свойство Height в Object Inspector.

OnApplyStyleLookup:

var header:Theader;
begin
header:=THeader(TStringGrid(Sender).findStyleResource('Header'));
if Assigned(header) then
   header.height:=100;
end;
Другие вопросы по тегам