1
TRectangle
을 포함하는 TLayout
으로 구성된 구성 요소를 생성하려고합니다.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