怎样获得输入框里字符串的字体(100分)

  • 主题发起人 主题发起人 PhoenixCry
  • 开始时间 开始时间
P

PhoenixCry

Unregistered / Unconfirmed
GUEST, unregistred user!
比如用richedit里写一串字符,然后多次更改它的不同字符的字体后,怎么获得各个字符的字体呢?多谢了!
 
就是他的font值
 
但是字符串的每个字符是char型,它有font属性吗?
 
一个很蠢的方法:
with RichEdit1 do
for i := 1 to Length(Lines.Text) do
begin
SelStart := i;
SelLength := 1;
Font := SelAttribute.Font;//这就是你需要的
end;

但是,这种方法是非常非常慢的。我以前用过,受不了。

另一种方法就是把RichEdit1.Text保存为rtf文件,自己分析
这个文件,把font信息提取出来,也很麻烦的,但是速度应该
会比较快。

 
在RichEdit的OnSelectionChange事件里,读取RichEdit的SelAttributes属性,
如:
procedure RichEdit1SelectionChange(...)
begin
with RichEdit1.SelAttributes do
begin
FontName := Name
//读取字体名称
FontSize := Size
//读取字体大小
...
end;
end;
 
VCL帮助文档中有这么一句:
<B>
If no text is selected, SelAttributes represents the attributes of
the cursor position.
</B>
所以上面的代码可以达到目的,我以前就是这么做的。
 
如果选中的字体不一样
会得到什么结果?
 
多人接受答案了。
 
后退
顶部