모달 다이얼로그에서 어떤 값을 입력하면 그 값이 텍스트로 저장됩니다.
그러면 부모 폼에서는 그 텍스트의 내용을 읽어 값을 읽어와 세팅을 하는데여.
모달 다이얼로그의 확인버튼을 바로 클릭시 내용의 적용을 보고 싶은데
바로바로 적용이 되어 지질 않는데여......
어떻게 하면 이것을 해결할 수 있을까여.........
내용이 부족하면 더 자세히 설명드리겠습니다. 감사합니다..
==================================================================
procedure ButtonOK(Sender: TObject);
begin
......
FileOpen..
FileWrite..
FileClose..
ModalResult := mrOK;
{여기서부터 코딩을 잡아주려 합니다}
frmNewPerf.MyStringGrid.Invalidate;
// 이렇게 Invalidate를 쓰면 반영이 되는 건가여......
end;
예를 들어, 확인 버튼에는 mrOK, 취소 버튼에는 mrCancel을 설정하셨죠?
먼저, 부모 폼에서 모달 대화상자를 띄울 때 ShowModal 메소드로 호출을 합니다.
다음과 같이 한번 적용해 보세요.
modalForm:=TModalDialog.Create(Self);
try
if modalForm.ShowModal=mrOK then
begin
// modalForm에서 값을 읽어서 이용하는 코드
end;
finally
modalForm.Free;
end;
이렇게 하면, 확인 버튼이 눌렸을 경우에만 적용하게 되겠죠.
버튼이 한개면, 무조건 이용하도록 하시면 될거구요 ^^;
참, 여기서 중요한 것은 모달 폼의 OnClose 이벤트에서
Action을 caFree로 설정하시 마세요. 그럼, 값을 설정하기 전에
대화상자가 메모리에서 해제되는 상황이 발생할 수도 있습니다.
그럼, 오류가 발생하겠죠. ^^
통상 모달 대화상자를 작성할 때는 OnClose 이벤트를 작성하실 필요가 없습니다.
위 코드에서 보시는 것과 같이 다 사용하신 후에, Free 해주거든요.
그럼, 즐코~~~