기록을 합시다.
[Delphi] 모달창/모드리스 창 본문
모달
- 모달은 다른 윈도우를 사용할 수 없도록 화면 맨 위에 활성화 되는 폼
모드리스
- 모드리스 폼은 폼이 생성되어 나타나도 여전히 다른 폼 사용 가능한 폼
- 참고로 옵션 창이나 패스워드 체크화면은 모달 창이어야 함
모달창 띄우기 예제
- Project Option에서 모달창을 available로 이동
- 버튼을 누르면 모달창이 뜨도록 이벤트에 onClick 이벤트 등록
- Form2.ShowModal을 통해 모달창 띄우기, 모달창 내부의 버튼을 Properties.ModalResult.mrOk로 설정하여 버튼을 누르면 if문 내부의 것들 실행되고 모달 꺼짐
- 모달창 내부 버튼 Properties.ModalResult.mrCancel로 설정한 버튼을 누르면 모달 꺼짐
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2 := TForm2.Create(Application);
if Form2.ShowModal = mrOk then
Caption :=
FormatDatetime('yyyy-mm-dd hh:nn:ss', Form2.DateTimePicker1.Date);
Form2.Free;
end;
모드리스 창 띄우기
- 버튼에 onClick 이벤트 등록
- Show로 모드리스 화면 띄우기 가능
procedure TForm1.Button2Click(Sender: TObject);
begin
Form3 := TForm3.Create(Application);
Caption := IntToStr(Application.ComponentCount);
Form3.Show;
end;
위 코드 수정하여 모드리스 폼 하나만 띄우게 하기
procedure TForm1.Button2Click(Sender: TObject);
var
I : Word;
begin
for I := 0 to Application.ComponentCount -1 do
if Application.Components[I] is TForm3 then
begin
(Application.Components[I] as TForm).Show;
Exit;
end;
end;
모드리스 창 없애기
- 해당 모드리스 폼에 대해서 OnClose 이벤트 설정
- Action := caFree로 폼 닫아주기
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
- caNone : 폼을 클로즈하지 않고, 아무런 변화 X
- caHide : 폼을 닫지 않고 숨김
- caFree : 폼이 닫히고 폼을 메모리에서 해제
- caMinimize : 폼을 최소화
'공부 > etc' 카테고리의 다른 글
[Numble] 넘블 회고록 -내가 만드는 MBTI 성격 유형 테스트- (0) | 2023.07.26 |
---|---|
[Ubuntu] 사용자 관련 명령어 (0) | 2023.07.21 |
[GO] Go 시작하기 (0) | 2023.07.02 |
[NCP] Naver Cloud에서 갑자기 SSH 접속 안 되는 현상 (0) | 2023.07.02 |
[Github Action] ./gradlew: Permission denied 에러 해결 (0) | 2023.06.25 |
Comments