문제

나는 문서에 대해 두 가지 보기(예:WYSIWYG HTML 편집에는 실제 애플리케이션이 아닌 WYSIWYG 보기와 소스 보기가 있을 수 있습니다.별도의 창에서 열거나 기본 창의 탭에 도킹할 수 있습니다.

별도의 양식 중 하나에서 모달 대화 상자를 열면 기본 양식이 맨 앞으로 가져오고 Windows 작업 표시줄에 선택된 창으로 표시됩니다.기본 양식이 WYSIWYG 보기이고 소스 보기가 팝업되어 있다고 가정해 보겠습니다.소스 보기의 특정 지점으로 이동하여 이미지 태그를 삽입합니다.이미지에 대해 원하는 속성을 선택하고 입력할 수 있는 대화 상자가 나타납니다.WYSIWYG 보기와 소스 보기가 겹치는 경우 WYSIWYG 보기가 맨 앞으로 가져오고 소스 보기는 숨겨집니다.대화 상자가 닫히면 소스 보기가 다시 표시됩니다.

소유자 및 ParentWindow 속성을 관련된 양식으로 설정해 보았습니다.

dialog := TDialogForm.Create( parentForm );
dialog.ParentWindow := parentForm.Handle;

이 문제를 어떻게 해결할 수 있나요?또 무엇을 시도해야 합니까?

사람들이 내 예를 보고 걸림돌이 되는 것 같다면 아마도 더 나은 예를 들어 볼 수 있을 것입니다.동시에 두 개 이상의 파일을 열 수 있는 텍스트 편집기입니다.열려 있는 파일은 탭(예: Delphi IDE)이나 자체 창에 있습니다.사용자가 맞춤법 검사 대화 상자나 찾기 대화 상자를 불러온다고 가정해 보세요.파일이 자체 창에서 편집 중인 경우 모달 대화 상자가 표시될 때 해당 창은 z 순서로 기본 양식 아래로 전송됩니다.대화 상자가 닫히면 원래의 z 순서로 돌아갑니다.

메모:Delphi 7을 사용 중이고 이 문제에 대한 해결책을 찾고 있다면 페이지 하단에 있는 내 대답을 참조하여 내가 무엇을 했는지 확인하세요.

도움이 되었습니까?

해결책

이 코드를 사용하겠습니다 ...(기본적으로 Lars가 말한 내용)

dialog := TDialogForm.Create( parentForm );
dialog.PopupParent := parentForm;
dialog.PopupMode   := pmExplicit; 
dialog.ShowModal();

다른 팁

결국 결국 찾았어요 답변 Google 그룹스를 사용합니다.간단히 말해서 모든 모달 대화 상자에는 다음이 추가되어야 합니다.


procedure TDialogForm.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.Style := Params.Style or WS_POPUP;
  Params.WndParent := (Owner as TWinControl).Handle;
end;

나는 이것이 Delphi 7의 Lars와 Marius의 답변과 동일하다고 생각합니다.

ShowModal을 사용하여 대화 상자를 표시합니까, 아니면 그냥 표시합니까?아마도 대화 상자에 맞게 PopupMode 속성을 설정해야 할 것입니다.pmAuto가 아마도 최선의 선택일 것입니다.PopupParent 속성을 설정해야 하는지도 확인하세요.

우선, 제가 따르고 있는 것이 확실하지 않습니다. 현재 상황과 문제가 무엇인지 이해하는 데 도움이 되는 몇 가지 추가 세부정보를 제공해야 할 수도 있습니다.나는 당신이 달성하려는 목표와 문제가 무엇인지 정확히 이해하지 못하는 것 같습니다.

둘째, 대화 상자의 부모를 설정할 필요가 없습니다. 이는 기본적으로 Create 호출(부모 전달)에서 발생하는 일이기 때문입니다.당신이 설명하는 대화는 솔직하게 말하면 약간 "다시 생각"할 수 있는 것처럼 들립니다.이 대화 상자는 소스 창의 하위 이미지 속성을 입력하는 창입니까, 아니면 WYSIWYG 창입니까?

귀하가 무엇을 얻고 있는지 잘 이해하지 못하지만 시도해 볼 수 있는 몇 가지 제안은 다음과 같습니다.

  1. 이 동작은 Delphi 버전에 따라 달라집니다.저는 이것이 Delphi 2007에서 Windows Vista를 지원하기 위해 뛰어넘은 노력 때문이라고 생각합니다.
  2. Delphi 2007을 사용하는 경우 프로젝트 소스 파일에서 Application.MainFormOnTaskBar 부울 변수를 설정하는 줄을 제거해 보십시오.
  3. 이를 제거하면 다양한 Form의 BringToFront / SendToBack 메서드를 사용하여 원하는 Z 순서를 달성할 수 있습니다.

당신이 발견한 내용이 에서 논의된 것 같습니다. 이 링크물론 제가 귀하의 요점을 완전히 놓쳤을 수도 있으므로 미리 사과드립니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top