2013-08-18 80 views
0

我有一個DLL(創建於德爾福),包括TGlobalForm從TForm的如何inherite德爾福DLL中的自定義窗體(可視化繼承)在我德爾福項目

繼承

我想用我的項目中TGlobalForm( Delphi Project),並從TGlobalForm繼承一些表單。

例 TAccountsForm = A類(TGlobalForm)

的問題是,我不希望使用PAS項目 的使用文件的GlobalForm,我希望它是當你創建一個新的像(File-> New-> Other),然後在(Delphi Projects)節點下選擇(可繼承的Items),這樣新創建的表單將顯示繼承的表單(TGlobalForm)的項目(Buttons,Edits ...)

如何做到這一點?

我用Delphi XE3 - VCL項目

謝謝。

回答

6

從DLL導入和使用VCL對象是不可能的。當您嘗試這樣做時,最終會得到兩個不同的VCL實例,包括導入表單類型的兩個不同版本。有DLL中的版本和應用程序中的版本。它們是截然不同的,並且這種類型的兩個版本太多了。

從另一個模塊導入複雜類型的支持方式是使用包。如果你不想使用包,那麼你將不得不使用某種形式的跨越DLL模塊邊界的互操作。例如,COM接口。

+0

雖然他建議他在問題中擁有GlobalForm.pas文件本身。不知道在這種情況下DLL與它有什麼關係,儘管 –

+0

@Matt這是表單的源文件。它被編譯到DLL中。他也想避免將其編譯到應用程序中。但那不可能。包是將VCL對象放入不同模塊所需的。 –

+0

@DavidHeffernan你能提供任何使用包的例子嗎?如果它很難,請給我更多詳細信息或鏈接,瞭解如何使用Delphi包進行可視化繼承。 – user1512094