Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr
  • 0

Delphi Dialogs 사용시 프로그램 마우스 및 키보드 이벤트 안됨


Miniuser

질문

안녕하세요.

델파이로 개발도중 특이한 이슈가 있어, 문의드립니다.

메인폼(Main Form)에서는 몇번이나 Dialog를 호출해도 문제가 없으나,

다른 모달 폼에서 Dialog 호출후 창이 닫히면, 해당 프로그램에 마우스, 키보드가 포커스 되지 않습니다

Timer로 반복 실행시 정상 작동되나, 동일하게 마우스, 키보드 사용자 포커스는 처리되지 않습니다.

새 프로젝트로 실행시에는 별다른 이슈가 없습니다.

혹시 관련 증상 겪어보신분 있을실까요??

 

 

=============================

procedure Button1Click(Sender : TObject);
begin 
  if ColorDialog1.Execute() then
  begin
    Edit1.SetFocus; // 처리안됨 기타 마우스, 키보드 관련 이벤트도 동일 (※응답없음 상태 아님)
  end
  else
  begin
  end;  
end;

 

//위 이벤트 처리후 Alt+F4 등 관련 단축키도 작동되지 않아, 작업 관리자에서 직접 종료해야하는 상태입니다..

==============================

사용환경  : Delphi 10.2, Window 10

 

Edited by Miniuser
이 댓글 링크
다른 사이트에 공유하기

4 answers to this question

Recommended Posts

  • 0

원인 확인 완료했습니다..

원인은 모달 폼에서 Dialog 호출 후 Main 폼에 onDeactivate가 실행되어 

해당 이벤트에 있는 "BringWindowToTop(Self.Handle);"가 처리되어 발생한 것이었네요;;

 

우선 왜 모달 폼에서 메인폼에 onDeactivate가 실행되는지 확인해보겠습니다,

현재 해당 부분 주석처리후 정상처리됩니다.

 

도움을 주신 분들꼐 모두 감사드리며,

좋은 하루 보내시길 바랍니다~!

Edited by Miniuser
이 댓글 링크
다른 사이트에 공유하기

  • 0

- "새 프로젝트로 실행시에 별다른 이슈가 없다는것은 어떤 의미인지요?"

새 프로젝트를 생성하여, 테스트시에는 Dialog를 호출후 창을 닫아도 정상적으로 

마우스나 키보드 포커스 처리가 정상 작동됩니다.

 

현재 작업중인 프로젝트에서만 해당 이슈가 발생하고 있습니다..

 

(추가) 해당 프로젝트에서 새 VCL 폼을 추가하여, 

기타 폼을 Uses 하지 않은 상태에서 , 

ShowModal로 호출후 Dialog를 호출해도 동일하게 포커스 처리가 되지 않습니다..

 

 

(추가2) 해당 프로젝트에서 Dialog 호출 후 창을 닫으면, 

TForm-onDeactivate 이벤트가 발생하면서, Screen.ActiveForm = nil 처리됩니다.

좀 더 확인해보겠습니다.

Edited by Miniuser
이 댓글 링크
다른 사이트에 공유하기

  • 0

우선 Dialog를 호출한 폼을 닫으면, 다시 정상적으로 작동되는 것을 확인하여,

다음과 같은 편법으로 우선 처리하기로 하였습니다.

 

새 TForm을 생성후, Dialog를 올린후,

Dialog가 실행되면, 해당 폼에 Dialog값을 넣은 후,

ModalResult를 처리하여,

 

부모 폼에서 폼에 Dialog 값을 가진후,

Dialog 폼을 종료하는 방식으로 처리하였습니다.

우선 근본적인 원인 해결을 찾으면 다시 안내드리겠으며,

 

해당 이슈가 잘 이해되지 않으시는 분들도 있을것 같아,

영상 첨부합니다..

관련 증상이나 이슈 겪어보신 분 계시면, 해결방법이나 조치 방법 공유해주시면 감사하겠습니다..

 

 

Edited by Miniuser
이 댓글 링크
다른 사이트에 공유하기

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 질문에 답변하기...

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.