如何设置带有红色边框的 DBCombobox 字段以作为必填字段显示给用户?

How to set DBCombobox fields with a red border to show to user as a mandatory field?

与已发布的问题类似 How to set required Edit fields with a red border? 由 Bummi 先生回答

我想知道,是否可以对 DBCombobox 使用相同的实现?

您可以使用以下内容(已在 Delphi 10 Seattle 上验证)。

  TDBCombobox = Class(VCL.DBCtrls.TDBCombobox)
  private
    FBordercolor: TColor;
    procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
    procedure SetBorderColor(AColor: TColor);
  published
    property BorderColor: TColor read FBorderColor write SetBorderColor default clBlack;
  end;


    ....
    
Implementation

procedure TDBCombobox.WMPaint(var Message: TWMPaint);
begin
  inherited;
  Self.Canvas.Pen.Color := FBorderColor;
  Self.Canvas.Pen.Width := 1;
  Self.Canvas.Polyline([Point(0, 0), Point(Width-1, 0), Point(Width - 1, Height - 1),
                        Point(0, Height - 1),Point(0, 0)]);
end;

procedure TDBCombobox.SetBorderColor(AColor: TColor);
begin
  FBorderColor := AColor;
  invalidate;
end;

这与您链接的 post 的想法相同,您使用 hack 向标准组件添加功能。

如果值得,那么你应该像@kobik 说的那样创建一个后代。

如果标准组件需要新功能,那么它就不再是标准了。