2013-02-06 60 views
3

當我嘗試設置在運行時創建的BitBtn的父屬性時,編譯時出現奇怪的錯誤。在Win7 64bit上使用Delphi 7。Delphi 7,將表單設置爲BitBtn的父時發生錯誤

[錯誤] unitMainForm.pas(70):不兼容的類型: 'TWidgetControl' 和 'TMainForm'

我創建的BitBtn在運行時是這樣的:

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

「自我」在這裏被命名爲「MainForm」。 無論我爲父母提供什麼,我都會得到這個。我試過把當前的窗體,滾動框,面板。如果我嘗試創建一個SpeedButton,也會發生同樣的情況。 事情是,當我使用TButtons,甚至是TImages時,我的代碼可以正常工作,但不能與TBitBtns或TSpeedButton一起使用。 TButtons和TImages接受表格作爲其父母,並按預期顯示。 任何想法? 如果有幫助,我可以根據要求提供整個代碼的示例。

回答

6

你在混合使用CLX和VCL。您的按鈕是CLX TBitBtn,但您的表單是VCL表單。

我不知道您是否希望您的應用程序成爲VCL應用程序或CLX應用程序,但無論它們是哪個,都需要應用程序的所有部分來自同一個框架。

我的猜測是你想要一個VCL應用程序。不知何故,你已經使用了CLX單元QButtons,而不是Buttons,VCL單元。這就是爲什麼你要獲得CLX版本TBitBtn

因此,假設我猜對了,只需將QButtons更改爲Buttons並且您的代碼將被編譯。

+0

你怎麼知道? –

+5

@Bogdan經驗。 'TWidgetControl'來自CLX。我知道。而且,無法將CLX按鈕的父項設置爲表單的唯一方法是如果表單是VCL表單而不是CLX表單。 –

+0

謝謝。我認爲'TWidgetControl'適用於CLX和VCL。我上次使用Delphi 7已經很長時間了。 –

相關問題