showMessage centralizado na tela
30/05/2017
0
estou com um problema que é o seguinte....
Tenho uma aplicação onde todas as telas não são expandidas e com isso não ocupam toda a área de trabalho do usuário.
Com isso, o usuário pode arrastar a tela na sua área de trabalho. Até ae tudo beim.
O problema é que qdo preciso mostrar alguma mensagem de alerta com o 'showMessage', este não aparece dentro da
tela da minha aplicação. Ou seja, o usuário arrastou a minha tela para o canto superior esquerdo de forma que ficasse visível
para trabalhar, num dado momento quando é mostrado um 'showMessage' este aparece no centro da área de trabalho,
fazendo com que o usuário não preste atenção na mensagem uma vez que o foco da sua atenção esta na tela que se encontra
no canto superior esquerdo.
Já pesquisei na net e não achei solução.
Alguém conhece uma forma no qual eu consigo fazer com que o 'showMessage' aparece no centro da tela da minha
aplicação onde quer que ela esteja?
Desde já agradeço a atenção.
Obg.
Marco Antônio
Post mais votado
30/05/2017
Segue uma alternativa funcional e simples.
function MessageDlg(const AOwner: TForm; const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Integer = 0): Integer; begin with CreateMessageDialog(Msg, DlgType, Buttons) do try Left := AOwner.Left + (AOwner.Width - Width) div 2; Top := AOwner.Top + (AOwner.Height - Height) div 2; Result := ShowModal; finally Free; end end;
Você chama assim:
MessageDlg(Self, 'Teste de mensagem centralizado no owner :D', mtInformation, [mbOK]);
Espero ter ajudado :D
Mateus Ribeiro
Mais Posts
30/05/2017
Daniel Araújo
O ShowMessage utiliza a api do Windows, por isso eu acredito que não temos tanto controle sobre o comportamento da janela. Sugiro que você crie um form personalizado para exibir mensagens. Ai você coloca o position como "poOwnerFormCenter" para que ele seja centralizado sobre o Form que fez a chamada, ou "poMainFormCenter" para que seja centralizado sobre o Form principal da aplicação.
Se a resposta foi útil não esqueça de dar um like.
30/05/2017
Marco Antônio
Depois de pesquisar na Unit ''Dialogs'', eu havia encontrado o ''ShowMessagePos'' e passei a utilizá-lo, mas devido a questões estéticas
passei a adotar a sua solução que é mto mais bunita de se programar.
Vlw pela ajuda.
Grd abc.
Opa, vlw tb Daniel, pois, devido a sua dica comecei a pesquisar melhor na Unit ''Dialogs''.
Grd abc.
Clique aqui para fazer login e interagir na Comunidade :)