2011-11-01 4 views
1

TCustomEdit에서 파생 된 컨트롤을 작성했지만 구성 요소의 기본 크기를 StdCtrls (즉 width = 121, height = 21)에 정의 된 크기에서 변경하는 데 문제가 있습니다.사용자 정의 컨트롤의 기본 속성 설정

inherited Create(AOwner); 
width:=40; 
height:=20; 

을하지만 컨트롤이 폼에 배치 될 때이 TCustomEdit의 기본 폭과 높이로 그려집니다 :

그래서에서 내가 가진 만듭니다. 필자는 테스트 케이스를 위의 생성자 만 가진 단순한 구성 요소로 축소했습니다. 나는 또한 생성자에서 autosize:=false을 설정하려고했지만 기쁨은 없다.

나는 주위를 검색하는 것으로부터 올바른 일을하고 있다고 생각하지만 분명히 작동하지 않는다고 생각합니다. 내가 따라야 할 행동을 얻는 방법?

+4

생성자가 호출 되었습니까? 그것을 '오버라이드'로 표시 했습니까? – jpfollenius

+0

항상 모든 컴파일러 힌트, 경고 및 오류를 해결하십시오. – NGLN

답변

4

저에게 잘 맞습니다 (XE2). 그것이 사실이라고 있도록 생성자 override 표시되어 있는지 확인합니다 : TComponent 가상 생성자를 가지고 있기 때문에

constructor Create(AOwner : TComponent); override; 

이 필요합니다.

+0

D' oh 그리고 고마워요! :) – RobS

+0

또한 게시 된 속성의 기본값을 같은 값으로 설정하는 것을 잊지 마십시오. 속성 너비 기본값 40; 이것은 양식 스트리머를 돕고 나중에 기본값을 변경하려는 경우 도움이됩니다. –

+1

@Lars, 나는 그렇게 생각하지 않는다. 'default'는 속성 값을 설정하지 않습니다; 이것은 생성자에서 수행됩니다. 미래에 가치를 바꿀 수 있도록 돕는 것; 왜냐하면'Object Inspector'는'default'와는 다른 값을 굵은 글씨로 강조 표시하고 입력 된 값이'default' 값과 같을 때 디자이너의 관점에서 보면 괜찮습니다. 컴포넌트 개발자의 관점에서 생성자의 'default'와 실제 기본 속성 값을 변경하는 것을 쉽게 잊을 수 있습니다. – TLama

관련 문제