请教一个richedit设置显示文字颜色的问题

yct0605 2010-12-07 03:10:14
有一个access数据库,
ID sj lx nr
1 2010-11-20 11:20:30 考试 共260人参加组织的考试,考试成绩在3日内公布。
2 2010-11-21 12:20:30 测试 有20人参加该题目的测试,测试结果近期公布。
3 2010-11-22 13:20:30 巡考 市领导参加该校组织的巡考,日期为12月30日,请大家做好准备。
4 2010-11-23 14:20:30 考试 共有120人参加考试,内容分为A、B卷进行考试。

要求把每条数据的内容分成三行显示,颜色根据要求设置并显示在richedit里面,保存为rtf文件,
时间:2010-11-20 11:20:30
类型:考试
内容:共260人参加组织的考试,考试
成绩在3日内公布。


每条数据之间要有一个空行插入,现在遇到一个问题,当循环添加这几条数据的时候,第一条可以满足条件,但是到第二条及以后几条的时候,发现数据的颜色混换,请大家给点意见或代码,谢谢了!


for i:=0 to 4 do {4为测试的四条数据,数据不只四条,可以是多条数据}
begin
{zyjqstr:array[1..3] of string=('时间','类型','内容')}
{zyjqdata:array[1..12] of string=(前面所列的Access数据库数据)保存所有数据的数组,测试数据数组为12条数据}
{添加"时间"标题}
Sta:=Length(RichEdit1.Lines.Text);
Len:=Length(zyjqstr[1]);
RichEdit1.Lines.Add(zyjqstr[1]+zyjqdata[3*i+1]);
RichEdit1.SelStart:=Sta;
RichEdit1.SelLength:=Len;
RichEdit1.SelAttributes.Color:=clSkyBlue;
{修改"时间"内容颜色}
Sta_:=Sta+Len;
Len_:=Length(zyjqdata[3*i+1]);
RichEdit1.SelStart:=Sta_;
RichEdit1.SelLength:=Len_;
RichEdit1.SelAttributes.Color:=clYellow;

{添加"类型"标题}
Sta:=Length(RichEdit1.Lines.Text);
Len:=Length(zyjqstr[2]);
RichEdit1.Lines.Add(zyjqstr[2]+zyjqdata[3*i+2]);
RichEdit1.SelStart:=Sta;
RichEdit1.SelLength:=Len;
RichEdit1.SelAttributes.Color:=clSkyBlue;
{添加"类型"内容}
Sta_:=Sta+Len;
Len_:=Length(zyjqdata[3*i+2]);
RichEdit1.SelStart:=Sta_;
RichEdit1.SelLength:=Len_;
RichEdit1.SelAttributes.Color:=clNavy;

{添加"内容"标题}
Sta:=Length(RichEdit1.Lines.Text);
Len:=Length(zyjqstr[3]);
RichEdit1.Lines.Add(zyjqstr[3]+zyjqdata[3*i+3]);
RichEdit1.SelStart:=Sta;
RichEdit1.SelLength:=Len;
RichEdit1.SelAttributes.Color:=clSkyBlue;
{添加"内容"内容}
Sta_:=Sta+Len;
Len_:=Length(zyjqdata[3*i+3]);
RichEdit1.SelStart:=Sta_;
RichEdit1.SelLength:=Len_;
RichEdit1.SelAttributes.Color:=clGreen;

{第一条结束后添加一行空行,继续条件第二条数据}
RichEdit1.Lines.Add('');
end;
...全文
125 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yct0605 2010-12-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bdmh 的回复:]
你不能简单的Sta_:=Sta+Len;
你要逐行的加
[/Quote]
如果“内容”里面的文字信息比较多,可能有好几行,这个也要逐行加吗?
bdmh 2010-12-07
  • 打赏
  • 举报
回复
你不能简单的Sta_:=Sta+Len;
你要逐行的加
yct0605 2010-12-07
  • 打赏
  • 举报
回复
怎么没有人了吗?
yct0605 2010-12-07
  • 打赏
  • 举报
回复
怎么没有人了吗?
yct0605 2010-12-07
  • 打赏
  • 举报
回复
考虑有可能是获取数组长度的时候发生了错误。

5,386

社区成员

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

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