TLabel을 상속받는 컴포넌트를 한개 만들었습니다.
자체적으로 TTimer를 생성하고 1초에 한번씩 숫자를 증가시켜서
self.caption에 표시를 해주는 동작을 합니다.
constructor TClockLabel.Create(AOwner: TComponent);
begin
inherited;
FTimer := TTimer.Create(AOwner);
FTimer.Interval := 100;
FTimer.OnTimer := Timer;
FTimer.Enabled := false;
self.Alignment := taRightJustify;
runTime := 0;
end;
컴포넌트 생성시에는 이런식으로 처리를 해줍니다.
문제는 이 컴포넌트를 등록하고 폼에 올려 놓았을 때입니다.
active라는 프로퍼티로 FTimer.Enabled을 컨트롤 할 수 있게 해놓았는데..
active를 true로 주게되면 디자인 타임에서부터 타이머 이벤트가 돌아버립니다.
그러니까 폼에다 새로 만든 컴포를 올려놓고 active를 true로 바꾸면
실행시키지 않아도 몇초가 지나갔는지 라벨의 caption에 나타난다는 말입니다.
이런 일은 왜 일어나는거고, 어떻게하면 될런지 궁금하네요.
감사합니다.
[...]
FTimer.Enabled = True 하면 무조건 타이머 돌아 갑니다.
if not ( csDesigning in Self.ComponentState) then
FTimer.Enabled := True;
이케 하면 디자인 타임에는 돌지 않습니다.