2015-07-29 8 views
1

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

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; 

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

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

Заранее благодарен!

Привет Lea

ответ

2

Простой способ: вы можете скрыть заголовок по снимите флажок опции заголовка в 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; 

Редактирование текста заголовка столбца в DesignTime, щелкнув правой кнопкой мыши на StringGrid и выберите «Элементы редактора». Выберите любой столбец и установите свойство заголовка в Object Inspector.

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

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

+0

работает отлично! Еще раз спасибо;) – Lea

-1

OnApplyStyleLookup:

var header:Theader; 
begin 
header:=THeader(TStringGrid(Sender).findStyleResource('Header')); 
if Assigned(header) then 
    header.height:=100; 
end; 
+1

Здравствуйте, и добро пожаловать в StackOverflow. Пожалуйста, добавьте больше информации в свой ответ, поскольку ответы только на код не подходят лучше всего на SO. Для получения дополнительной информации см. Http://stackoverflow.com/help/how-to-answer. – Chaithanya

Смежные вопросы