Delphi 7,将Form设置为BitBtn的父级时出错

时间:2013-02-06 12:25:37

标签: delphi delphi-7

当我尝试设置在运行时创建的BitBtn的Parent属性时,我在编译时遇到了一个奇怪的错误。在Win7 64bit上使用Delphi 7。

  

[错误] unitMainForm.pas(70):不兼容的类型:'TWidgetControl'和   'TMainForm'

我正在运行时创建BitBtn,如下所示:

  newButton := TBitBtn.Create(Self);
  newButton.Parent := Self;

“自我”这里是形式,名为“MainForm”。 无论我为父母提供什么,我都会得到这个。我试过把当前的Form,ScrollBox,Panel。如果我尝试创建一个SpeedButton,也会发生同样的情况。 问题是,当我使用TButtons,甚至是TImages时,我的代码按预期工作,但不能使用TBitBtns或TSpeedButtons。 TButtons和TImages接受Form作为其父级,并按预期显示。 有任何想法吗? 如果有帮助,我可以根据要求提供整个代码的样本。

1 个答案:

答案 0 :(得分:6)

您正在混合使用CLX和VCL。您的按钮是CLX TBitBtn,但您的表单是VCL表单。

我不知道您是否希望自己的应用成为VCL应用或CLX应用,但无论哪种应用,您都需要应用的所有部分来自同一个框架。

我的猜测是你想要一个VCL应用程序。不知何故,你使用了QButtons,CLX单位,而不是Buttons,即VCL单位。这就是你获得TBitBtn的CLX版本的原因。

因此,假设我猜对了,只需将QButtons更改为Buttons,您的代码就会编译。