RichEdit中如何改变一行中某个字符的字体,大小(行号不确定)?(100分)

  • 主题发起人 主题发起人 dx
  • 开始时间 开始时间
D

dx

Unregistered / Unconfirmed
GUEST, unregistred user!
如我想将
字符串 S0,2,3,5,6,7(a,-2b,2c,2d) 中 's' 搞大一点,字体也换一下,
不知如何做.
注:字符串所在行不确定,但肯定在行首.
 
以下是一个改变字体的例子,
可以把选中的字体用自己定义的字体替换,你可以参考一下.
procedure TForm1.Button1Click(Sender: TObject);
var
MyFont: TFont;
begin
MyFont:=TFont.Create;
MyFont.Charset:=GB2312_CHARSET;
MyFont.Name:='宋体';
MyFont.Size:=50;
MyFont.Color:=clGreen;
RichEdit1.SelAttributes.Assign(MyFont);
MyFont.Free;
end;
 
怎么选定 's' 字符呢?
要在程序中选定,又不能让他变黑.
 
此问题关键之处应为找行号这一步。
给你一段代码,其中行号,列号是常量,你可以自己变为其它形式。
procedure TForm1.Button2Click(Sender: TObject);
const
RowNum=2;
ColNum=3;
var fp,i,j:integer;
begin
fp:=0;
i:=0;
j:=1;
while j<rownumdo
begin
fp:=RichEdit1.FindText(#13#10,i,Length(richedit1.Text),[stMatchCase]);
if fp=-1 then
begin
ShowMessage('notfound');
exit;
end;
i:=fp+3;
inc(j);
end;
Form1.Caption:=IntToStr(fp);
RichEdit1.SelStart:=fp+2;
RichEdit1.SelLength:=ColNum;
with RichEdit1.SelAttributesdo
begin
Name:='宋体';
Size:=24;
Color:=clRed;
end;
RichEdit1.SetFocus;
end;
 
好像可用如下的属性,我记不是很清楚:
RichEdit1.DefAttributes.Font.Name
每次你要写东西时,只需改变类似上面的属性即可,按你的要求,可
在输出S前设定字体、大小等,然后改变此缺省属性继续下面的输出,
即可达到你要求的效果。
 

RichEdit1.DefAttributes改了好象通篇的属性都一起变。
 
上午发的code因为一个小于号...重贴!
procedure TForm1.Button1Click(Sender: TObject);
const
RowNum=2;
ColNum=3;
var fp,i,j:integer;
begin
fp:=0;
i:=0;
j:=1;
while j<Rownumdo
begin
fp:=RichEdit1.FindText(#13#10,i,length(RichEdit1.Text),[]);
if fp=-1 then
ShowMessage('Row NOT Found!');
i:=fp+3;
inc(j);
end;
RichEdit1.SelStart:=fp+2;
RichEdit1.SelLength:=ColNum;
with RichEdit1.SelAttributesdo
begin
Color:=clRed;
Size:=24;
Name:='宋体';
end;
end;
 
如果有多个 's' ,但只想改变其中一个,怎么办?
 
接受答案了.
 
写了一个函数帮你完成这个任务。
function FindAndSet(RE: TRichEdit;
Const C: String;
Inde: Integer): Boolean;
var
I, J, K: Integer;
begin
Result := False;
With REdo
begin
I := -1;
K := 1;
J := Length(Text);
while (I < J) and (K <= Inde)do
begin
I := FindText(C, I+1, (J-I), []);
If I = -1 then
Exit
else
Inc(K);
end;
If K <> Inde+1 then
Exit;
Result := True;
SelStart := I;
SelLength := Length(C);
with SelAttributesdo
begin
Color := clRed;
Size := 24;
Name := '宋体';
end;
end;
end;

使用时调用:
If FindAndSet(RichEdit1, 's', 5) then
ShowMessage('YES!')
else
ShowMessage('NO!');
其中5是出现的次数,
's'是找的串,不论位置,
RichEdit1就不用说了吧?:)
100分快拿来!
 
倒霉!
看问题的时候还没结束,想到答案按了发出的时候已结束!
真@#$@#$#@
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
后退
顶部