You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过鼠标点击获取RichEdit控件的背景颜色?

获取RichEdit控件背景色的方法

要获取RichEdit控件的背景色,你可以通过发送EM_GETCHARFORMAT消息实现,这和设置背景色时用到的EM_SETCHARFORMAT消息是配套的。以下是对应的Delphi实现代码:

function TBReaderF.GetBGColor(RichEdit: TRichEdit): TColor;
var
  Format: CHARFORMAT2;
begin
  FillChar(Format, SizeOf(Format), 0);
  Format.cbSize := SizeOf(Format);
  Format.dwMask := CFM_BACKCOLOR;
  // 发送消息获取格式信息
  RichEdit.Perform(EM_GETCHARFORMAT, SCF_SELECTION, Longint(@Format));
  Result := Format.crBackColor;
end;

代码说明:

  • 先初始化CHARFORMAT2结构,设置cbSize为结构本身的大小,这是使用该结构的必要前提
  • dwMask指定要获取的格式属性,这里设为CFM_BACKCOLOR,表示只提取背景色相关信息
  • 参数SCF_SELECTION表示获取当前选中区域的背景色;如果需要获取整个文档的默认背景色,可替换为SCF_ALL
  • 最终返回的Format.crBackColor就是目标背景色

注意:如果RichEdit内不同区域背景色不同,SCF_SELECTION会返回当前选中区域的颜色;若未选中任何内容,通常会返回光标所在位置的格式颜色。

内容的提问来源于stack exchange,提问作者Peter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 10:48:22