MDIChild 폼을 Modal폼으로 생성하기, 사용자정의 생성자(constructor)
MdiChild폼으로 이미 만들어져서 사용중인 모듈을 실행 중에 모달 폼으로 호출할 필요가 있을 때가 있다.
코드 재활용과 관리 측면에서 매우 편리한다.
방법은 사용자 정의 생성자 constructor 를 만들면 된다.
...
public
{ Public declarations }
constructor CreateModal(AOwner: TComponent; aName, aStdno, aGrade: String); // 사용자정의 생성자 선언
end;
var
frmHw008_220_POS: TfrmHw008_220_POS;
implementation
uses Dm;
{$R *.DFM}
constructor TfrmHw008_220_POS.CreateModal(AOwner: TComponent; aName, aStdno, aGrade: String); // 사용자정의 생성자
begin
inherited Create(AOwner);
FormStyle := fsNormal;
BorderIcons := [biSystemMenu];
BorderStyle := bsDialog;
WindowState := wsNormal;
Position := poMainFormCenter
edName.Text := aName;
edStdno.Text := aStdno;
edStdno.Hint := aGrade;
end;
호출하는 곳에서는 다음 처럼 버튼 클릭시 사용자정의 생성자를 호출하면 된다.
procedure TfrmHw100.btHw220_CreClick(Sender: TObject);
begin
with TfrmHw008_220_POS.CreateModal(Application, '홍길동', '123456', '1학년') do
begin
try
Self.WindowState := wsMaximized; // 이상하게 원래 최대인 기존 폼이 줄어 들어서 다시 최대화 해야한다.
Visible := False; // ShowModal 하기전에 Visible False해야함, 생성자에 넣으면 작동안한다.
ShowModal;
finally
Free;
end;
end;
end;