02-06 08:48
Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Archives
관리 메뉴

기록을 합시다.

[Delphi] 모달창/모드리스 창 본문

공부/etc

[Delphi] 모달창/모드리스 창

울집고양이세마리 2023. 8. 10. 02:44

모달

  • 모달은 다른 윈도우를 사용할 수 없도록 화면 맨 위에 활성화 되는 폼

모드리스

  • 모드리스 폼은 폼이 생성되어 나타나도 여전히 다른 폼 사용 가능한 폼
  • 참고로 옵션 창이나 패스워드 체크화면은 모달 창이어야 함

모달창 띄우기 예제

  • 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 : 폼을 최소화
Comments