我有一个复合组件,由一个继承自
在设计时,选择框没有正确地绘制 - 我猜测是因为编辑框和按钮隐藏了它,因为它已经为自定义控件绘制,然后被它们覆盖。
这里是比较:
TCustomControl
的TEdit
和TButton
(是的,我知道TButtonedEdit
)组成。构造函数中创建了编辑框和按钮,并将它们放置在自身上。在设计时,选择框没有正确地绘制 - 我猜测是因为编辑框和按钮隐藏了它,因为它已经为自定义控件绘制,然后被它们覆盖。
这里是比较:
我也看到了其他第三方组件有这种情况(比如TcxGrid只绘制选择指示器的外部部分)
问题:我该如何改变这个呢?
最简单的重现情况:
unit SearchEdit;
interface
uses
Classes, Controls, StdCtrls;
type
TSearchEdit = class(TCustomControl)
private
fEdit: TEdit;
public
constructor Create(AOwner: TComponent); override;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Custom', [TSearchEdit]);
end;
{ TSearchEdit }
constructor TSearchEdit.Create(AOwner: TComponent);
begin
inherited;
fEdit := TEdit.Create(Self);
fEdit.Parent := Self;
fEdit.Align := alClient;
end;
end.
fEdit.PaintTo(...)
这样的东西,在父级上直接绘制到父级画布上。 - Graymatter