用过RichEdit的来看看吧, 应该是很简单的. (100分)

  • 主题发起人 主题发起人 hejiesi
  • 开始时间 开始时间
H

hejiesi

Unregistered / Unconfirmed
GUEST, unregistred user!
RichEdit用Lines.LoadFormFile 加载一个rtf文件时可以正确显示该文件的内容,
但用Lines.Text = 和 Lines.LoadFromStream时它把那些控制的标签也显示了,
怎样解决这个问题.我的目的是显示一段文本,文本中某些字符串的字体, 颜色等
跟其他的不同,就此而已.如果有相应的带源程序的控件也可以.请大侠们指点吧.
 
richedit要修改颜色,只能针对选择文字。
所以你必须先选择要变颜色的部分文字,然后修改颜色,再选择下一段。

应该是selstart和sellength两个属性设置选择区域吧,我记得。
 
to DNChen:
选择要变颜色的部分文字,然后修改颜色,这个方法我试过,但很奇怪的是在2000里没有
任何问题,但在98就不行了.同样在2000下Lines.Text = 和 Lines.LoadFromStream也是可
以的,但在98下就不行,我想是RichEdit的版本问题吧,但我不知道怎样解决.
我是根据 rtf 的文件格式动态生成一段文本的,所以最好是不用选择文字那种方法.
 
不明白你的意思!
 
hehe ,那我就不动了
 
你们试一下把下面的这段文本在98下用TRichEdit控件正确显示出来.如果把它存成 rtf 文件
再用Lines.LoadFormFile 是可以的, 但用Lines.Add 下面的字符串的话会有问题.

{/rtf1/ansi/deff0/deftab720{/fonttbl{/f0/fnil MS Sans Serif;}{/f1/fnil/fcharset2 Symbol;}{/f2/fswiss/fprq2 System;}{/f3/fnil Default;}{/f4/fnil/fcharset134 Default;}{/f5/fnil/fcharset134 MS Sans Serif;}{/f6/fnil/fcharset2 Kingsoft Phonetic Plain;}{/f7/fnil/fcharset134 /'cb/'ce/'cc/'e5;}}
{/colortbl/red0/green0/blue0;/red255/green0/blue0;/red0/green0/blue255;}
/deflang2052{/info{/horzdoc }{/*/fchars !),.:/'3b?/}]/'a1/'a2/'a1/'a3/'a1/'a4/'a1/'a5/'a1/'a6/'a1/'a7/'a1/'a8/'a1/'a9/'a1/'aa/'a1/'ab/'a1
/'ac/'a1/'ad/'a1/'af/'a1/'b1/'a1/'b3/'a1/'b5/'a1/'b7/'a1/'b9/'a1/'bb/'a1/'bd/'a1/'bf/'a1/'c3/'a3/'a1/'a3/'a2/'a3/'a7/'a3/'a9/'a3/'ac/'a3/'ae/'a3/'ba/'a3/'bb/'a3/'bf/'a3/'dd/'a3/'e0}
{/*/lchars ([/{/'a1/'ae/'a1/'b0/'a1/'b2/'a1/'b4/'a1/'b6/'a1/'b8/'a1/'ba/'a1/'bc/'a1/'be/'a3/'a8/'a3/'db/'a3/'fb/'a3/'ae/'a1/'a4}}/pard/plain/f5/fs28/cf2/b dabble/plain/f7/fs20/par [/plain/f6/fs20/cf1 5dAbl /plain/f7/fs20 ]/par /par 词库: GRE /par v.弄湿, 弄水, 涉足/par fiddle putter splash splatter toy /par}
 
procedure TForm1.Button1Click(Sender: TObject);
var Fmt :TCharFormat2;
begin
Fmt.cbSize := SizeOf(Fmt);//这里放传递的结构大小,系统通过这个知道传递的是CharFormat还是CharFormat2
Fmt.dwMask := CFM_COLOR or CFM_BACKCOLOR or CFM_Weight;//告诉系统只有字体颜色和背景颜色两个字段的值有效
Fmt.crTextColor := clRed;//设置字体颜色
Fmt.crBackColor := clwhite;//设置字体背景色
fmt.wWeight :=0;
// RichEdit1.SelAttributes
RichEdit1.Perform(EM_SETCHARFORMAT,SCF_SELECTION,integer(@Fmt));//发EM_SETCHARFORMAT消息给RichEdit
//其中SCF_SELECTION表示该设置只对选择的文字有效,具体用法参考win32 SDK HELP
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
with RichEdit1.SelAttributes do
begin
Color := clRed;
Height := Height + 5;
end;
end;
 
你在 98 下再装个中文版的 Office 试一试
 
多人接受答案了。
 
后退
顶部