Delphi 导出我的';TCard&x27;从…起(游戏)

Delphi 导出我的';TCard&x27;从…起(游戏),delphi,delphi-xe2,Delphi,Delphi Xe2,我正在尝试为游戏制作一个TCard组件我应该从哪个类派生它? 这是一款像MTG或yu-gi oh这样的纸牌游戏。该卡应该有一个空白图像,创建时将加载前视图或后视图 如果加载前视图,则必须有几个标签(用于power/cost/def/text等属性)。卡片必须是可点击的 type TCard = class(zzzzzzzzz) private 现在,一旦完成,我是否需要向构造函数/析构函数添加任何内容?目前我有: constructor TCard.Create(AOwner:

我正在尝试为游戏制作一个TCard组件我应该从哪个类派生它?

这是一款像MTG或yu-gi oh这样的纸牌游戏。该卡应该有一个空白图像,创建时将加载前视图或后视图

如果加载前视图,则必须有几个标签(用于power/cost/def/text等属性)。卡片必须是可点击的

 type
   TCard = class(zzzzzzzzz)
   private
现在,一旦完成,我是否需要向构造函数/析构函数添加任何内容?目前我有:

constructor TCard.Create(AOwner: Tcomponent);
begin
  inherited Create(AOwner);
end;

{******************************************************************************}
{ Free any resources allocated to component                                    }
destructor TCard.Destroy;
begin
  inherited Destroy;
end;
另外,我认为我添加了onclick部分是正确的,但不确定。在出版区我有

 {Inherited properties}

 property OnMouseDown;
 property OnMouseMove;
 property OnMouseUp;
 property OnClick;
 property OnDblClick;

等等。

这取决于您想做什么,但通常有两个可见控件的祖先:

  • TGraphicControl:这是TControl的后代,为您实现画布。只需替代绘制方法即可开始绘制。这样的控件支持鼠标交互,但无法获得键盘焦点

  • TCustomControl:这是TWinControl的后代。它还实现了画布,并允许您重写Paint方法来绘制任何内容。因为它是TWinControl的后代,所以它实际上有一个句柄,可以获得键盘焦点并处理键盘消息

另一个好的候选者是TPanel(或者更确切地说是TCustomPanel)。它继承自TCustomControl,因此具有相同的图形属性,但它还包含绘制边框和对齐子控件的功能。不过,我怀疑你是否需要这个

当然,您可以直接从TControl或TWinControl派生,但是接下来您必须自己处理这些东西


请注意,最好将实际的纸牌游戏逻辑放在一个单独的类中,并且只为绘图创建可视控件。如果你这样做了,你仍然可以选择是否要为每张牌设置单独的控件,或者你可以选择在单个控件上绘制整个纸牌游戏,甚至直接在窗体上绘制。我怀疑Windows的纸牌游戏如Free Cell和Solitaire是否有超过50个图形控件。

如果你想成为其他控件的父类,你必须使用TCustomPanel等TWincontrol的后代。不要将纸牌游戏逻辑放入GUI组件中。让他们分开。这不是太多的逻辑,但更多的设置卡。绘图寄宿生会很好,因为我想有一个彩色的寄宿生红色/黑色/蓝色/或绿色的卡。通过对齐子控件,将标签添加到卡中需要这样做,对吗?TPanel听起来不错。或者我的意思是t从
tGraphic Control
自定义,然后自己画出来。修改或扩展这样的图形比使用sub-component.TPanel和TCustomPanel混合更容易。TPanel和TCustomPanel确实会绘制边框,但您无法控制它们的外观。为此,我将使用tgraphic控件或TCustomControl,这取决于您是否需要键盘控件。两者都允许您绘制整个卡。我认为,添加边界将是微不足道的。