大家好,我是新手,怎样在RichEdit里高亮显示指定行、列位置上的字符阿?谢谢了

解决方案 »

  1.   

    很简单啊:
    procedure HighlightText(Obj: TRichEdit; Row, Col, Len: Integer);
    var
      Fmt: TCharFormat2;
      n: Integer;
    begin
      n := SendMessage(Obj.Handle, EM_LINEINDEX, Row, 0) + Col;
      Obj.SelStart := n;
      Obj.SelLength := Len;       // 选中要高亮显示的文字
      Fmt.cbSize := sizeof(Fmt);
      Fmt.dwMask := CFM_COLOR or CFM_BACKCOLOR;
      SendMessage(Obj.Handle, EM_GETCHARFORMAT, SCF_SELECTION, Integer(@Fmt));  // 获取文本信息
      Fmt.crTextColor := not Fmt.crTextColor and $FFFFFF;  // 颜色取反
      Fmt.crBackColor := not Fmt.crBackColor and $FFFFFF;  // 背景色取反
      SendMessage(Obj.Handle, EM_SETCHARFORMAT, SCF_SELECTION, Integer(@Fmt));  // 设置
      Obj.SelLength := 0;  // 取消选中文本
    end;