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

时间:2017-09-27 11:04:03

标签: delphi delphi-xe8

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

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

1 个答案:

答案 0 :(得分:1)

您可以使用以下内容(在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;

与你链接的帖子一样,你使用hack为标准组件添加功能。

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

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