如何在Firemonkey stringgrid单元格中使用不同的字体样式和图标

时间:2012-03-06 10:46:24

标签: delphi delphi-xe2 firemonkey

似乎没有太多关于这个主题的信息,所以希望有人可以给出一些建议。

我想在stringgrid单元格中更改文本不同部分的颜色和样式。

实施例: 20-02-2011 - 文件标题

是否也可以在stringgrid单元格中显示图标?

1 个答案:

答案 0 :(得分:0)

确实可以在字符串网格中显示图标或位图,Monkey Styler博客包含如何在FMX网格中自定义单元格显示的示例。

http://monkeystyler.com/blog/entry/firemonkey-grid-basics-custom-cells-and-columns

考虑到你问题的另一部分,你必须构建一个样式,以显示不同字体的文本,因为FMX没有richtext等价物或HTML渲染组件(我确信后者会来,前者我对获得一段时间没有信心!)。您必须在样式中为每个不同的字体大小/样式等设置文本组件,您需要命名文本元素(使用binding或stylename属性)并使用ongetvalue和onsetvalue中的代码处理文本内容的设置。事件(我想你也可以使用onapplystyle事件)以粗体显示一些文本,而不显示一些文本。

然后事件处理程序将使用绑定 - 这更容易设置但是 - 根据我的经验 - 错误;

mycell.binding['boldtext']:='sometext';

或者使用findstyleresource找到stylename的样式元素;

tempobj:=mycell.findstyleresource('boldtext');
if tempobj is ttext then
  ttext(tempobj).text='sometext';

请原谅任何不良的编码风格,但如果你为风格中的ttext组件设置自动调整为真,你会得到一般的想法(我希望),并且你可以将它们对齐 - 大多数 - 你所追求的。唯一的问题是生成的文本看起来并不完全无缝,因为左边的自动调整和对齐并不能真正为你在richtext或HTML显示中获得的字体提供相同的空间。你应该能够填充填充(给左边填充一个负数应该允许你删除任何额外的空间)但你必须忍受与正确的字体提示和对齐相比不完全完美。