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

如何实现TLabel文字黑色、下划线红色的异色设置?

如何给TLabel设置与文字不同颜色的下划线?

TLabel原生没有单独设置下划线颜色的属性,但可以通过两种方式实现需求:

方法1:自定义自绘控件(更灵活)

继承TLabel并重写Paint方法,手动分开绘制文字和下划线:

type
  TColorUnderlineLabel = class(TLabel)
  private
    FUnderlineColor: TColor;
  protected
    procedure Paint; override;
  public
    constructor Create(AOwner: TComponent); override;
    property UnderlineColor: TColor read FUnderlineColor write FUnderlineColor;
  end;

constructor TColorUnderlineLabel.Create(AOwner: TComponent);
begin
  inherited;
  FUnderlineColor := clRed; // 默认下划线红色
end;

procedure TColorUnderlineLabel.Paint;
var
  TextBounds: TRect;
  TextHeight: Integer;
begin
  // 先绘制黑色文字,关闭自带下划线
  Font.Underline := False;
  inherited Paint;

  // 计算下划线位置:在文字底部下方1像素处
  TextBounds := GetTextBounds;
  TextHeight := Canvas.TextHeight(Caption);
  TextBounds.Top := TextBounds.Top + TextHeight + 1;

  // 设置画笔颜色并绘制下划线
  Canvas.Pen.Color := FUnderlineColor;
  Canvas.Pen.Width := 1;
  Canvas.MoveTo(TextBounds.Left, TextBounds.Top);
  Canvas.LineTo(TextBounds.Right, TextBounds.Top);
end;

使用时,把这个自定义控件添加到组件面板,拖到窗体后,直接设置Font.Color为黑色,UnderlineColor为红色即可。

方法2:叠加两个TLabel(零代码快速实现)

不需要编写代码,用两个普通TLabel配合:

  • 上层Label:设置Caption为目标文本,Font.Color=黑色,关闭下划线,正常摆放位置。
  • 下层Label:设置Caption和上层完全一致,Font.Color=红色,仅开启下划线,微调Top属性让它的下划线刚好对齐上层文字的底部。
    注意:如果需要动态修改文本,要同时更新两个Label的Caption,否则会出现内容不一致的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 09:43:10