在onchange事件中对正在编辑的(行)拆分成word进行关键字搜索,最后修改颜色。

解决方案 »

  1.   

    1。定义多个常量,这些常量就是指定的关键字(匹配上的字),然后如果输入的字中有和这些常量一样的,就将其Font.color赋给你指定的颜色,如clRed等。
    2。将你定义的最长的常量的长度和最小的长度之和的一般作为循环长度效率最高。
    3。这个和你的算法有关系了。
      

  2.   

    基于行的关键字搜索,可以考虑不要用 TEdit 继承下来的控件,如 TMemo,RichEdit 可以考虑,关键是要知道 RTF 文件格式,但 RTF 是基于富文本的(非纯文本),如果处理了颜色的话,真正的ASCII 文本就要特别处理了,所以我觉得最好是从 TCustomControl 继承下来自己画,包括文本颜色的处理和显示。关于算法效率,我觉得应该采用部分显示的技术,就是指仅仅对显示给用户的部分文本进行颜色处理,如果通篇事先处理的话会很慢。可以看看 SynEdit 这个控件,免费的,带源码,看看他是怎么实现的
      

  3.   

    最好的是用第三方控件了,如果你要自己做,最好是用TRichEdit,因为颜色字体可以改变,并且比较简单的文件就是RTF文件, Windows本身又支持,而RichEdit又支持RTF文件,所以最好的解决办法是采用RTF,只要搞定RTF的文件格式就可以了,并且兼容性也很好
      

  4.   

    procedure TForm1.Button3Click(Sender: TObject);
    var i : integer;
    begin
      for i:=1 to 4 do
      begin
        with richedit1 do
        begin
          SelStart :=i*67 ;
          SelLength := i;
          with SelAttributes do
          begin
            Color := clRed;
            Size := 24;
            Name := '宋体';
          end;
        end;
      end;
    end;
    另外可用 FindText 找到你要的关键字后变色就可了