我在Delphi Firemonkey XE7中为应用程序创建了Stringgrid,并用我的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;


我希望你们中的一些人可以理解这段代码的作用...
picture可能有帮助。

我的问题现在是:如何设置标题以及如何扩大标题的字体大小,或者-如果无法做到-如何禁用,删除或隐藏标题?

提前致谢!

问候利

最佳答案

简单方法:您可以在设计时通过取消选中StringGrid.Options中的Header选项来隐藏标头。

或者,在运行时: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,通过从Columns复制值在TCustomGrid.UpdateHeader方法中进行更新。没有属性,事件或方法可以从FMX.Grid单元外部访问FHeader ...
但是您仍然可以自定义样式。只需在样式编辑器中选择stringgridstyle.background.header并在“对象检查器”中编辑Height属性。

关于delphi - 如何在Delphi Firemonkey XE7中更改Stringgrid标题的字体大小?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31704675/

10-10 17:22