我有一个自定义组件TCard = class(TGraphicControl)
,我想它的创建,将有一个标签,它的区域内恩时(上图:= 5)(左:= 5),它总是把TLabel
上TCard
创建时在该点。
type
TCard = class(TGraphicControl)
private
FLPower:TLabel;
procedure SetLPower(value:TLabel);
protected
procedure Paint; override;
public
property LPower: TLabel read FLpower write SetLPower;
...
constructor Tcard.Create(AOwner: Tcomponent);
begin
inherited Create(AOwner);
FLPower := TLabel.Create(self);
end
procedure TCard.SetLPower(value: TLabel);
begin
FLPower.Assign(value);
end;
procedure Tcard.Paint;
begin
FLPower.Left := 5;
FLPower.Top := 5;
end;
我知道我所拥有的是不对的,但我想展示一些东西。另外,如果有帮助,我计划将来可以做TCard.LPower.Caption:= inttostr(somenumber); 因此,如果您可以在那工作,那么请加分..如果没有,我可以稍后再解决..但想提出警告,以防您建议由于该原因而无法工作。谢谢格伦
TGraphicControl不能用作父控件,因此您不能采用这种方法。
标签本质上是非常简单的事情。这只是文字。您已选择使用TGraphicControl,这意味着您将要实现Paint方法。
因此,不要创建标签控件,而是将字符串类型的Text属性添加到控件中。然后,在“绘制”方法中,将文本绘制到绘制画布上。修改Text属性后,请使您的控件无效,以便可以重新绘制它。
无论如何,这样做是正确的方法。在顶部添加仅用于绘制文本的额外控件。您已经选择了最轻的重量控制装置。绘制卡的背景,然后绘制所需的任何文本。任务完成。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句