在RichEdit中,可以通过SelStart来设置选中文本的字体,可不可以不通过选中文本,而是直接在程序内部操作某一行,设置它的字体。比如,实现该功能的函数是,setRowFont(row: Integer, font:TFont),row就是行号,font是字体。谢谢。
解决方案 »
- 求助:image打开的图片很大,怎么才能鼠标左键点击能拖动图片查看?
- 求助:如何把<a href="http://www.sohu.com" target="_blank">按钮 </a> 连接到iwtraweb的控件使之打开新窗口
- 关于修改16进制文件
- 请用过TIdUDPServer帮忙看看这个简单的问题?
- 大家能谈谈delphi中nil的用法吗? 谢谢先!
- 问一个关于Delphi编译开关的问题。
- 请教,有关记录复制的问题.
- 那位大虾介绍一下Delhpi!
- 谈谈你对编程的看法???
- 如何将DBGRID中的多条记录通过QRDBTEXT同时打印出来!
- 两个listbox,如何从listbox2中删除与listbox1相同的项?
- UDP模式下的http代理如何使用?对方必须开通TCP端口吗?
RichEdit.Line(n).Font 是不可以的,恐怕没有这么简单吧。
用完了,再把 SelLength:=0; 不就可以了。
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;type
TForm1 = class(TForm)
REFile: TRichEdit;
Button1: TButton;
Button2: TButton;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
procedure ChangeLineFont(row:integer;FFont:TFont);
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure TForm1.ChangeLineFont(row:integer;FFont:TFont);
var
Start,Startback,j:integer;
begin
REFile.WordWrap :=false; //注意这里是为了保证回车2个字符的处理正常
Startback:=REFile.SelStart;
Start:=0;
for j:=0 to REFile.Lines.Count-1 do
begin
if j=row then
begin
REFile.SelStart:=Start;
REFile.SelLength:=Length(REFile.Lines.Strings[j]);
REFile.SelAttributes.Size:=FFont.Size;
Refile.SelAttributes.Name :=FFont.Name;
Refile.SelAttributes.Color := FFont.Color;
Refile.SelAttributes.Charset:=FFont.Charset;
Refile.SelAttributes.Pitch := FFont.Pitch;
Refile.SelAttributes.Style := FFont.Style;
Refile.SelAttributes.Height := FFont.Height;
REFile.SelLength:=0;
break;
end;
Start:=Start+Length(REFile.Lines.Strings[j])+2;
end;
REFile.SelStart:=Startback;
REFile.WordWrap :=true; //恢复
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
//你可以加载一个字体大小各不相同的的rtf文件,然后修改行字体.
REFile.Lines.LoadFromFile('c:\1.rtf');
end;procedure TForm1.Button2Click(Sender: TObject);
begin
ChangeLineFont(1,font); //修改第2行的字体
ChangeLineFont(2,font); //修改第3行的字体
end;end.