与已发布的问题类似 How to set required Edit fields with a red border?由Bummi先生回答
我想知道,是否可以使用相同的DBCombobox实现?
答案 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那样建立一个后代。
如果标准组件需要新功能,那么它就不再是标准了。