Ir para conteúdo
Fórum Script Brasil
  • 0

Manter caixa de mensagem em cima do form


Gabriel Cabral

Pergunta

Bom dia...

estou com um problema na visualização dos forms quando surge uma caixa de mensagem...

assim, para eu minimizar um form e ele ficar na barra de tarefas do windows, fiz da seguinte maneira

protected
  procedure CreateParams (var Params: TCreateParams); override;
procedure TfrmCadForn.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  with Params do
  begin
    ExStyle := ExStyle OR WS_EX_APPWINDOW;
    WndParent := GetDesktopwindow;
  end;

end;

Mas se utilizo isso, quando no form, clico num botão de exclusão, por exemplo, e surge a caixa de mensagem perguntando se deseja excluir, o form some e só reaparece quando algum botão da caixa de mensagem é clicado e ela some.

Existe alguma forma de a caixa de mensagem aparecer em cima do form, sem que o form desapareça???

Obrigado

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Eu te mostrei a lista de parametros que voce pode usar no seu código

exempo:

WS_EX_APPWINDOW

Forces a top-level window onto the taskbar when the window is visible.

Força uma janela no topo sobre a barra de tarefa quando a janela é visível.

outro exemplo:

WS_EX_TOPMOST

Specifies that a window created with this style should be placed above all non topmost windows and should stay above them, even when the window is deactivated. To add or remove this style, use the SetWindowPos function.

Especifica que uma janela criada com este estilo deveria ser colocada acima de todas as outras janelas e deveria ficar sobre elas, até mesmo quando a janela é desativada. Para adicionar ou remover este estilo, use a função de SetWindowPos.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

procedure TfrmCadForn.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  with Params do
  begin
    ExStyle := ExStyle OR WS_EX_TOPMOST;
    WndParent := GetDesktopwindow;
  end;

end;

Amigo ...procure ler mais sobre o delphi

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Bem....já vi o que aconteceu aqui....

assim....quando abro o projeto, o form principal abre, maximizado.....ele não possui nada além de um menu para chamar os outros forms....

aí eu vou no menu e abro o form de cadastro de fornecedores......esse form, que não abre maximizado, fica em cima do form principal....

quando clico em excluir, o form de cadastro de fornecedores minimiza e a caixa de mensagem abre em cima do form principal...

depois de clicar em alguma opção da caixa de mensagem, ela fecha e o form de cadastro de fornecedores restaura em cima do form principal....e fica do mesmo jeito de quando ele foi aberto

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

mas resolvi abrir o projeto diretamente no form de cadastro de fornecedores....

cliquei em excluir e a caixa de mensagem abriu em cima do form....o form não minimizou....

alguém sabe me explicar porque acontece isso????

por que, ao abrir a caixa de mensagem, o form minimiza quando o principal está aberto???

Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

Ninguém conseguiria me ajudar mesmo???

Por que isso acontece???

Ninguém passou por isso alguma vez???

Se eu não utilizar os comandos para um form abrir na barra de tarefas, a caixa de mensagem aparece normalmente em cima dele...

Mas eu preciso deixar esses forms abertos na barra de tarefas!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Gabriel Cabral, o "problema" está sendo gerado pela alteração do estilo do form que você está fazendo.

Na verdade, quando a mensagem aparece, o form não está sendo minimizado, ele simplesmente perde o foco e o form principal da aplicação torna-se ativo.

Voce tem duas opções: criar o form principal alterando seu estilo e parent (assim, os outros forms também assumirão este estilo) ou usar MessageBox para mostrar as mensagens e passa o handle da janela atual como parâmetro.

ex.:MessageBox(Handle, 'Teste', 'Informação', MB_ICONINFORMATION or MB_OK);

ShowMessage e MessageDlg, ambos fazem uso do mesmo código base, logo vão fazer a janela perder o foco.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Certo, Micheus.....entendi....muito obrigado

Ficou dessa forma

procedure TfrmCadForn.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  with Params do
  begin
    ExStyle := ExStyle OR WS_EX_APPWINDOW;
    WndParent := Application.Handle;
  end;

end;

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...