【Delphi】实现彩色日志显示框(TRichEdit Helper)

2023-12-04 07:44

本文主要是介绍【Delphi】实现彩色日志显示框(TRichEdit Helper),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、前言

二、实现方法

1. 第一步

2. 第二步

3. 第三步

三、主程序代码

四、下载

1. 可执行程序

2. 程序源代码


一、前言

        在用Delphi做日常开发的时候,经常需要显示程序运行的日志,一般我们会使用TMemo,使用起来简单,方便。但是缺点也很明显,就是只能显示单色文字,字体也只能统一设置,无法实现个性颜色和字体。

        但是我们看大的一些系统,日志则非常美观、漂亮、专业。

        例如,Delphi的编译日志如下:

        那么,我们能收实现这样的日志显示框呢,当然可以,而且非常简单,无需使用任何第三方控件,使用Delphi自带的TRichEdit就可以。

二、实现方法

        通过对TRichEdit进行Helper构造,增加一个显示多颜色的命令即可。

1. 第一步

        编写一个uTRichEdit_Helper.pas单元,在该单元中增加一个Add_Color_Log方法,该方法有5个参数:

序号参数类别默认说明
1msgstring需要显示的消息字符串
2FontColorTColorclBlack(黑色)字体显示的颜色
3FontSizeByte9字体大小
4FontStyleTFontStyles[ ]字体格式
5LeftMarginByte4左边预留空格
{********************************************************  时间:2023-12-03*  作者:sensor wu*  功能:实现TRichEdit的彩色可编程 Log 功能**  此处为 VCL,FMX不支持该控件**  说明:*    msg: 需要显示的消息内容*    FontColor: 需要现实的颜色,默认黑色*    FontSize : 字体大小,默认9号字体*    FontStyle: 字体是否加粗、斜体等显示,默认不是*    LeftMargin: 左边留空格数量,默认是4**  快捷用法:*  1.  RichEdit.Add_Color_log('编译成功!'#13#10, clGreen);   //显示一行绿色*  2.  RichEdit.Add_Color_log('编译错误:');*      RichEdit.Add_Color_log('23行缺少逗号...'#13#10,clRed);  //显示一行:编译错误: 23行缺少逗号...  前面黑色,后面红色*******************************************************}
unit uTRichEdit_Helper;interface
usesVcl.Graphics,      //TColorWinapi.Messages,   //消息常量,例如:EM_SCROLLCARET ,为了减少空间,可以不引该单元,直接使用数字解开Winapi.Windows,    //消息常量,例如:SB_ENDSCROLLVcl.ComCtrls;typeTRichEditHelper = class helper for TRichEditpublicprocedure Add_Color_log(msg: string; FontColor : TColor = clBlack; FontSize : Byte = 9; FontStyle : TFontStyles = []; LeftMargin: Byte = 4);end;implementation{ TRichEditHelper }procedure TRichEditHelper.Add_Color_log(msg: string; FontColor: TColor;FontSize: Byte; FontStyle: TFontStyles; LeftMargin: Byte);
begin//此处省略了实现代码
end;end.

2. 第二步

        在主程序中引用该单元:

implementationusesuTRichEdit_Helper;

3. 第三步

        使用:

  RichEdit1.Add_Color_log(#13#10);RichEdit1.Add_Color_log('Checking project dependencies...'#13#10,clBlack,9,[fsBold]);RichEdit1.Add_Color_log('Compiling RichEdit_Helper_Demo.dproj (Debug,Win32)'#13#10,clBlack,9,[fsBold]);RichEdit1.Add_Color_log('brcc32 command line for "RicheEdit_Helper_Demo.vrc"'#13#10,clBlack);RichEdit1.Add_Color_log('dcc32 command line for "RicheEdit_Helper_Demo.dpr"'#13#10,clBlack);RichEdit1.Add_Color_log('Success'#13#10,clGreen,9,[fsBold]);RichEdit1.Add_Color_log('Elapsed time: 00:00:01.2'#13#10);

三、主程序代码

unit uMainForm_RichEdit;interfaceusesWinapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdUDPServer, IdGlobal, IdSocketHandle,Vcl.ExtCtrls, IdUDPClient, System.ImageList, Vcl.ImgList,Vcl.VirtualImageList, Vcl.BaseImageCollection, Vcl.ImageCollection,IdBaseComponent, IdComponent, IdUDPBase, Vcl.Menus, Vcl.ExtActns,System.Actions, Vcl.ActnList, Vcl.StdCtrls, Vcl.ComCtrls, Vcl.VirtualImage,Vcl.Buttons;typeTForm_RichEdit = class(TForm)Panel_Command: TPanel;SpeedButton6: TSpeedButton;SpeedButton1: TSpeedButton;SpeedButton2: TSpeedButton;SpeedButton7: TSpeedButton;SpeedButton10: TSpeedButton;VirtualImage1: TVirtualImage;Panel_Client: TPanel;Panel_LeftCommand: TPanel;SpeedButton4: TSpeedButton;RichEdit1: TRichEdit;ActionList1: TActionList;Action_Start: TAction;Action_Stop: TAction;Action_RegService: TAction;Action_UnRegService: TAction;Action_SetParams: TAction;SendMail1: TSendMail;ImageCollection1: TImageCollection;VirtualImageList1: TVirtualImageList;procedure SpeedButton4Click(Sender: TObject);procedure Action_StartExecute(Sender: TObject);procedure Action_SetParamsExecute(Sender: TObject);procedure Action_StopExecute(Sender: TObject);procedure Action_RegServiceExecute(Sender: TObject);procedure Action_UnRegServiceExecute(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm_RichEdit: TForm_RichEdit;implementationusesuTRichEdit_Helper;{$R *.dfm}procedure TForm_RichEdit.Action_RegServiceExecute(Sender: TObject);
beginRichEdit1.Add_Color_log('Web服务端口号: ');RichEdit1.Add_Color_log('8080'#13#10,clBlue,9,[]);
end;procedure TForm_RichEdit.Action_SetParamsExecute(Sender: TObject);
beginRichEdit1.Add_Color_log(#13#10);RichEdit1.Add_Color_log('Checking project dependencies...'#13#10,clBlack,9,[fsBold]);RichEdit1.Add_Color_log('Compiling RichEdit_Helper_Demo.dproj (Debug,Win32)'#13#10,clBlack,9,[fsBold]);RichEdit1.Add_Color_log('brcc32 command line for "RicheEdit_Helper_Demo.vrc"'#13#10,clBlack);RichEdit1.Add_Color_log('dcc32 command line for "RicheEdit_Helper_Demo.dpr"'#13#10,clBlack);RichEdit1.Add_Color_log('Success'#13#10,clGreen,9,[fsBold]);RichEdit1.Add_Color_log('Elapsed time: 00:00:01.2'#13#10);
end;procedure TForm_RichEdit.Action_StartExecute(Sender: TObject);
beginRichEdit1.Add_Color_log('服务已经成功启动 (绿色)'#13#10,clGreen,9,[]);
end;procedure TForm_RichEdit.Action_StopExecute(Sender: TObject);
beginRichEdit1.Add_Color_log('服务已经成功停止 (红色)'#13#10,clRed,9,[]);
end;procedure TForm_RichEdit.Action_UnRegServiceExecute(Sender: TObject);
beginRichEdit1.Add_Color_log('UDP在这个端口');RichEdit1.Add_Color_log('8192',clGreen,9,[fsBold,fsItalic]);RichEdit1.Add_Color_log('收到数据');RichEdit1.Add_Color_log('(' + FormatDateTime('YYYY-MM-DD hh:mm:ss',Now) +')'#13#10,clGray,9,[]);
end;procedure TForm_RichEdit.SpeedButton4Click(Sender: TObject);
beginRichEdit1.Clear;
end;end.

四、下载

1. 可执行程序

        下载(EXE)程序

2. 程序源代码

        下载(源程序:¥14.9)

        

这篇关于【Delphi】实现彩色日志显示框(TRichEdit Helper)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/452682

相关文章

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

Java实现文件图片的预览和下载功能

《Java实现文件图片的预览和下载功能》这篇文章主要为大家详细介绍了如何使用Java实现文件图片的预览和下载功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... Java实现文件(图片)的预览和下载 @ApiOperation("访问文件") @GetMapping("

使用Sentinel自定义返回和实现区分来源方式

《使用Sentinel自定义返回和实现区分来源方式》:本文主要介绍使用Sentinel自定义返回和实现区分来源方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Sentinel自定义返回和实现区分来源1. 自定义错误返回2. 实现区分来源总结Sentinel自定

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

opencv图像处理之指纹验证的实现

《opencv图像处理之指纹验证的实现》本文主要介绍了opencv图像处理之指纹验证的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、简介二、具体案例实现1. 图像显示函数2. 指纹验证函数3. 主函数4、运行结果三、总结一、

Springboot处理跨域的实现方式(附Demo)

《Springboot处理跨域的实现方式(附Demo)》:本文主要介绍Springboot处理跨域的实现方式(附Demo),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录Springboot处理跨域的方式1. 基本知识2. @CrossOrigin3. 全局跨域设置4.

Spring Boot 3.4.3 基于 Spring WebFlux 实现 SSE 功能(代码示例)

《SpringBoot3.4.3基于SpringWebFlux实现SSE功能(代码示例)》SpringBoot3.4.3结合SpringWebFlux实现SSE功能,为实时数据推送提供... 目录1. SSE 简介1.1 什么是 SSE?1.2 SSE 的优点1.3 适用场景2. Spring WebFlu

基于SpringBoot实现文件秒传功能

《基于SpringBoot实现文件秒传功能》在开发Web应用时,文件上传是一个常见需求,然而,当用户需要上传大文件或相同文件多次时,会造成带宽浪费和服务器存储冗余,此时可以使用文件秒传技术通过识别重复... 目录前言文件秒传原理代码实现1. 创建项目基础结构2. 创建上传存储代码3. 创建Result类4.