자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Firemonkey FMX Component 생성시 오류
2018.09.04 17:44
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
일단 아주 간단한 컴포넌트를 만들었습니다.
unit RectangleEh;
interface
uses
System.SysUtils, System.Classes, FMX.Types, FMX.Controls, FMX.Objects;
type
TRectangleEh = class(TRectangle)
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
published
{ Published declarations }
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('TestComponent', [TRectangleEh]);
end;
{ TRectangleEh }
constructor TRectangleEh.Create(AOwner: TComponent);
var
sel: TSelectionPoint;
begin
inherited create(AOwner);
sel := TSelectionPoint.Create(self);
sel.Parent := self;
sel.Position.X := self.Width / 2;
sel.Position.Y := self.Height / 2;
end;
end.
별 로직같은건 없고 그냥 TRectangle을 상속받아 Create시에 정가운데에 SelectionPoint 1개를 넣었습니다.
그러고 install하고 폼위에 올려놓고 실행해봤더니
위와 같이 SelectionPoint가 두개가 있습니다.
프로젝트를 저장하기 전에는 위와 같이 폼위에 Rectangle 뿐이 없는데 저장한 후 다시 불러오면
위와 같이 Rectangle 안에 SelectionPoint 가 추가 되어있습니다.
이상태로 다시한번 실행하면
이제 SelectionPoint 가 세개로 늘어나있습니다. 이것보다 더 늘어나지는 않더군요.
fmx관련 컴포넌트를 create에서 생성할 경우 다 위와같은경우로 증식하더군요.
혹시 해결방법이 있을까요?
댓글 2
Firemonkey FMX Component 생성시 오류
2018.09.04 17:44
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
일단 아주 간단한 컴포넌트를 만들었습니다.
unit RectangleEh;
interface
uses
System.SysUtils, System.Classes, FMX.Types, FMX.Controls, FMX.Objects;
type
TRectangleEh = class(TRectangle)
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
published
{ Published declarations }
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('TestComponent', [TRectangleEh]);
end;
{ TRectangleEh }
constructor TRectangleEh.Create(AOwner: TComponent);
var
sel: TSelectionPoint;
begin
inherited create(AOwner);
sel := TSelectionPoint.Create(self);
sel.Parent := self;
sel.Position.X := self.Width / 2;
sel.Position.Y := self.Height / 2;
end;
end.
별 로직같은건 없고 그냥 TRectangle을 상속받아 Create시에 정가운데에 SelectionPoint 1개를 넣었습니다.
그러고 install하고 폼위에 올려놓고 실행해봤더니
위와 같이 SelectionPoint가 두개가 있습니다.
프로젝트를 저장하기 전에는 위와 같이 폼위에 Rectangle 뿐이 없는데 저장한 후 다시 불러오면
위와 같이 Rectangle 안에 SelectionPoint 가 추가 되어있습니다.
이상태로 다시한번 실행하면
이제 SelectionPoint 가 세개로 늘어나있습니다. 이것보다 더 늘어나지는 않더군요.
fmx관련 컴포넌트를 create에서 생성할 경우 다 위와같은경우로 증식하더군요.
혹시 해결방법이 있을까요?
파이어몽키 컴포넌트의 구조때문인지 정확하게는 모르겠는데 파이어몽키 컴포넌트 작성경험자께서이런 현상이 있다고 합니다.
TLayout을 create하신 후에 Rectagle 을 그위에 올려놓고 SelectionPoint 개체를 생성해 보십시오.
그렇게 하시면 이런 현상을 피해 갈수 있다고 합니다.