0

我有一个自定义组件TCard = class(TGraphicControl) ,我希望它在创建时在其区域 ex(顶部:= 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); 因此,如果您可以在其中工作,那么奖金..如果不能,我以后可以弄清楚..但是想提个醒,以防您建议的东西因此而无法工作。谢谢格伦

4

1 回答 1

2

TGraphicControl 不能用作父控件,因此您不能采用这种方法。

标签本质上是非常简单的东西。这只是文字。您已选择使用 TGraphicControl,这意味着您将要实现一个 Paint 方法。

因此,不要创建标签控件,而是将字符串类型的 Text 属性添加到您的控件。然后,在 Paint 方法中,将文本绘制到画布上。修改 Text 属性时,使您的控件无效,以便可以重新绘制它。

无论如何,这样做是正确的方法。添加额外的控件只是为了绘制文本是最重要的。你选择了最轻的重量控制,这很好。绘制卡片的背景,然后绘制所需的任何文本。任务完成。

于 2013-10-19T08:57:42.747 回答