Delphi Fire Monkey中的程序化字体大小

时间:2013-09-23 22:33:28

标签: delphi firemonkey

我正在尝试使用Fire Monkey库以编程方式修改字体大小,似乎没有任何效果。这是我最近的尝试:

procedure TForm2.Button1Click(Sender: TObject);
var
  i, j, k: integer;
  w: single;
begin
  k := 0;
  with StringGrid1 do
  begin
    canvas.Font.Size := 24;                         //set font size
    StringColumn2.visible := false;                 //hide this column
    for i := 0 to columncount - 1 do                //loop through columns
    begin
      columns[i].header := 'hdr' + inttostr(i + 1); //provide header content
      w := StringGrid1.Canvas.TextWidth(columns[i].header); //measure width needed
      for j := 0 to rowcount - 1 do                 //loop through rows
      begin
        k := k + 1;                                 //variable cell content
        if i = 0 then                               //do row label
          cells[i, j] := 'Lyr' + inttostr(k)
        else
        begin                                       //do row body
          cells[i, j] := inttostr(k);
        end;
        w := max(w, StringGrid1.Canvas.TextWidth(cells[i, j])); //measure width needed
      end;
      columns[i].Width := w + 10;                   //set width
    end;
  end;
end;

end.

canvas.Font.Size := 24对字体大小没有影响,但有一个有趣的副作用。更改字体大小会更改canvas.TextWidth提供的结果。因此,部分实现了字体大小调整。对于那些建议使用字体样式的人来说,没有一个对这个问题有效。在之前的练习中,我遇到了对font.size组件TEdit的更改的类似缺乏响应,但我不知道字体样式是否对该练习有效;我知道我没有设置任何。

1 个答案:

答案 0 :(得分:1)

StringGrid1 属性中,您有 StyledSettings 。您必须展开此属性并将 False 设置为需要更改的项目。

在这种情况下:尺寸