폼 소스 부분은 생략하고 처리부분만 기술한다.
- Form Style : fsStayOnTop
- 해당 폼을 TObject 형태로 구현 함수로 넘긴다
(경우에 따라서 TForm으로 넘기던지 상속클래스 만들어서 넘기던지...그건 알아서...단, 구현부분 파라메터 타입과 구현부분도 거기에 맞추어서 ^^)
구현 부분
- procedure ShowSaveDialogBox(Sender : TObject = nil)
- var
- saveDlg : TSaveDialog;
- SenderFormStyle : TFormStyle;
- isSenderFormStyleChange : Boolean;
- begin
-
isSenderFormStyleChange := False;
if (Sender <> nil) and Assigned(Sender) and (Sender is TForm) then
saveDlg := TSaveDialog.Create(TForm(Sender))
else
saveDlg := TSaveDialog.Create(nil);
- saveDlg.Title := '파일 저장';
- saveDlg.Filter := 'TEXT 파일|*.txt';
- saveDlg.DefaultExt := 'txt';
- saveDlg.Options := saveDlg.Options + [ofOverwritePrompt];
- saveDlg.FileName := 'ExportText' + '.xls';
- if (Sender <> nil) and Assigned(Sender) and (Sender is TForm) and (TForm(Sender).FormStyle = fsStayOnTop) then
- begin
- //BEGIN 1안. 폼을 아래로 위치 시킨다(사라지는 효과 나타남)
- TForm(Sender).SendToBack;
- isSenderFormStyleChange = True;
- //END 1안.
- //BEGIN 2안. 폼을 일반 폼으로 변경함(화면이 심하게 깜빡거리는 단점)
SenderFormStyle := TForm(Sender).FormStyle; - isSenderFormStyleChange := True;
- TForm(Sender).FormStyle := fsNormal;
- Application.ProcessMessages; //(생략가능 혹시나 해서.....^^;;)
- //END 2안.
- end;
- if saveDlg.Execute then
- begin
- {처리 코드}
- end;
-
if isSenderFormStyleChange = True then
begin
- //1안.
- TForm(Sender).BringToFront;
- //2안.
- TForm(Sender).FormStyle := SenderFormStyle;
- Application.ProcessMessages; //(생략가능 혹시나 해서.....^^;;)
- end;
- end;
출처 : 자작(userpark)
이 글은 스프링노트에서 작성되었습니다.
'Language > Delphi(VCL,Pascal)' 카테고리의 다른 글
[Delphi] Form Style - fsStayOnTop 대체 방법 (0) | 2011.07.27 |
---|---|
[Delphi] Form Style이 fsStayOnTop일 경우 메세지 박스가 뒤로 숨는 문제 (0) | 2011.07.27 |
[Delphi] Form Style이 fsStayOnTop일 경우 메세지 박스가 뒤로 숨는 문제 (0) | 2011.07.27 |
[Delphi] 동적 DLL 호출 방법 (0) | 2010.04.28 |
[Delphi] DLL 호출 규칙(Calling Convention) 테스트용 DLL 및 Source (0) | 2010.04.27 |