导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
2024/3/18 13:41:52
标题:
关于RichEdit设置字体颜色一点测试
浏览:498
加入我的收藏
楼主:
代码: Procedure TForm1.LogtoEdit(Data: String; Headcol: TColor); Begin TThread.Synchronize(nil, Procedure Begin Var Pos := Length(RichEdit1.Text)-1; Var Head := Now.ToString+'-->'; Var Msg := Data; RichEdit1.Lines.Add(Head + Msg); RichEdit1.SelStart := Pos; Richedit1.SelLength := Head.Length; Richedit1.SelAttributes.Color := Headcol; Pos:= Pos+Head.Length; RichEdit1.SelStart := Pos; Richedit1.SelLength := Msg.Length; Richedit1.SelAttributes.Color := clBlack; End); End; Procedure TForm1.Button3Click(Sender: TObject); Begin LogtoEdit('第一次',clred); LogtoEdit('第二次',clGreen); LogtoEdit('第三次',clred); End; 想实现的是 日期-->内容 每一行这样的形势 然后颜色定义的是 日期--> 这一部分的颜色。
此帖子包含附件: 大小: 203.3K
----------------------------------------------
-
作者:
2024/3/18 13:43:29
1楼:
该如何实现 希望大家 帮个忙
----------------------------------------------
-
作者:
2024/3/18 14:52:57
2楼:
已经通过GPT4解决。GPT比3.5 强了很多。 下面贴一些代码 代码1 (有效一次过) procedure TForm1.LogToEdit(Data: String; HeadCol: TColor); var TimeStamp: string; begin // 获取当前时间戳 TimeStamp := FormatDateTime('yyyy-mm-dd hh:nn:ss', Now); // 确保我们是在主线程中更新UI if RichEdit1.HandleAllocated then begin // 将RichEdit的光标移动到最后 RichEdit1.SelStart := Length(RichEdit1.Text); RichEdit1.SelLength := 0; // 插入时间戳并设置颜色 RichEdit1.SelAttributes.Color := HeadCol; RichEdit1.SelText := TimeStamp + ' --> '; // 插入数据并使用默认颜色 RichEdit1.SelAttributes.Color := clWindowText; // 或者其他你想用的颜色 RichEdit1.SelText := Data + sLineBreak; // 滚动到最新的日志位置 SendMessage(RichEdit1.Handle, EM_SCROLLCARET, 0, 0); end; end; 追问 RichEdit1.SelText 这个命令会不会导致遍历所有Text。如果Edit内的字符串很多 会不会有效率问题 第二次代码 (有效通过) procedure TForm1.LogToEdit(Data: String; HeadCol: TColor); var TimeStamp: string; begin // 获取当前时间戳 TimeStamp := FormatDateTime('yyyy-mm-dd hh:nn:ss', Now); // 关闭更新以避免重绘 SendMessage(RichEdit1.Handle, WM_SETREDRAW, WPARAM(False), 0); try // 将RichEdit的光标移动到最后 RichEdit1.SelStart := Length(RichEdit1.Text); RichEdit1.SelLength := 0; // 插入时间戳并设置颜色 RichEdit1.SelAttributes.Color := HeadCol; RichEdit1.SelText := TimeStamp + ' --> '; // 插入数据并使用默认颜色 RichEdit1.SelAttributes.Color := clWindowText; // 或者其他你想用的颜色 RichEdit1.SelText := Data + sLineBreak; finally // 重新打开更新 SendMessage(RichEdit1.Handle, WM_SETREDRAW, WPARAM(True), 0); // 强制控件重绘 RedrawWindow(RichEdit1.Handle, nil, 0, RDW_ERASE or RDW_FRAME or RDW_INVALIDATE or RDW_ALLCHILDREN); end; // 滚动到最新的日志位置 SendMessage(RichEdit1.Handle, EM_SCROLLCARET, 0, 0); end;
----------------------------------------------
-
作者:
2024/3/18 16:42:22
3楼:
哪里可以使用chatgpt4?我想知道unimemo怎么改变某一行的颜色。
----------------------------------------------
-
作者:
2024/3/18 17:15:47
4楼:
@sxqwhxq www.openai.com 这里注册充值后使用
----------------------------------------------
-
作者:
2024/3/18 21:16:10
5楼:
打不开网页,打开了也不知道怎么充值
----------------------------------------------
-
作者:
2024/3/19 13:01:13
6楼:
@sxqwhxq 需要科学上网
----------------------------------------------
-
作者:
2024/3/23 3:40:41
7楼:
是类似这种吗?
此帖子包含附件: 大小: 40.6K
----------------------------------------------
-