在C ++中以编程方式设置Firemonkey控件字体

时间:2015-06-12 20:08:42

标签: c++ firemonkey c++builder-xe7

我有一个自定义的Firemonkey控件,它扩展了在表单上动态创建的TEdit。我正在尝试使用以下方法设置它的字体大小:

Search->Font->Size = 15;

但是,控件上的字体保持不变。

我有另一个已经在表单上的相同类型的控件,我可以通过编程方式更改字体大小。我注意到使用此控件,如果Size属性中StyledSettings设置为false,我可以更改字体,而如果Size设置设置为true,则无法更改字体大小。

因此,当我创建自定义控件时,我尝试以编程方式将Size属性设置为false,但是我无法弄清楚如何执行此操作。

我试过了:

Search->StyledSettings.Size = false;

Search->StyledSettings = ListBox->StyledSettings - [TStyledSetting.ssSize];

它们都不会编译。如何在运行时确保在我的自定义控件上删除此属性?或者我还有另一种设置字体的方法吗?

1 个答案:

答案 0 :(得分:2)

  

但是,控件上的字体保持不变。

     

我有另一个已经在表单上的相同类型的控件,我可以通过编程方式更改字体大小。我注意到使用此控件,如果在StyledSettings属性中将Size设置设置为false,我可以更改字体,而如果Size设置设置为true,则无法更改字体大小。

这是记录在案的行为:

Using the StyledSettings Property

  

更改TTextSettings类型对象的文本表示属性时,请记住在更改属性值时(前一个示例中的TextSettings.Font.Size属性),则实际更改对象的仅当ITextSettings.StyledSettings属性不包含TStyledSetting.Size常量时才会发生视图。Relation between TStyledSetting constants and TTextSettings properties”表显示哪些TStyledSetting常量控制TTextSettings文本表示属性的处理。

FMX.Graphics.ITextSettings

  

请记住,当您更改属性的值(例如TextSettings.FontColor属性)时,仅当StyledSettings属性不包含TStyledSetting.FontColor常量时,才会实际更改控件的视图。 下表显示哪些TStyledSetting常量控制处理哪些TTextSettings文本表示属性。

     

TStyledSetting常量与TTextSettings属性之间的关系

TStyledSetting   Dependent TTextSettings   Meaning 
   Constant             Properties

Family           TFont.Family              Font name. 
Size             TFont.Size                Font size. 
Style            TFont.Style               Font style (italic, bold). 
FontColor        FontColor                 Font color. 
Other            HorzAlign, VertAlign,     How to align and show the text.  
                 Trimming, and WordWrap.

  

因此,当我创建自定义控件时,我尝试以编程方式将Size属性设置为false,但是我无法弄清楚如何执行此操作。

C ++中的正确​​语法是:

Search->StyledSettings = Search->StyledSettings >> TStyledSetting::Size;