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

4

关于这个主题似乎没有太多信息,希望有人能提供一些建议。

我想改变字符串网格单元格中不同部分文本的颜色和样式。

例如:20-02-2011 - 文档标题

是否还可以在字符串网格单元格中显示图标?


2
在一个单元格中吗?如果是这样,我认为您需要使用TGrid,然后创建一个自定义的单元格/列,其中包含两个TText组件,每个字体样式一个(但请注意,我发现在样式中设置字体存在问题)。请参阅我的文章以了解自定义网格单元格:http://monkeystyler.com/blog/entry/firemonkey-grid-basics-custom-cells-and-columns - Mike Sutton
1个回答

0

在字符串网格中显示图标或位图是完全可能的,Monkey Styler博客提供了一个示例,展示如何自定义FMX网格中的单元格显示。

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

关于你问题的另一部分,你需要构建一个样式来显示不同字体的文本,因为FMX目前还没有富文本等效或HTML渲染组件(我相信后者会出现,前者我不确定要等多久!)。你需要在样式中为每个不同的字体大小/样式等设置一个文本组件,你需要使用绑定或样式名称属性来命名文本元素,并在ongetvalue和onsetvalue事件中使用代码处理文本内容的设置(我想你也可以使用onapplystyle事件)以加粗一些文本并使一些文本不加粗。
然后,事件处理程序将使用绑定 - 这更容易设置但在我的经验中存在错误;
mycell.binding['boldtext']:='sometext';

或者使用findstyleresource按样式名称查找样式元素;

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

请忽略任何不好的编码风格,但是如果您在样式中将ttext组件的autosize设置为true并将它们左对齐,您就可以得到大致想要的效果(希望如此)。唯一的问题是,由于自动调整大小和左对齐并不能真正给您提供与richtext或HTML显示相同的字体间距,因此生成的文本看起来并不完全无缝。您应该能够调整填充(为左填充设置负数应该允许您删除任何额外的空格),但是与正确的字体提示和对齐相比,这种方法并不完美。


保罗,我的文章涉及TGrid,而不是TStringGrid。我从未在FMX中使用过字符串网格,因此无法评论它是否有效。 - Mike Sutton
我只是举例说明你可以在单元格中实际上让这两个组件工作;并不是说它在stringgrid组件中真的会起作用(虽然我不会使用它,我会使用grid)。 - Paul Foster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接