Showmessage 박스 Owner가 Application으로 되어져 있는 현상 때문에 Form이 StayOnTop일 경우 아래에 숨어버리는 현상 발생

해결 방법은 아래 소스.... Screen.ActiveForm을 이용한 방법

 

  1. TForm1 = class(TForm)
  2. {...생략...}
  3. procedure OnScreenActiveFormChange(Sender: TObject);
  4. private
  5. {...생략...}
  6. protected
  7. {...생략...}
  8. public
  9. {...생략...}
  10. end;
  11. procedure TForm1.FormCreate(Sender: TObject);
    begin
  12. Screen.OnActiveControlChange := OnScreenActiveFormChange;
  13. end;
  14. procedure TfrmUbBase_S.OnScreenActiveFormChange(Sender: TObject);
  15. begin
  16. if Assigned(Screen.ActiveForm) and ( (UpperCase(Screen.ActiveForm.ClassName) = UpperCase('TMessageForm')) ) then
  17. begin
  18. SetWindowPos(Screen.ActiveForm.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);
  19. end;
  20. end;

 

출처 : 델마당 for Modify By Userpark

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

 Showmessage 박스 Owner가 Application으로 되어져 있는 현상 때문에 Form이 StayOnTop일 경우 아래에 숨어버리는 현상 발생

해결 방법은 아래 소스.... Screen.ActiveForm을 이용한 방법

 

  1. TForm1 = class(TForm)
  2. {...생략...}
  3. procedure OnScreenActiveFormChange(Sender: TObject);
  4. private
  5. {...생략...}
  6. protected
  7. {...생략...}
  8. public
  9. {...생략...}
  10. end;
  11. procedure TForm1.FormCreate(Sender: TObject);
    begin
  12. Screen.OnActiveControlChange := OnScreenActiveFormChange;
  13. end;
  14. procedure TfrmUbBase_S.OnScreenActiveFormChange(Sender: TObject);
  15. begin
  16. if Assigned(Screen.ActiveForm) and ( (UpperCase(Screen.ActiveForm.ClassName) = UpperCase('TMessageForm')) ) then
  17. begin
  18. SetWindowPos(Screen.ActiveForm.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);
  19. end;
  20. end;

 

출처 : 델마당 for Modify By Userpark

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

+ Recent posts