2011-03-24 7 views
0

Delphi에서 다른 모든 윈도우 위에 윈도우를 유지할 수 있습니까? 예를 들어 애플리케이션에 오류 메시지가있는 경우 창을 맨 위에두고 다른 작업을 수행하기 전에 사용자가 무언가를 클릭해야하는지 확인하려고한다고 가정 해 봅시다. 백그라운드에서 다른 프로그램을 클릭하는 것과 같은 의미입니다. 그리고 Java는 어떻습니까?Delphi 또는 Java에서 윈도우를 계속 유지하십시오.

+5

[아니요, ** 할 수 없습니다 **] (http://blogs.msdn.com/b/oldnewthing/archive/2011/03/10/10138969.aspx) –

+3

, 당신의 사용자는 당신을 죽일 것이다. –

+0

@GameCat - Ken에게 내 답을보십시오. – RBA

답변

5

번호 Microsoft의 Raymond Chen은 왜 here에 대한 훌륭한 기사가 있습니다.

+1

훌륭한 답변이지만 때로는 고객이 훌륭한 아이디어를 가지고 있으며 만족해야합니다 ... 심지어 잘못되었습니다! – RBA

+1

@Radu Barbu : Windows에서 허용하지 않으면 고객이 원하든 원하지 않든 할 수 없습니다. –

0

옛날에 이렇게 할 수있었습니다. 시스템 모달 대화 상자라고하며 이제는 쓸모없는 SetSysModalWindow() 함수를 사용했습니다.

그들은 Windows NT 기반 버전의 Windows가 사용되면서 완전히 혐오스러워서 의식과 복원이 복원되었습니다.

0

델파이에서는 FormStyle:=fsStayOnTop;을 사용할 수 있습니다. 그러면 모든 일반 창 앞에 나타납니다.

하지만 스타일 모음이 설정된 다른 창 (예 : 작업 표시 줄)이 사용자의 앞에있을 수도 있습니다. 특히 그 창들 가운데 초점이있는 것이 가장 중요합니다.

창에 항상 포커스가 있는지 확인할 수는 있지만 거의 좋은 아이디어는 아닙니다. 그리고 당신은 레이몬드의 비난을받을 것입니다.

계층 창을 사용할 수도 있습니다. 나는 그것들이 정상적인 항상 맨 위에있는 창 앞에 있다고 생각한다. 그러나 이것은 심각한 부작용을 가지며 가장 올바른 선택이 될 수 없습니다.

+1

OP는 "백그라운드에서 다른 프로그램을 클릭하는 것과 비슷합니다"라고 말하면 fsStayOnTop은 완료되지 않습니다. 어쨌든 대화 상자가 모달 (예 : 앱 - 모달) 일 수 있으므로 어쨌든 그 앱 창의 맨 위에 있기 때문에 실제로는 아무런 의미가 없습니다. –

+0

다른 프로그램이 AlwaysOnTop을 설정하지 않은 경우 OP 프로그램을 다른 프로그램 앞에 유지합니다. – CodesInChaos

+0

@CodeInChaos, true이지만 다른 창에서 여전히 포커스를받을 수 있습니다. 마우스를 잡아 냄으로써 더러운 트릭을 할 수 있지만 횃불과 갈퀴를 준비하십시오. –

관련 문제