当我尝试设置在运行时创建的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作为其父级,并按预期显示。 有任何想法吗? 如果有帮助,我可以根据要求提供整个代码的样本。
答案 0 :(得分:6)
您正在混合使用CLX和VCL。您的按钮是CLX TBitBtn
,但您的表单是VCL表单。
我不知道您是否希望自己的应用成为VCL应用或CLX应用,但无论哪种应用,您都需要应用的所有部分来自同一个框架。
我的猜测是你想要一个VCL应用程序。不知何故,你使用了QButtons
,CLX单位,而不是Buttons
,即VCL单位。这就是你获得TBitBtn
的CLX版本的原因。
因此,假设我猜对了,只需将QButtons
更改为Buttons
,您的代码就会编译。