Как я могу изменить размер шрифта заголовка 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;