폼 소스 부분은 생략하고 처리부분만 기술한다.

  • Form Style : fsStayOnTop
  • 해당 폼을 TObject 형태로 구현 함수로 넘긴다
    (경우에 따라서 TForm으로 넘기던지 상속클래스 만들어서 넘기던지...그건 알아서...단, 구현부분 파라메터 타입과 구현부분도 거기에 맞추어서 ^^)

 

 

 구현 부분

  1. procedure ShowSaveDialogBox(Sender : TObject = nil)
  2. var
  3. saveDlg : TSaveDialog;
  4. SenderFormStyle : TFormStyle;
  5. isSenderFormStyleChange : Boolean;
  6. begin
  7. isSenderFormStyleChange := False;

    if (Sender <> nil) and Assigned(Sender) and (Sender is TForm) then

    saveDlg := TSaveDialog.Create(TForm(Sender))

    else

    saveDlg := TSaveDialog.Create(nil);

  8. saveDlg.Title := '파일 저장';
  9. saveDlg.Filter := 'TEXT 파일|*.txt';
  10. saveDlg.DefaultExt := 'txt';
  11. saveDlg.Options := saveDlg.Options + [ofOverwritePrompt];
  12. saveDlg.FileName := 'ExportText' + '.xls';
  13. if (Sender <> nil) and Assigned(Sender) and (Sender is TForm) and (TForm(Sender).FormStyle = fsStayOnTop) then
  14. begin
  15. //BEGIN 1안. 폼을 아래로 위치 시킨다(사라지는 효과 나타남)
  16. TForm(Sender).SendToBack;
  17. isSenderFormStyleChange = True;
  18. //END 1안.
  19. //BEGIN 2안. 폼을 일반 폼으로 변경함(화면이 심하게 깜빡거리는 단점)
    SenderFormStyle := TForm(Sender).FormStyle;
  20. isSenderFormStyleChange := True;
  21. TForm(Sender).FormStyle := fsNormal;
  22. Application.ProcessMessages; //(생략가능 혹시나 해서.....^^;;)
  23. //END 2안.
  24.  end;
  25. if saveDlg.Execute then
  26. begin
  27.  {처리 코드}
  28. end;
  29. if isSenderFormStyleChange = True then

    begin

  30. //1안.
  31. TForm(Sender).BringToFront;
  32. //2안.
  33. TForm(Sender).FormStyle := SenderFormStyle;
  34. Application.ProcessMessages; //(생략가능 혹시나 해서.....^^;;)
  35. end;
  36. end;

 

출처 : 자작(userpark)

이 글은 스프링노트에서 작성되었습니다.

+ Recent posts