我想在Richedit中循环显示5条记录,新的在最下面。每新加一条,最上面的第一条就清除掉,而且每条的字体颜色还不一样。我要么实现了加一条新的记录,清除第一条;要么只能实现颜色显示。两个功能不能同时满足!我查了好多资料也没有找出来!能不能帮帮我啊!很急得!谢谢!

解决方案 »

  1.   

    好象这两个没有什么关系吧?procedure TForm1.Button1Click(Sender: TObject);
    const
      cl: Array [0..4] of TColor = (clRed, clGreen, clBlue, clBlack, clGray);
    var
      CurrentCl : TColor;
    begin
      CurrentCl := cl[RichEdit1.Lines.Count mod 5];
      if RichEdit1.Lines.Count > 5 then
        RichEdit1.Lines.Delete(0);
      richedit1.Lines.Add('Lines - ' + IntToStr(RichEdit1.Lines.Count));
      RichEdit1.SelAttributes.Color := CurrentCl;
    end;
    没有问题,但是颜色没有控制好,可以修改颜色的代码。
      

  2.   

    借用 CloneCenter兄的代码
    procedure TForm1.Button1Click(Sender: TObject);
    var
      CurrentCl : TColor;
    begin
      CurrentCl := TColor(round(random(100)*random(1001)));
      if RichEdit1.Lines.Count >= 5 then
        RichEdit1.Lines.Delete(0);
      richedit1.Lines.Add('Lines - ' + IntToStr(CurrentCl));
      if RichEdit1.Lines.Count >=5 then
      begin
        RichEdit1.SelStart := SendMessage(RichEdit1.Handle, EM_LINEINDEX, 4, 0);
      RichEdit1.SelLength:=length(RichEdit1.Lines[4]);
      RichEdit1.SelAttributes.Color := CurrentCl;
      //    RichEdit1.SetFocus;
      end
    end;
      

  3.   

    cll007 你的方法可以实现我的要求,我只需稍加改动。非常感谢你!