首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

RichEdit 中的关键字用红颜色出来(已实现),怎么鼠标悬浮到关键字上后把该关键字提取出来,并弹出对话框呢

2012-03-20 
RichEdit 中的关键字用红颜色出来(已实现),如何鼠标悬浮到关键字上后把该关键字提取出来,并弹出对话框呢Ri

RichEdit 中的关键字用红颜色出来(已实现),如何鼠标悬浮到关键字上后把该关键字提取出来,并弹出对话框呢
RichEdit   中的关键字用红颜色出来(已实现),如何鼠标悬浮到关键字上后把该关键字提取出来,并弹出对话框呢?
具体描述如下:窗体上放置一个   RichEdit1     一个   Button1  
以下是实现单击关键字变颜色,比如将关键字“交流 '变成红色,如何实现当鼠标悬浮到“交流 '时弹出一个“交流 '的对话框。如何实现,请高手指点
//首先恢复原色
    procedure   ReSetKey(FEdit:   TRichEdit);
    begin
        with   FEdit   do
        begin
            SelStart   :=   0;
            SelLength   :=   Length(FEdit.Text);
            SelAttributes.Color   :=   SelAttributes.Color;
            SelAttributes.Style   :=   SelAttributes.Style;
        end;
    end;
      //设置颜色
    procedure   setKeySelect(FEdit:   TRichEdit;   strKey:   string;   theColor:   TColor);
    var   StartPos:   Integer;
        ToEnd:   Integer;
        FindAt:   Integer;
    begin
        StartPos   :=   0;
        ToEnd   :=   Length(FEdit.Text);
        repeat
            FindAt   :=   FEdit.FindText(strKey,   StartPos,   ToEnd,   [stMatchCase]);
            StartPos   :=   FindAt   +   Length(strKey);
            ToEnd   :=   Length(FEdit.Text)   -   StartPos;
            FEdit.SelStart   :=   FindAt;
            FEdit.SelLength   :=   Length(strKey);
            if   theColor   =   null   then
                theColor   :=   clRed;
            FEdit.SelAttributes.Color   :=   theColor;   //修改颜色为红色。
            FEdit.SelAttributes.Style   :=   FEdit.SelAttributes.Style   +   [fsBold];   //加粗
            FEdit.SelAttributes.Style   :=   FEdit.SelAttributes.Style   +   [fsItalic];   //倾斜
            FEdit.Hint   :=   'dddddddddddddddddd ';
            FEdit.SelAttributes.Style   :=   FEdit.SelAttributes.Style   +   [fsUnderline];   //下划线
        until   FindAt   =   -1;
    end;
procedure   TForm1.Button1Click(Sender:   TObject);
begin
  ReSetKey(RichEdit1);
    setKeySelect(RichEdit1,   '交流 ',   clRed);
end;

[解决办法]
随便写了几行代码,这也许能满足部分需求。

Delphi(Pascal) code
procedure TForm1.RichEdit1MouseDown(Sender: TObject; Button: TMouseButton;  Shift: TShiftState; X, Y: Integer);var  pos,st,ed:integer;begin  If RichEdit1.SelAttributes.Color = clred then  begin    pos := RichEdit1.SelStart;    while RichEdit1.SelAttributes.Color = clred do    begin      RichEdit1.SelStart := RichEdit1.SelStart - 1;      RichEdit1.SelLength := 0;      st := RichEdit1.SelStart;    end;    RichEdit1.SelStart := pos;    while RichEdit1.SelAttributes.Color = clred do    begin      RichEdit1.SelStart := RichEdit1.SelStart + 1;      RichEdit1.SelLength := 0;      ed := RichEdit1.SelStart;    end;    RichEdit1.SelStart := st;    RichEdit1.SelLength := ed - st - 1;    ShowMessage(RichEdit1.SelText);  end;end; 

热点排行