一、代码改变字体大小和颜色

 1 procedure TForm1.Button1Click(Sender: TObject);
2 var
3 sNickName, sstr: string;
4 begin
5 sstr := '改变颜色的字符串-----------------!';
6 sNickName := '用户1:';
7 richedit1.Lines.Add(sNickName + sstr);
8
9 RichEdit1.SelStart := Length(RichEdit1.Text) - Length(sstr)-2;//(Length(sNickName) + length(sstr)); //Length(sNickName);
10
11 RichEdit1.SelLength := Length(sstr);
12   richedit1.SelAttributes.Color := clRed;
13 end;

二、增加URL超级链接检测及跳转

方法一

procedure TForm.MyRichEditMouseMove(Sender: TObject;Shift: TShiftState; X, Y: Integer);
var
I,L: Integer;
S,T: string;
vRect: TRect;
begin
sPubURL := '';
vRect.Left := X;
vRect.Top := Y;
X := TRichEdit(Sender).Perform(EM_CHARFROMPOS,0,Longint(@vRect.TopLeft)) and $0000FFFF + 1;
S := TRichEdit(Sender).Text;
L := Length(S);
if (X > L) or (X < 0) or (not (S[X] in [#33..#172])) then
begin
MyRichEdit.Cursor := crDefault;
Exit;
end;
T := S[X];
for I := X - 1 downto 1 do
if S[I] in [#33..#172] then T := S[I] + T else Break;
for I := X + 1 to L do
if S[I] in [#33..#172] then T := T + S[I] else Break;
I := Pos('MAILTO:', UpperCase(T));
if I <= 0 then I := Pos('HTTPS://', UpperCase(T));
if I <= 0 then I := Pos('HTTP://', UpperCase(T));
if I <= 0 then I := Pos('FTP://', UpperCase(T));
if I <= 0 then I := Pos('WWW.', UpperCase(T));
if I <> 1 then
begin
MyRichEdit.Cursor := crDefault;
Exit;
end;
sPubURL := T;
MyRichEdit.Cursor := crHandPoint;
end; procedure TForm.MyRichEditMouseDown(Sender: TObject;Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if sPubURL <> '' then ShellExecute(Handle, 'open', PCharsPubURL nil, nil, SW_SHOW);
end; procedure TForm.MyRichEditChange(Sender: TObject);
var
S: string;
T: string;
I, J, L: Integer;
vSelStart: Integer;
vSelLength: Integer;
begin
TRichEdit(Sender).Perform(EM_HIDESELECTION, Longint(True), 0);
S := TRichEdit(Sender).Text;
L := Length(S);
J := 1;
vSelStart := TRichEdit(Sender).SelStart;
vSelLength := TRichEdit(Sender).SelLength;
TRichEdit(Sender).SelStart := 0;
TRichEdit(Sender).SelLength := L;
TRichEdit(Sender).SelAttributes.Color := clWindowText;
TRichEdit(Sender).SelAttributes.Style := [];
while J <= L do
begin
T := '';
for I := J to L do
if S[I] in [#33..#172] then T := T + S[I] else Break;
if T <> '' then
begin
I := Pos('MAILTO:', UpperCase(T));
if I <= 0 then I := Pos('HTTPS://', UpperCase(T));
if I <= 0 then I := Pos('HTTP://', UpperCase(T));
if I <= 0 then I := Pos('FTP://', UpperCase(T));
if I <= 0 then I := Pos('WWW.', UpperCase(T));
if I = 1 then
begin
TRichEdit(Sender).SelStart := J - 1;
TRichEdit(Sender).SelLength := Length(T);
TRichEdit(Sender).SelAttributes.Color := clBlue;
TRichEdit(Sender).SelAttributes.Style := [fsUnderline];
end;
Inc(J, Length(T));
end;
Inc(J);
end;
TRichEdit(Sender).SelStart := vSelStart;
TRichEdit(Sender).SelLength := vSelLength;
TRichEdit(Sender).Perform(EM_HIDESELECTION, Longint(False), 0);
end;

方法二


1、加载内容前调用 InitRichEditURLDetection
2、覆盖消息 procedure wndproc(var message : tmessage); override;

 1 procedure TForm1.InitRichEditURLDetection(re: TRichEdit);
2 var
3 mask: Word;
4 begin
5 mask := SendMessage(RE.Handle,EM_GETEVENTMASK, 0,0);
6 SendMessage(RE.Handle, EM_SETEVENTMASK,0, mask or ENM_LINK);
7 SendMessage(RE.Handle,EM_AUTOURLDETECT, Integer(True), 0);
8 end;
9
10 procedure TForm1.wndproc(var message: tmessage);
11 var
12 p: tenlink;
13 strurl: string;
14 begin
15 if (message.msg = wm_notify) then
16 begin
17 if (pnmhdr(message.lparam).code = en_link) then
18 begin
19 p := tenlink(pointer(twmnotify(message).nmhdr)^);
20 if (p.msg = wm_lbuttondown) then
21 begin
22 sendmessage(MyRichEdit.handle, em_exsetsel, 0, longint(@(p.chrg)));
23 strurl := MyRichEdit.seltext;
24 shellexecute(handle, 'open', pchar(strurl), 0, 0, sw_shownormal);
25 end;
26 end ;
27 end;
28 inherited;
29 end;

Delphi 关于RichEdit URL 颜色相关总结的更多相关文章

  1. [BS-11] 关于RGB/ARGB颜色相关知识

    关于RGB/ARGB颜色相关知识 众所周知,自然界的颜色都是由红色R.绿色G.蓝色B三元色按不同比例混合而成,每种元色取值范围是0-255.iOS中图片的颜色分为2种:24位和32位. 1. 24位( ...

  2. C 图像处理 颜色相关宏定义

    很多年前整理的,像素处理的宏定义,包括r8g8b8到r5g6b5之间的相互转化,浮点数像素与整数值之间的相互转化,像素值的插值.取反等处理.具体没什么好说的,宏定义的代码还是很容易看的.这套东西对搞图 ...

  3. Delphi中处理URL编码解码

    Delphi中处理URL编码解码 一.URL简单介绍     URL是网页的地址,比方 http://www.shanhaiMy.com. Web 浏览器通过 URL 从 web server请求页面 ...

  4. delphi 返回所有URL

    delphi 返回所有URL USER MSHTMLprocedure TfrmWebEmail.btn5Click(Sender: TObject);var Doc: IHTMLDocument2; ...

  5. moviepy音视频剪辑:颜色相关变换函数blackwhite、colorx、fadein/out、gamma_corr、invert_colors、lum_contrast、mask_color介绍

    ☞ ░ 前往老猿Python博文目录 ░ 一.引言 在<moviepy音视频剪辑:moviepy中的剪辑基类Clip详解>介绍了剪辑基类的fl.fl_time.fx方法,在<movi ...

  6. 获取与Url链接相关的信息

    以下结果的值以此示例为基础:http://www.x2y2.com:80/fisker/post/0703/window.location.html?ver=1.0&id=6#imhere j ...

  7. asp.net url重写相关技术问题整理

    1.IIS7配置URL重写需要注意系统是32位还是64位的 在IIS7配置URL重写的时候,需要添加“脚本映射”,如果是64位系统,会有两个地方存放.net framework分别是32位系统和64位 ...

  8. 用js获取当前页面的url的相关信息方法

    当前页面对应的URL的一些属性: ( http://bbs.xxx.net/forum.php?mod=viewthread&tid=2709692&page=1&extra= ...

  9. ios url网址相关问题解说

    问题1:ios网址中存在汉字的情况,需要GB_18030_2000编码方法如下: // 汉字转编码 + (NSString *)changeChineseWithEncodingGB_18030_20 ...

  10. 【English】五、颜色相关

    一.常见颜色 黑色    black    白色    white    蓝色    blue    橙色    orange    黄色    yellow        灰色    gray   ...

随机推荐

  1. PyTables 教程(二)多维表单元格和自动健全性检查,使用链接更方便地访问节点

    翻译自http://www.pytables.org/usersguide/tutorials.html 多维表单元格和自动健全性检查 现在是一个更真实的例子(即代码中有错误)的时候了.我们将创建两个 ...

  2. leetcode-152乘积最大子数组(两个转移方程的正确性证明)

    1.dp数组的含义 maxDP[i]中存储 以nums[i]为结尾元素的子数组的最大乘积minDP[i]中存储 以nums[i]为结尾元素的子数组的最小乘积 注意到:maxDP[i] >= mi ...

  3. lxml库和BeautifulSoup库常用点小结

    算是本人的学习笔记吧,仅供个人学习使用. 以下内容摘自<Python3网络爬虫开发实战--崔庆才著> 1.lxml库 XPath 常用规则: 表达式 描述 nodename 选取此节点的所 ...

  4. 卡片式UI设计详细指南,先收好这8条!

    今天为大家分享的是「卡片设计」. 卡片是产品中常见的设计组件之一.通过卡片,可以将不同的内容分层次组合在一起.卡片式设计自带简约和易用的属性,能让页面看起来更有秩序感. 卡片作为常用的UI组件,通常由 ...

  5. 【1】java之类与对象

    一.前言 面向对象就是一种组件化的设计思想. 面向对象特性 封装性:保护内部的定义结构安全性: 继承性:在已有的程序结构上继续扩充新的功能: 多态性:在某一个概念范围内的满足. 二.类与对象的定义和使 ...

  6. GIT 上传文件出错:fatal: Could not read from remote repository. 解决方案

    问题 git push -u origin master 执行后报错 fatal: Could not read from remote repository.  解决方案 1. git执行 git ...

  7. ant Vue 表格列多数据溢出省略显示

    1.实现下图缩式 二次更新:通过customRender设置添加悬浮窗,不需要再设置样式,注意动态数据使用的时候是一个大括号 { title:'业务分类', align:"center&qu ...

  8. 2022.3.9内部群每日三题-清辉PMP

    1.项目经理集合在地理上分散的团队,为一家组织实施新的强制性监管要求.若要获得该相关方的承诺,项目经理应该怎么做? A.设置必要的沟通基础设施 B.召开项目启动大会 C.执行相关方分析 D.让团队集中 ...

  9. spring boot读取本地文件

    File file = ResourceUtils.getFile("classpath:face/1112.txt"); InputStream inputStream = ne ...

  10. element-ui的自定义表头

    自定义表头 需求:之前在做一个项目的时候,原型图要求表头文字需要额外解释就会在文字后面标注 1,2作为上标 html中提供了<sup></sup>和<sub>< ...