Delphi - Como impedir Forms / MsgBoxes para mover sob forma anterior?
Muitas vezes após a era do Windows 98, percebemos que algumas caixas de diálogo perdem a ordem Z e voltam para a forma anterior.
Por exemplo:
Dialog1.ShowModal;
Dialog1.OnClickButton() : ShowMessage('anything');
Quando o MessageBox aparece, às vezes ele não tem foco e é movido em Dialog1. Os usuários estão confusos sobre isso, eles dizem: Meu aplicativo congelou !!! Mas se eles usarem Alt + Tab para mover para outro aplicativo e voltar, o foco retornará para o MessageBox e será a janela do primeiro plano.
Experimentamos isso com ShowMessage, MessageBox, formulários normais e também com formulários QuickReport.
Alguém sabe sobre isso? É um bug do Windows? Como você pode evitá-lo? Como pegar isso?
Obrigado pela sua ajuda: dd
Eu realmente disse que APÓS o Win98, então todos os sistemas operacionais (Win7 também) são afetados por esse problema. Nós usamos o Delphi 6 Prof, portanto as propriedades não estão funcionando com os formulários Padrão.
Alguém disse que os diálogos de mensagens são controláveis com MessageBox + MB_APPLMODAL. Esta é uma boa notícia, mas temos muitos formulários e componentes antigos, ferramentas de terceiros.
Portanto, é um trabalho difícil fazer um aplicativo completamente novo com a substituição dos formulários.
Mas vamos tentar fazer isso.
Penso que a resposta é este é um problema de meia aplicação e metade de um problema no Windows. Se o Windows às vezes lida com isso, e às vezes não - isso parece ser um bug do Windows. Mas se podemos forçar uma boa janela modal, é um erro de programação.
Alguém pode me explicar qual é o significado do sinalizador WS_POPUP? Isso tem algum efeito colateral ou não?
Obrigado: dd