关于RichEdit文字颜色的问题2:

mygodsos 2003-12-13 11:12:13
比如:赤橙黄绿青蓝紫 7个字7种颜色的显示

谢谢各位大侠,我已经知道该这样做:

RichEdit1.Line.Add('赤橙黄绿青蓝紫');
RichEdit1.SelStart:=0;
RichEdit1.SelLength:=2;
RichEdit1.SelAttributes.Color:=clred;
RichEdit1.SelStart:=3;
RichEdit1.SelLength:=2;
RichEdit1.SelAttributes.Color:=cl...;
.....

但现在我想“赤”字是黑底红字,“橙”是蓝底黄色,由该如何做?
...全文
137 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
mygodsos 2003-12-16
  • 打赏
  • 举报
回复
哦,上面颜色的也可以这样写:
SendMessage(richedit1.Handle, EM_SETCHARFORMAT,SCF_SELECTION, LPARAM (@CharFormat));

换成

RichEdit1.Perform(EM_SETCHARFORMAT,SCF_SELECTION,LPARAM(@CharFormat));

也可以。
mygodsos 2003-12-16
  • 打赏
  • 举报
回复
我还学会了让RichEdit自动滚行到最底的写法。

RichEdit1.Perform(EM_SCROLLCARET,0,0);
或者是
RichEdit1.Perform(EM_SCROLL,SB_PAGEDOWN,0);

嘿嘿,谢谢!
不知道这两个有什么区别,效率上,或其他?
mygodsos 2003-12-16
  • 打赏
  • 举报
回复
谢谢两位前辈,我终于搞懂了。嘿嘿,体会, 蓝底黄字的显示例程:
implementation

{$R *.dfm}
uses richedit;

procedure TForm1.Button1Click(Sender: TObject);
var
CharFormat:TCharFormat2;
begin
s:='123456789';
RichEdit1.Clear;
RichEdit1.Lines.Add(s);
RichEdit1.SelStart:=0;
RichEdit1.SelLength:=9;
FillChar(CharFormat, SizeOf(CharFormat), 0);
CharFormat.cbSize:= SizeOf(TCharFormat2);
CharFormat.dwMask:= CFM_BACKCOLOR;
CharFormat.crBackColor:=clBlue;
SendMessage(richedit1.Handle, EM_SETCHARFORMAT,SCF_SELECTION, LPARAM (@CharFormat));
CharFormat.dwMask:=CFM_COLOR;
CharFormat.crTextColor:=clYellow;
SendMessage(richedit1.Handle, EM_SETCHARFORMAT,SCF_SELECTION, LPARAM(@CharFormat));
end;

给各位爱好者和我共享。
请大侠再看,有没有更简便的写法?
VHDLcn 2003-12-15
  • 打赏
  • 举报
回复
关注!
master_jt 2003-12-15
  • 打赏
  • 举报
回复
gz
jiayodo 2003-12-15
  • 打赏
  • 举报
回复
学习
chw_csdn_chw 2003-12-14
  • 打赏
  • 举报
回复
别用richedit了,用AAFont2.59吧,
AAFont2.59是一个label组件集,有能实现你需要的功能
请到delphi盒子下载
mygodsos 2003-12-14
  • 打赏
  • 举报
回复
阿吉大侠,能不能写个例句,我只是刚入门,不胜感激!
ptzld 2003-12-14
  • 打赏
  • 举报
回复
好像以前有这个问题,你搜一下吧
flyforlove 2003-12-14
  • 打赏
  • 举报
回复
控制richedit的背景色确实比较麻烦,没有什么好办法,
sweetgun(阿吉) 说的方法虽然不是好的解决方法,但是也只能这样了。
uses
..............,richedit;

procedure TForm1.Button1Click(Sender: TObject);
var
CharFormat2:TCharFormat2;
begin
FillChar(CharFormat2, SizeOf(CharFormat2), 0);
CharFormat2.cbSize:= SizeOf(TCharFormat2);
CharFormat2.dwMask:= CFM_BACKCOLOR;
CharFormat2.crBackColor:= clred;
SendMessage(richedit1.Handle, EM_SETCHARFORMAT,SCF_SELECTION, LPARAM(@CharFormat2));
end;

这只对你选中的文字有效。
mygodsos 2003-12-14
  • 打赏
  • 举报
回复
呵呵,谢谢chw_csdn_chw(chw)大侠,我看了,但我不会安装。
我是想写一个类似于zmud程序的mud客户端(telnet+VT100控制码),该控件能用吗?
sweetgun 2003-12-14
  • 打赏
  • 举报
回复
发送EM_SETCHARFORMAT消息给RichEdit控件,参数使用CHARFORMAT2结构,此结构允许你设置文字的背景色
angelface 2003-12-14
  • 打赏
  • 举报
回复
帮你up

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧