초보짱입니다.
모달폼을 동적으로 생성하고 삭제하는 코드입니다.
이상하게 처음 한번은 실행되는데 두번쩨 실행하면
바이올레이션 에러가 나고 있읍니다.
조언 부탁드립니다.
// main.pas 의 모달폼 생성 및 show코드
procedure TfMain.mnuClientClick(Sender: TObject);
begin
if fClient = nil then begin
fclient := TfClient.Create(self);
fclient.ShowModal;
end
else
fclient.ShowModal;
end;
// Clinet.pas의 close이벤트코드
procedure TfClient.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action := cafree;
end;
if fClient = nil then <= 이 부분에서 nil 체크가 안될겁니다
1번만 생성하고 그 뒤부터는 생성을 하지 않으려면...
caFree부분을 제거 하고
mnuClientClick부분은 그대로...
그리고 TfMain폼이 죽을때
if fClient <> nil then
begin
fClient.Free;
end;
이렇게 하시면 될것 같네요..
아니면...
매번 생성 하는것도 한 방법이죠
var
frm : TFClient;
begin
frm := TFClient.Create(self);
try
frm.ShowModal;
finally
frm.Free;
end;
end;
이렇게요...