사용자 지정 생성자가있는 BaseForm에서 파생 된 MainForm을 갖고 싶습니다. 이것은 Mainform이기 때문에 Application.CreateForm (TMyMainForm, MyMainForm)을 * .dpr 파일로 호출하여 만들어집니다. 그러나 양식을 만드는 동안 내 사용자 지정 생성자가 호출되지 않습니다.사용자 정의 생성자가 mainform 인 Delphi Form?
MyMainForm : = TMyMainForm.Create (AOwner)을 호출하면 분명히 작동합니다. 사용자 정의 생성자가있는 양식을 기본 양식으로 사용할 수 있습니까?
TBaseForm = class(TForm)
constructor Create(AOwner:TComponent; AName:string);reintroduce;
end;
TMyMainForm = class(TBaseForm)
constructor Create(AOwner:TComponent);reintroduce;
end;
constructor TBaseForm.Create(AOwner:TComponent);
begin;
inherited Create(AOwner);
end;
constructor TMyMainForm.Create(AOwner:TComponent);
begin;
inherited Create(AOwner, 'Custom Constructor Parameter');
end;
대부분의 경우 모든 사람들은 생성자를 통해 파생 클래스의 멤버를 초기화하는 방식으로이 방법을 시도합니다. 나는 이것을 추천하지 않는다. 대신 공개 속성을 정의하고 파생 된 양식을 만든 후에 초기화 할 수 있습니다. 그것은 여분의 라인 또는 두 개의 코드지만, 그래서 뭐야? –
매개 변수가있는 생성자의 장점은 ** 필수 항목을 전달해야한다는 것입니다. 따라서 필수 설정을 전달하는 것을 잊지 못할 수 있습니다. 속성 설정은 잊어 버릴 수 있습니다. 이것은 사람들이 몇 줄의 타이핑을 저장하기를 원하지 않기 때문에가 아니라 단순히 더 나은 전략 인 IMO이기 때문입니다. –
이 계획의 이유는 정확히 Rudy가 지적한 것입니다. @RudyVelthuis 여기에는 배경이 있고 NCHitTest를 처리하고 마지막 위치, 크기 등 (레지스트리에서 쓰기/읽기)을 기억하고 모든 향후 프로젝트를 파생시키는 공통의 기본 폼을 작성합니다. 그것을 통해서. 위의 전략보다 더 좋은 방법이 있습니까? – ss2006