在動態創建表單之前,Delphi中是否有任何方法可以從現有表單繼承? 我知道如何使用tobjects.create()
來動態創建一個新表單,但是我需要通過在創建新表單時繼承該表單來創建一個完全像已經創建的表單一樣的表單。如何在Delphi中動態創建新表單並從現有表單繼承表單
-1
A
回答
1
var
Form2: TForm1;
begin
Form2 := TForm1.create(nil);
try
// now form2 is exactly "like" form1 when it was created
Form2.Top := Form1.Top;
Form2.Left := Form1.Left;
// now some of Form2's properties are like Form1's are now
Form2.ShowModal;
finally
Form2.Free;
end;
所以問題是,「like」是什麼意思?如果Form1自創建以來發生了運行時更改,則需要在創建後將相同的運行時更改應用於form2。繼承無法爲你做到這一點。繼承是「容器」,而不是數據。要複製表單的「數據」,您需要編寫一個過程,該過程需要將form2的所有屬性值設置爲form1的屬性值。或者,也許只是複製你關心的屬性。
0
試試這個
interface
uses Forms, SysUtils, Classes, Controls;
type
TCommonFormClass = class of TCommonForm;
TCommonForm = class(TForm)
private
// Private declaration
public
// Public declaration
constructor Create(Sender: TComponent); virtual;
end;
implementation
constructor TCommonForm.Create(Sender: TComponent);
begin
inherited Create(Sender);
// do other
end;
和你的孩子的形式會是這樣
type
TMyForm = class(TCommonForm)
private
// Private declaration
public
// Public declaration
end;
implementation
{$R *.dfm}
end.
創建一個子使用:
procedure CallChild;
var MyForm: TMyForm;
begin
MyForm:= TMyForm.Create(nil);
try
MyForm.ShowModal;
finally
MyForm.Free;
end;
end;
相關問題
- 1. delphi表單創建
- 2. 在單表繼承機制使用動態創建的類
- 3. 的has_many,新,單表繼承
- 4. 從表單c繼承#
- 5. 單表繼承或類表繼承?
- 6. 與單表繼承
- 7. 與單表繼承
- 8. 與單表繼承
- 9. 單表繼承mogoid
- 10. counter_cache單表繼承
- 11. Powershell:創建動態表單
- 12. 創建動態表單
- 13. 動態創建表單
- 14. AngularJS:動態表單創建
- 15. django動態表單創建
- 16. 動態創建HTML表單
- 17. 重新創建損壞的Delphi表單
- 18. jQuery創建並動態提交表單
- 19. Rails - 單表繼承中的多態性
- 20. 在Delphi中創建表單編輯器
- 21. 在delphi中創建表單時出錯
- 22. 如何創建此動態表單?
- 23. 如何創建動態表單?
- 24. 如何動態創建此表單
- 25. 如何創建動態表單?
- 26. 無法從動態創建的表單獲取表單
- 27. PHP中的表單繼承?
- 28. 在ActiveAdmin中創建動態表單
- 29. 在ASP.NET MVC中創建動態表單
- 30. 在ASP.NET中創建動態Web表單
這不是*繼承*。它只是*創建一個新實例*,並且每次運行應用程序時都會執行該操作。 'Application.CreateForm'可以在你的項目中完成它,你可以在你的代碼中使用'NewForm:= TForm1.Create()'來代替'TForm1',用你想要使用的表單類的名字來代替'TForm1'。 –