1
我想創建一個由TLayout
組成的組件,其中包含一個TRectangle
。如何避免在按Alt-F12兩次時創建重複的子組件?
TRectangle
在組件的構造函數內部創建,並以TLayout
作爲其父項。
問題:在按下ALT-F12進入窗體的源代碼編輯器並再次按下它以保留它時,將該組件添加到窗體中,爲父窗體創建額外的子組件(TRectangle
)。 (該TRectangle
甚至不應該出現在表單文本編輯器,我認爲這會導致該問題)
代碼組件:
unit Problem;
interface
uses
System.SysUtils, System.Classes, FMX.Types, FMX.Layouts, FMX.Objects;
type
TProblem = class(TLayout)
private
rect: TRectangle;
public
constructor Create(AOwner: TComponent); override;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('FMX Problem Component', [TProblem]);
end;
{ TProblem }
constructor TProblem.Create(AOwner: TComponent);
begin
inherited;
rect := TRectangle.Create(nil);
rect.Parent := Self;
end;
end.
我相信答案是微不足道的,但希望它不過。
請勿發佈。如果它在父級的受保護或私有部分中,則不應在該類之外提供,因此不會顯示在樹中。 –
它在父母的私人部分。奇怪的是,當我將組件放在窗體上時,它不會出現,但是當我在窗體上加載具有這種組件的項目時,它在結構樹中出現。 – Domus
我一定在做一些可怕的錯誤。每次我按下Alt-F12查看錶格來源和Alt-F12離開它時,它會創建TRectangle的新實例... – Domus