3

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

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

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

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

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

4

1 回答 1

6

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

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

我的猜测是你想要一个 VCL 应用程序。不知何故,您使用QButtons的是 CLX 单元,而不是ButtonsVCL 单元。这就是为什么您要获得 CLX 版本的TBitBtn.

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

于 2013-02-06T12:35:36.420 回答